1919
2020package org.eclipse.apoapsis.ortserver.core.api
2121
22- import io.github.smiley4.ktoropenapi.delete
2322import io.github.smiley4.ktoropenapi.get
24- import io.github.smiley4.ktoropenapi.patch
25- import io.github.smiley4.ktoropenapi.post
2623
2724import io.ktor.http.HttpStatusCode
2825import io.ktor.server.request.receive
2926import io.ktor.server.response.respond
3027import io.ktor.server.routing.Route
3128import io.ktor.server.routing.route
3229
33- import kotlinx.coroutines.Dispatchers
34- import kotlinx.coroutines.launch
35- import kotlinx.coroutines.withContext
36-
3730import org.eclipse.apoapsis.ortserver.api.v1.mapping.mapToApi
3831import org.eclipse.apoapsis.ortserver.api.v1.model.PatchSection
3932import org.eclipse.apoapsis.ortserver.api.v1.model.PostUser
40- import org.eclipse.apoapsis.ortserver.components.authorization.keycloak.requireAuthenticated
41- import org.eclipse.apoapsis.ortserver.components.authorization.keycloak.requireSuperuser
42- import org.eclipse.apoapsis.ortserver.components.authorization.keycloak.service.AuthorizationService
43- import org.eclipse.apoapsis.ortserver.components.authorization.keycloak.service.UserService
33+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.OrtServerPrincipal.Companion.requirePrincipal
34+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.delete
35+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.get
36+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.patch
37+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.post
38+ import org.eclipse.apoapsis.ortserver.components.authorization.routes.requireSuperuser
39+ import org.eclipse.apoapsis.ortserver.components.authorization.service.UserService
4440import org.eclipse.apoapsis.ortserver.core.apiDocs.deleteUser
4541import org.eclipse.apoapsis.ortserver.core.apiDocs.getSection
4642import org.eclipse.apoapsis.ortserver.core.apiDocs.getUsers
4743import org.eclipse.apoapsis.ortserver.core.apiDocs.patchSection
4844import org.eclipse.apoapsis.ortserver.core.apiDocs.postUser
49- import org.eclipse.apoapsis.ortserver.core.apiDocs.runPermissionsSync
5045import org.eclipse.apoapsis.ortserver.services.ContentManagementService
5146import org.eclipse.apoapsis.ortserver.shared.ktorutils.requireParameter
5247
5348import org.koin.ktor.ext.inject
5449
5550fun Route.admin () = route(" admin" ) {
56- route(" sync-roles" ) {
57- val authorizationService by inject<AuthorizationService >()
58-
59- get(runPermissionsSync) {
60- requireSuperuser()
61-
62- withContext(Dispatchers .IO ) {
63- launch {
64- authorizationService.ensureSuperuserAndSynchronizeRolesAndPermissions()
65- }
66-
67- call.respond(HttpStatusCode .Accepted )
68- }
69- }
70- }
7151 /* *
7252 * For CRUD operations for users.
7353 */
7454 route(" users" ) {
7555 val userService by inject<UserService >()
7656
77- get(getUsers) {
78- requireSuperuser()
79-
57+ get(getUsers, requireSuperuser()) {
8058 val users = userService.getUsers().map { user -> user.mapToApi() }
8159 call.respond(users)
8260 }
8361
84- post(postUser) {
85- requireSuperuser()
86-
62+ post(postUser, requireSuperuser()) {
8763 val createUser = call.receive<PostUser >()
8864 userService.createUser(
8965 username = createUser.username,
@@ -97,9 +73,7 @@ fun Route.admin() = route("admin") {
9773 call.respond(HttpStatusCode .Created )
9874 }
9975
100- delete(deleteUser) {
101- requireSuperuser()
102-
76+ delete(deleteUser, requireSuperuser()) {
10377 val username = call.requireParameter(" username" )
10478 userService.deleteUser(username)
10579
@@ -115,7 +89,7 @@ fun Route.admin() = route("admin") {
11589
11690 route(" sections/{sectionId}" ) {
11791 get(getSection) {
118- requireAuthenticated ()
92+ requirePrincipal ()
11993
12094 val id = call.requireParameter(" sectionId" )
12195
@@ -125,9 +99,7 @@ fun Route.admin() = route("admin") {
12599 call.respond(HttpStatusCode .OK , section.mapToApi())
126100 }
127101
128- patch(patchSection) {
129- requireSuperuser()
130-
102+ patch(patchSection, requireSuperuser()) {
131103 val id = call.requireParameter(" sectionId" )
132104 val updateSection = call.receive<PatchSection >()
133105
0 commit comments