Add route put/delete

This commit is contained in:
2020-03-25 00:23:40 +01:00
parent 8c25f7633e
commit 07315a5624
7 changed files with 122 additions and 18 deletions

View File

@@ -1,8 +1,7 @@
package fr.dcproject.security.voter
import fr.dcproject.entity.UserI
import fr.dcproject.entity.WorkgroupI
import fr.dcproject.entity.WorkgroupWithAuthI
import fr.dcproject.citizenOrNull
import fr.dcproject.entity.*
import io.ktor.application.ApplicationCall
class WorkgroupVoter : Voter {
@@ -10,11 +9,18 @@ class WorkgroupVoter : Voter {
CREATE,
UPDATE,
VIEW,
DELETE
DELETE,
}
enum class ActionMembers : ActionI {
ADD,
UPDATE,
VIEW,
REMOVE,
}
override fun supports(action: ActionI, call: ApplicationCall, subject: Any?): Boolean {
return (action is Action)
return (action is Action || action is ActionMembers)
.and(subject is WorkgroupI?)
}
@@ -49,6 +55,36 @@ class WorkgroupVoter : Voter {
VoterException("Unable to define if your are granted, the subject must implement 'WorkgroupWithAuthI'") {}
}
if (action == ActionMembers.ADD) {
val citizen = call.citizenOrNull
// TODO create ROLES
return Vote.isGranted {
citizen != null &&
subject is WorkgroupWithMembersI<*> &&
subject.members.asCitizen(citizen)
}
}
if (action == ActionMembers.UPDATE) {
val citizen = call.citizenOrNull
// TODO create ROLES
return Vote.isGranted {
citizen != null &&
subject is WorkgroupWithMembersI<*> &&
subject.members.asCitizen(citizen)
}
}
if (action == ActionMembers.REMOVE) {
val citizen = call.citizenOrNull
// TODO create ROLES
return Vote.isGranted {
citizen != null &&
subject is WorkgroupWithMembersI<*> &&
subject.members.asCitizen(citizen)
}
}
return Vote.ABSTAIN
}
}