Remove converter for OpinionChoice
This commit is contained in:
@@ -2,14 +2,16 @@ package fr.dcproject.component.opinion
|
||||
|
||||
import fr.dcproject.component.citizen.CitizenI
|
||||
import fr.dcproject.component.opinion.entity.OpinionChoice
|
||||
import fr.dcproject.component.opinion.entity.OpinionChoiceI
|
||||
import fr.dcproject.component.opinion.entity.OpinionChoiceRef
|
||||
import fr.dcproject.security.AccessControl
|
||||
import fr.dcproject.security.AccessResponse
|
||||
|
||||
class OpinionChoiceAccessControl : AccessControl() {
|
||||
fun canView(subjects: List<OpinionChoice>, citizen: CitizenI?): AccessResponse =
|
||||
fun canView(subjects: List<OpinionChoiceI>, citizen: CitizenI?): AccessResponse =
|
||||
canAll(subjects) { canView(it, citizen) }
|
||||
|
||||
fun canView(subject: OpinionChoice, citizen: CitizenI?): AccessResponse {
|
||||
fun canView(subject: OpinionChoiceI, citizen: CitizenI?): AccessResponse {
|
||||
return granted()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import fr.postgresjson.entity.EntityCreatedAtImp
|
||||
import fr.postgresjson.entity.EntityDeletedAt
|
||||
import fr.postgresjson.entity.EntityDeletedAtImp
|
||||
import fr.postgresjson.entity.UuidEntity
|
||||
import fr.postgresjson.entity.UuidEntityI
|
||||
import java.util.UUID
|
||||
|
||||
class OpinionChoice(
|
||||
@@ -17,4 +18,7 @@ class OpinionChoice(
|
||||
|
||||
open class OpinionChoiceRef(
|
||||
id: UUID?
|
||||
) : UuidEntity(id ?: UUID.randomUUID())
|
||||
) : OpinionChoiceI,
|
||||
UuidEntity(id ?: UUID.randomUUID())
|
||||
|
||||
interface OpinionChoiceI : UuidEntityI
|
||||
|
||||
@@ -2,25 +2,31 @@ package fr.dcproject.component.opinion.routes
|
||||
|
||||
import fr.dcproject.component.auth.citizenOrNull
|
||||
import fr.dcproject.component.opinion.OpinionChoiceAccessControl
|
||||
import fr.dcproject.component.opinion.entity.OpinionChoice
|
||||
import fr.dcproject.component.opinion.OpinionChoiceRepository
|
||||
import fr.dcproject.component.opinion.entity.OpinionChoiceRef
|
||||
import fr.dcproject.security.assert
|
||||
import io.ktor.application.call
|
||||
import io.ktor.features.NotFoundException
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.locations.Location
|
||||
import io.ktor.locations.get
|
||||
import io.ktor.response.respond
|
||||
import io.ktor.routing.Route
|
||||
import java.util.UUID
|
||||
|
||||
@KtorExperimentalLocationsAPI
|
||||
object GetOpinionChoice {
|
||||
@Location("/opinions/{opinionChoice}")
|
||||
class OpinionChoiceRequest(val opinionChoice: OpinionChoice)
|
||||
class OpinionChoiceRequest(opinionChoice: UUID) {
|
||||
val opinionChoice = OpinionChoiceRef(opinionChoice)
|
||||
}
|
||||
|
||||
fun Route.getOpinionChoice(ac: OpinionChoiceAccessControl) {
|
||||
fun Route.getOpinionChoice(ac: OpinionChoiceAccessControl, opinionChoiceRepository: OpinionChoiceRepository) {
|
||||
get<OpinionChoiceRequest> {
|
||||
val opinionChoice = opinionChoiceRepository.findOpinionChoiceById(it.opinionChoice.id) ?: throw NotFoundException("OpinionChoice ${it.opinionChoice.id} not found")
|
||||
ac.assert { canView(it.opinionChoice, citizenOrNull) }
|
||||
|
||||
call.respond(it.opinionChoice)
|
||||
call.respond(opinionChoice)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import fr.dcproject.component.opinion.routes.OpinionArticle.setOpinionOnArticle
|
||||
import io.ktor.auth.authenticate
|
||||
import io.ktor.locations.KtorExperimentalLocationsAPI
|
||||
import io.ktor.routing.Routing
|
||||
import io.ktor.routing.get
|
||||
import org.koin.ktor.ext.get
|
||||
|
||||
@KtorExperimentalLocationsAPI
|
||||
@@ -16,7 +17,7 @@ fun Routing.installOpinionRoutes() {
|
||||
getCitizenOpinions(get(), get())
|
||||
getMyOpinionsArticle(get(), get())
|
||||
setOpinionOnArticle(get(), get())
|
||||
getOpinionChoice(get())
|
||||
getOpinionChoice(get(), get())
|
||||
getOpinionChoices(get(), get())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user