mirror of https://github.com/usbharu/Hideout.git
feat: 投稿できるように
This commit is contained in:
parent
539a9cf41f
commit
58f8005ce4
|
@ -49,19 +49,19 @@ val Application.property: Application.(propertyName: String) -> String
|
||||||
@Suppress("unused", "LongMethod")
|
@Suppress("unused", "LongMethod")
|
||||||
fun Application.parent() {
|
fun Application.parent() {
|
||||||
Config.configData = ConfigData(
|
Config.configData = ConfigData(
|
||||||
url = property("hideout.url"),
|
url = property("hideout.url"),
|
||||||
objectMapper = jacksonObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
|
objectMapper = jacksonObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
|
||||||
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
|
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)
|
||||||
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
|
||||||
)
|
)
|
||||||
|
|
||||||
val module = org.koin.dsl.module {
|
val module = org.koin.dsl.module {
|
||||||
single<Database> {
|
single<Database> {
|
||||||
Database.connect(
|
Database.connect(
|
||||||
url = property("hideout.database.url"),
|
url = property("hideout.database.url"),
|
||||||
driver = property("hideout.database.driver"),
|
driver = property("hideout.database.driver"),
|
||||||
user = property("hideout.database.username"),
|
user = property("hideout.database.username"),
|
||||||
password = property("hideout.database.password")
|
password = property("hideout.database.password")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
single<JobQueueParentService> {
|
single<JobQueueParentService> {
|
||||||
|
@ -84,11 +84,11 @@ fun Application.parent() {
|
||||||
single<IdGenerateService> { TwitterSnowflakeIdGenerateService }
|
single<IdGenerateService> { TwitterSnowflakeIdGenerateService }
|
||||||
single<JwkProvider> {
|
single<JwkProvider> {
|
||||||
JwkProviderBuilder(Config.configData.url).cached(
|
JwkProviderBuilder(Config.configData.url).cached(
|
||||||
10,
|
10,
|
||||||
24,
|
24,
|
||||||
TimeUnit.HOURS
|
TimeUnit.HOURS
|
||||||
)
|
)
|
||||||
.rateLimited(10, 1, TimeUnit.MINUTES).build()
|
.rateLimited(10, 1, TimeUnit.MINUTES).build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
configureKoin(module, HideoutModule().module)
|
configureKoin(module, HideoutModule().module)
|
||||||
|
@ -102,19 +102,20 @@ fun Application.parent() {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
register(inject<IUserService>().value)
|
register(inject<IUserService>().value)
|
||||||
configureSecurity(
|
configureSecurity(
|
||||||
inject<IUserAuthService>().value,
|
inject<JwkProvider>().value,
|
||||||
inject<IMetaService>().value,
|
inject<IMetaService>().value
|
||||||
inject<IUserRepository>().value,
|
|
||||||
inject<IJwtService>().value,
|
|
||||||
inject<JwkProvider>().value,
|
|
||||||
)
|
)
|
||||||
configureRouting(
|
configureRouting(
|
||||||
httpSignatureVerifyService = inject<HttpSignatureVerifyService>().value,
|
httpSignatureVerifyService = inject<HttpSignatureVerifyService>().value,
|
||||||
activityPubService = inject<ActivityPubService>().value,
|
activityPubService = inject<ActivityPubService>().value,
|
||||||
userService = inject<IUserService>().value,
|
userService = inject<IUserService>().value,
|
||||||
activityPubUserService = inject<ActivityPubUserService>().value,
|
activityPubUserService = inject<ActivityPubUserService>().value,
|
||||||
postService = inject<IPostApiService>().value,
|
postService = inject<IPostApiService>().value,
|
||||||
userApiService = inject<IUserApiService>().value,
|
userApiService = inject<IUserApiService>().value,
|
||||||
|
userAuthService = inject<IUserAuthService>().value,
|
||||||
|
userRepository = inject<IUserRepository>().value,
|
||||||
|
jwtService = inject<IJwtService>().value,
|
||||||
|
metaService = inject<IMetaService>().value
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package dev.usbharu.hideout.plugins
|
package dev.usbharu.hideout.plugins
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.repository.IUserRepository
|
||||||
import dev.usbharu.hideout.routing.activitypub.inbox
|
import dev.usbharu.hideout.routing.activitypub.inbox
|
||||||
import dev.usbharu.hideout.routing.activitypub.outbox
|
import dev.usbharu.hideout.routing.activitypub.outbox
|
||||||
import dev.usbharu.hideout.routing.activitypub.usersAP
|
import dev.usbharu.hideout.routing.activitypub.usersAP
|
||||||
|
import dev.usbharu.hideout.routing.api.internal.v1.auth
|
||||||
import dev.usbharu.hideout.routing.api.internal.v1.posts
|
import dev.usbharu.hideout.routing.api.internal.v1.posts
|
||||||
import dev.usbharu.hideout.routing.api.internal.v1.users
|
import dev.usbharu.hideout.routing.api.internal.v1.users
|
||||||
import dev.usbharu.hideout.routing.wellknown.webfinger
|
import dev.usbharu.hideout.routing.wellknown.webfinger
|
||||||
|
@ -11,6 +13,9 @@ import dev.usbharu.hideout.service.activitypub.ActivityPubUserService
|
||||||
import dev.usbharu.hideout.service.api.IPostApiService
|
import dev.usbharu.hideout.service.api.IPostApiService
|
||||||
import dev.usbharu.hideout.service.api.IUserApiService
|
import dev.usbharu.hideout.service.api.IUserApiService
|
||||||
import dev.usbharu.hideout.service.auth.HttpSignatureVerifyService
|
import dev.usbharu.hideout.service.auth.HttpSignatureVerifyService
|
||||||
|
import dev.usbharu.hideout.service.auth.IJwtService
|
||||||
|
import dev.usbharu.hideout.service.core.IMetaService
|
||||||
|
import dev.usbharu.hideout.service.user.IUserAuthService
|
||||||
import dev.usbharu.hideout.service.user.IUserService
|
import dev.usbharu.hideout.service.user.IUserService
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.plugins.autohead.*
|
import io.ktor.server.plugins.autohead.*
|
||||||
|
@ -18,12 +23,16 @@ import io.ktor.server.routing.*
|
||||||
|
|
||||||
@Suppress("LongParameterList")
|
@Suppress("LongParameterList")
|
||||||
fun Application.configureRouting(
|
fun Application.configureRouting(
|
||||||
httpSignatureVerifyService: HttpSignatureVerifyService,
|
httpSignatureVerifyService: HttpSignatureVerifyService,
|
||||||
activityPubService: ActivityPubService,
|
activityPubService: ActivityPubService,
|
||||||
userService: IUserService,
|
userService: IUserService,
|
||||||
activityPubUserService: ActivityPubUserService,
|
activityPubUserService: ActivityPubUserService,
|
||||||
postService: IPostApiService,
|
postService: IPostApiService,
|
||||||
userApiService: IUserApiService
|
userApiService: IUserApiService,
|
||||||
|
userAuthService: IUserAuthService,
|
||||||
|
userRepository: IUserRepository,
|
||||||
|
jwtService: IJwtService,
|
||||||
|
metaService: IMetaService
|
||||||
) {
|
) {
|
||||||
install(AutoHeadResponse)
|
install(AutoHeadResponse)
|
||||||
routing {
|
routing {
|
||||||
|
@ -34,6 +43,7 @@ fun Application.configureRouting(
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
users(userService, userApiService)
|
users(userService, userApiService)
|
||||||
|
auth(userAuthService, userRepository, jwtService, metaService)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,12 @@ package dev.usbharu.hideout.plugins
|
||||||
|
|
||||||
import com.auth0.jwk.JwkProvider
|
import com.auth0.jwk.JwkProvider
|
||||||
import dev.usbharu.hideout.config.Config
|
import dev.usbharu.hideout.config.Config
|
||||||
import dev.usbharu.hideout.domain.model.hideout.form.RefreshToken
|
|
||||||
import dev.usbharu.hideout.domain.model.hideout.form.UserLogin
|
|
||||||
import dev.usbharu.hideout.exception.UserNotFoundException
|
|
||||||
import dev.usbharu.hideout.repository.IUserRepository
|
|
||||||
import dev.usbharu.hideout.service.auth.IJwtService
|
|
||||||
import dev.usbharu.hideout.service.core.IMetaService
|
import dev.usbharu.hideout.service.core.IMetaService
|
||||||
import dev.usbharu.hideout.service.user.IUserAuthService
|
|
||||||
import dev.usbharu.hideout.util.JsonWebKeyUtil
|
import dev.usbharu.hideout.util.JsonWebKeyUtil
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.server.application.*
|
import io.ktor.server.application.*
|
||||||
import io.ktor.server.auth.*
|
import io.ktor.server.auth.*
|
||||||
import io.ktor.server.auth.jwt.*
|
import io.ktor.server.auth.jwt.*
|
||||||
import io.ktor.server.request.*
|
|
||||||
import io.ktor.server.response.*
|
import io.ktor.server.response.*
|
||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
|
|
||||||
|
@ -22,11 +15,8 @@ const val TOKEN_AUTH = "jwt-auth"
|
||||||
|
|
||||||
@Suppress("MagicNumber")
|
@Suppress("MagicNumber")
|
||||||
fun Application.configureSecurity(
|
fun Application.configureSecurity(
|
||||||
userAuthService: IUserAuthService,
|
jwkProvider: JwkProvider,
|
||||||
metaService: IMetaService,
|
metaService: IMetaService
|
||||||
userRepository: IUserRepository,
|
|
||||||
jwtService: IJwtService,
|
|
||||||
jwkProvider: JwkProvider
|
|
||||||
) {
|
) {
|
||||||
val issuer = Config.configData.url
|
val issuer = Config.configData.url
|
||||||
install(Authentication) {
|
install(Authentication) {
|
||||||
|
@ -48,38 +38,13 @@ fun Application.configureSecurity(
|
||||||
}
|
}
|
||||||
|
|
||||||
routing {
|
routing {
|
||||||
post("/login") {
|
|
||||||
val loginUser = call.receive<UserLogin>()
|
|
||||||
val check = userAuthService.verifyAccount(loginUser.username, loginUser.password)
|
|
||||||
if (check.not()) {
|
|
||||||
return@post call.respond(HttpStatusCode.Unauthorized)
|
|
||||||
}
|
|
||||||
|
|
||||||
val user = userRepository.findByNameAndDomain(loginUser.username, Config.configData.domain)
|
|
||||||
?: throw UserNotFoundException("${loginUser.username} was not found.")
|
|
||||||
|
|
||||||
return@post call.respond(jwtService.createToken(user))
|
|
||||||
}
|
|
||||||
|
|
||||||
post("/refresh-token") {
|
|
||||||
val refreshToken = call.receive<RefreshToken>()
|
|
||||||
return@post call.respond(jwtService.refreshToken(refreshToken))
|
|
||||||
}
|
|
||||||
|
|
||||||
get("/.well-known/jwks.json") {
|
get("/.well-known/jwks.json") {
|
||||||
//language=JSON
|
//language=JSON
|
||||||
val jwt = metaService.getJwtMeta()
|
val jwt = metaService.getJwtMeta()
|
||||||
call.respondText(
|
call.respondText(
|
||||||
contentType = ContentType.Application.Json,
|
contentType = ContentType.Application.Json,
|
||||||
text = JsonWebKeyUtil.publicKeyToJwk(jwt.publicKey, jwt.kid.toString())
|
text = JsonWebKeyUtil.publicKeyToJwk(jwt.publicKey, jwt.kid.toString())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
authenticate(TOKEN_AUTH) {
|
|
||||||
get("/auth-check") {
|
|
||||||
val principal = call.principal<JWTPrincipal>() ?: throw IllegalStateException("no principal")
|
|
||||||
val username = principal.payload.getClaim("uid")
|
|
||||||
call.respondText("Hello $username")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
package dev.usbharu.hideout.routing.api.internal.v1
|
||||||
|
|
||||||
|
import dev.usbharu.hideout.config.Config
|
||||||
|
import dev.usbharu.hideout.domain.model.hideout.form.RefreshToken
|
||||||
|
import dev.usbharu.hideout.domain.model.hideout.form.UserLogin
|
||||||
|
import dev.usbharu.hideout.exception.UserNotFoundException
|
||||||
|
import dev.usbharu.hideout.plugins.TOKEN_AUTH
|
||||||
|
import dev.usbharu.hideout.repository.IUserRepository
|
||||||
|
import dev.usbharu.hideout.service.auth.IJwtService
|
||||||
|
import dev.usbharu.hideout.service.core.IMetaService
|
||||||
|
import dev.usbharu.hideout.service.user.IUserAuthService
|
||||||
|
import dev.usbharu.hideout.util.JsonWebKeyUtil
|
||||||
|
import io.ktor.http.*
|
||||||
|
import io.ktor.server.application.*
|
||||||
|
import io.ktor.server.auth.*
|
||||||
|
import io.ktor.server.auth.jwt.*
|
||||||
|
import io.ktor.server.request.*
|
||||||
|
import io.ktor.server.response.*
|
||||||
|
import io.ktor.server.routing.*
|
||||||
|
|
||||||
|
fun Route.auth(userAuthService: IUserAuthService,
|
||||||
|
userRepository: IUserRepository,
|
||||||
|
jwtService: IJwtService,
|
||||||
|
metaService: IMetaService) {
|
||||||
|
post("/login") {
|
||||||
|
val loginUser = call.receive<UserLogin>()
|
||||||
|
val check = userAuthService.verifyAccount(loginUser.username, loginUser.password)
|
||||||
|
if (check.not()) {
|
||||||
|
return@post call.respond(HttpStatusCode.Unauthorized)
|
||||||
|
}
|
||||||
|
|
||||||
|
val user = userRepository.findByNameAndDomain(loginUser.username, Config.configData.domain)
|
||||||
|
?: throw UserNotFoundException("${loginUser.username} was not found.")
|
||||||
|
|
||||||
|
return@post call.respond(jwtService.createToken(user))
|
||||||
|
}
|
||||||
|
|
||||||
|
post("/refresh-token") {
|
||||||
|
val refreshToken = call.receive<RefreshToken>()
|
||||||
|
return@post call.respond(jwtService.refreshToken(refreshToken))
|
||||||
|
}
|
||||||
|
authenticate(TOKEN_AUTH) {
|
||||||
|
get("/auth-check") {
|
||||||
|
val principal = call.principal<JWTPrincipal>() ?: throw IllegalStateException("no principal")
|
||||||
|
val username = principal.payload.getClaim("uid")
|
||||||
|
call.respondText("Hello $username")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -425,3 +425,4 @@ components:
|
||||||
BearerAuth:
|
BearerAuth:
|
||||||
type: http
|
type: http
|
||||||
scheme: bearer
|
scheme: bearer
|
||||||
|
bearerFormat: JWT
|
||||||
|
|
|
@ -1,16 +1,28 @@
|
||||||
import {Component, createSignal, lazy} from "solid-js";
|
import {Component, createEffect, createSignal} from "solid-js";
|
||||||
import {Route, Router, Routes} from "@solidjs/router";
|
import {Route, Router, Routes} from "@solidjs/router";
|
||||||
import {TopPage} from "./pages/TopPage";
|
import {TopPage} from "./pages/TopPage";
|
||||||
import {createTheme, CssBaseline, ThemeProvider, useMediaQuery} from "@suid/material";
|
import {createTheme, CssBaseline, ThemeProvider, useMediaQuery} from "@suid/material";
|
||||||
import {createCookieStorage} from "@solid-primitives/storage";
|
import {createCookieStorage} from "@solid-primitives/storage";
|
||||||
import {ApiProvider, useApi} from "./lib/ApiProvider";
|
import {ApiProvider} from "./lib/ApiProvider";
|
||||||
import {Configuration, DefaultApi} from "./generated";
|
import {Configuration, DefaultApi} from "./generated";
|
||||||
import {LoginPage} from "./pages/LoginPage";
|
import {LoginPage} from "./pages/LoginPage";
|
||||||
|
|
||||||
export const App: Component = () => {
|
export const App: Component = () => {
|
||||||
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
|
||||||
const [cookie,setCookie] = createCookieStorage()
|
const [cookie, setCookie] = createCookieStorage()
|
||||||
const [api,setApi] = createSignal(new DefaultApi(new Configuration({basePath:window.location.origin+"/api/internal/v1",apiKey:cookie.key as string})))
|
const [api, setApi] = createSignal(new DefaultApi(new Configuration({
|
||||||
|
basePath: window.location.origin + "/api/internal/v1",
|
||||||
|
accessToken: cookie.token as string
|
||||||
|
})))
|
||||||
|
|
||||||
|
createEffect(() => {
|
||||||
|
setApi(
|
||||||
|
new DefaultApi(new Configuration({
|
||||||
|
basePath: window.location.origin + "/api/internal/v1",
|
||||||
|
accessToken : cookie.token as string
|
||||||
|
})))
|
||||||
|
})
|
||||||
|
|
||||||
const theme = createTheme({
|
const theme = createTheme({
|
||||||
palette: {
|
palette: {
|
||||||
mode: prefersDarkMode() ? 'dark' : 'light',
|
mode: prefersDarkMode() ? 'dark' : 'light',
|
||||||
|
|
|
@ -2,6 +2,7 @@ import {Button, Card, CardContent, CardHeader, Modal, Stack, TextField} from "@s
|
||||||
import {Component, createSignal} from "solid-js";
|
import {Component, createSignal} from "solid-js";
|
||||||
import {createCookieStorage} from "@solid-primitives/storage";
|
import {createCookieStorage} from "@solid-primitives/storage";
|
||||||
import {useApi} from "../lib/ApiProvider";
|
import {useApi} from "../lib/ApiProvider";
|
||||||
|
import {useNavigate} from "@solidjs/router";
|
||||||
|
|
||||||
export const LoginPage: Component = () => {
|
export const LoginPage: Component = () => {
|
||||||
const [username, setUsername] = createSignal("")
|
const [username, setUsername] = createSignal("")
|
||||||
|
@ -9,12 +10,15 @@ export const LoginPage: Component = () => {
|
||||||
|
|
||||||
const [cookie, setCookie] = createCookieStorage();
|
const [cookie, setCookie] = createCookieStorage();
|
||||||
|
|
||||||
|
const navigator = useNavigate();
|
||||||
|
|
||||||
const api = useApi();
|
const api = useApi();
|
||||||
|
|
||||||
const onSubmit: () => void = () => {
|
const onSubmit: () => void = () => {
|
||||||
api().loginPost({password: password(), username: username()}).then(value => {
|
api().loginPost({password: password(), username: username()}).then(value => {
|
||||||
setCookie("token", value.token);
|
setCookie("token", value.token);
|
||||||
setCookie("refresh-token", value.refreshToken)
|
setCookie("refresh-token", value.refreshToken)
|
||||||
|
navigator("/")
|
||||||
}).catch(reason => {
|
}).catch(reason => {
|
||||||
console.log(reason);
|
console.log(reason);
|
||||||
setPassword("")
|
setPassword("")
|
||||||
|
|
|
@ -70,7 +70,7 @@ class SecurityKtTest {
|
||||||
val jwkProvider = mock<JwkProvider>()
|
val jwkProvider = mock<JwkProvider>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(userAuthService, metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
client.post("/login") {
|
client.post("/login") {
|
||||||
|
@ -97,7 +97,7 @@ class SecurityKtTest {
|
||||||
val jwkProvider = mock<JwkProvider>()
|
val jwkProvider = mock<JwkProvider>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(userAuthService, metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.post("/login") {
|
client.post("/login") {
|
||||||
contentType(ContentType.Application.Json)
|
contentType(ContentType.Application.Json)
|
||||||
|
@ -122,7 +122,7 @@ class SecurityKtTest {
|
||||||
val jwkProvider = mock<JwkProvider>()
|
val jwkProvider = mock<JwkProvider>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(userAuthService, metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.post("/login") {
|
client.post("/login") {
|
||||||
contentType(ContentType.Application.Json)
|
contentType(ContentType.Application.Json)
|
||||||
|
@ -140,7 +140,7 @@ class SecurityKtTest {
|
||||||
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.get("/auth-check").apply {
|
client.get("/auth-check").apply {
|
||||||
assertEquals(HttpStatusCode.Unauthorized, call.response.status)
|
assertEquals(HttpStatusCode.Unauthorized, call.response.status)
|
||||||
|
@ -155,7 +155,7 @@ class SecurityKtTest {
|
||||||
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Digest dsfjjhogalkjdfmlhaog")
|
header("Authorization", "Digest dsfjjhogalkjdfmlhaog")
|
||||||
|
@ -172,7 +172,7 @@ class SecurityKtTest {
|
||||||
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
Config.configData = ConfigData(url = "http://example.com", objectMapper = jacksonObjectMapper())
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "")
|
header("Authorization", "")
|
||||||
|
@ -190,7 +190,7 @@ class SecurityKtTest {
|
||||||
|
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Bearer ")
|
header("Authorization", "Bearer ")
|
||||||
|
@ -248,7 +248,7 @@ class SecurityKtTest {
|
||||||
val jwtService = mock<IJwtService>()
|
val jwtService = mock<IJwtService>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
|
@ -308,7 +308,7 @@ class SecurityKtTest {
|
||||||
val jwtService = mock<IJwtService>()
|
val jwtService = mock<IJwtService>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Bearer $token")
|
header("Authorization", "Bearer $token")
|
||||||
|
@ -366,7 +366,7 @@ class SecurityKtTest {
|
||||||
val jwtService = mock<IJwtService>()
|
val jwtService = mock<IJwtService>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Bearer $token")
|
header("Authorization", "Bearer $token")
|
||||||
|
@ -424,7 +424,7 @@ class SecurityKtTest {
|
||||||
val jwtService = mock<IJwtService>()
|
val jwtService = mock<IJwtService>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Bearer $token")
|
header("Authorization", "Bearer $token")
|
||||||
|
@ -481,7 +481,7 @@ class SecurityKtTest {
|
||||||
val jwtService = mock<IJwtService>()
|
val jwtService = mock<IJwtService>()
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), metaService, userRepository, jwtService, jwkProvider)
|
configureSecurity(jwkProvider)
|
||||||
}
|
}
|
||||||
client.get("/auth-check") {
|
client.get("/auth-check") {
|
||||||
header("Authorization", "Bearer $token")
|
header("Authorization", "Bearer $token")
|
||||||
|
@ -501,7 +501,7 @@ class SecurityKtTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), jwtService, mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.post("/refresh-token") {
|
client.post("/refresh-token") {
|
||||||
header("Content-Type", "application/json")
|
header("Content-Type", "application/json")
|
||||||
|
@ -523,7 +523,7 @@ class SecurityKtTest {
|
||||||
application {
|
application {
|
||||||
configureStatusPages()
|
configureStatusPages()
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), jwtService, mock())
|
configureSecurity(mock())
|
||||||
}
|
}
|
||||||
client.post("/refresh-token") {
|
client.post("/refresh-token") {
|
||||||
header("Content-Type", "application/json")
|
header("Content-Type", "application/json")
|
||||||
|
|
|
@ -64,7 +64,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -169,7 +169,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -323,7 +323,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -375,7 +375,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -427,7 +427,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -479,7 +479,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -511,7 +511,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -543,7 +543,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -575,7 +575,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
@ -607,7 +607,7 @@ class PostsTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
posts(postService)
|
posts(postService)
|
||||||
|
|
|
@ -58,7 +58,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userService)
|
users(mock(), userService)
|
||||||
|
@ -96,7 +96,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(userService, mock())
|
users(userService, mock())
|
||||||
|
@ -127,7 +127,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(userService, mock())
|
users(userService, mock())
|
||||||
|
@ -162,7 +162,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -195,7 +195,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -228,7 +228,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -261,7 +261,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -306,7 +306,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -351,7 +351,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -396,7 +396,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -591,7 +591,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -636,7 +636,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
@ -681,7 +681,7 @@ class UsersTest {
|
||||||
}
|
}
|
||||||
application {
|
application {
|
||||||
configureSerialization()
|
configureSerialization()
|
||||||
configureSecurity(mock(), mock(), mock(), mock(), mock())
|
configureSecurity(mock())
|
||||||
routing {
|
routing {
|
||||||
route("/api/internal/v1") {
|
route("/api/internal/v1") {
|
||||||
users(mock(), userApiService)
|
users(mock(), userApiService)
|
||||||
|
|
Loading…
Reference in New Issue