-
Notifications
You must be signed in to change notification settings - Fork 18
/
GroupsRouteADM.scala
48 lines (40 loc) · 1.59 KB
/
GroupsRouteADM.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
* Copyright © 2021 - 2024 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors.
* SPDX-License-Identifier: Apache-2.0
*/
package org.knora.webapi.routing.admin
import org.apache.pekko.http.scaladsl.server.Directives.*
import org.apache.pekko.http.scaladsl.server.PathMatcher
import org.apache.pekko.http.scaladsl.server.Route
import zio.*
import org.knora.webapi.core.MessageRelay
import org.knora.webapi.messages.StringFormatter
import org.knora.webapi.messages.admin.responder.groupsmessages.*
import org.knora.webapi.routing.Authenticator
import org.knora.webapi.routing.KnoraRoute
import org.knora.webapi.routing.KnoraRouteData
import org.knora.webapi.routing.RouteUtilADM.*
/**
* Provides a routing function for API routes that deal with groups.
*/
final case class GroupsRouteADM(
private val routeData: KnoraRouteData,
override protected implicit val runtime: Runtime[Authenticator & StringFormatter & MessageRelay]
) extends KnoraRoute(routeData, runtime)
with GroupsADMJsonProtocol {
private val groupsBasePath: PathMatcher[Unit] = PathMatcher("admin" / "groups")
override def makeRoute: Route =
deleteGroup()
/**
* Deletes a group (sets status to false).
*/
private def deleteGroup(): Route = path(groupsBasePath / Segment) { groupIri =>
delete { ctx =>
val task = for {
r <- getIriUserUuid(groupIri, ctx)
changeStatus = ChangeGroupApiRequestADM(status = Some(false))
} yield GroupChangeStatusRequestADM(r.iri, changeStatus, r.user, r.uuid)
runJsonRouteZ(task, ctx)
}
}
}