Add Security to Citizen

This commit is contained in:
2019-08-23 16:45:33 +02:00
parent 9b6f3aab88
commit 4f5cd827c4
9 changed files with 81 additions and 9 deletions

View File

@@ -1,7 +1,8 @@
package fr.dcproject.routes
import Paths
import fr.dcproject.security.voter.ArticleVoter
import fr.dcproject.security.voter.ArticleVoter.Action.CREATE
import fr.dcproject.security.voter.ArticleVoter.Action.VIEW
import fr.dcproject.security.voter.assertCan
import io.ktor.application.call
import io.ktor.locations.KtorExperimentalLocationsAPI
@@ -16,16 +17,21 @@ import fr.dcproject.repository.Article as ArticleRepository
@KtorExperimentalLocationsAPI
fun Route.article(repo: ArticleRepository) {
get<Paths.ArticlesRequest> {
assertCan(VIEW)
val articles = repo.find(it.page, it.limit, it.sort, it.direction, it.search)
call.respond(articles)
}
get<Paths.ArticleRequest> {
assertCan(VIEW, it.article)
call.respond(it.article)
}
post<Paths.PostArticleRequest> {
call.assertCan(ArticleVoter.Action.CREATE)
assertCan(CREATE)
val article = call.receive<ArticleEntity>()
repo.upsert(article)
call.respond(article)

View File

@@ -1,6 +1,8 @@
package fr.dcproject.routes
import Paths
import fr.dcproject.security.voter.CitizenVoter.Action.VIEW
import fr.dcproject.security.voter.assertCan
import io.ktor.application.call
import io.ktor.locations.KtorExperimentalLocationsAPI
import io.ktor.locations.get
@@ -11,11 +13,15 @@ import fr.dcproject.repository.Citizen as CitizenRepository
@KtorExperimentalLocationsAPI
fun Route.citizen(repo: CitizenRepository) {
get<Paths.CitizensRequest> {
assertCan(VIEW)
val citizens = repo.find(it.page, it.limit, it.sort, it.direction, it.search)
call.respond(citizens)
}
get<Paths.CitizenRequest> {
assertCan(VIEW, it.citizen)
call.respond(it.citizen)
}
}