From df1526e6288d3b06dee96ab05e9fa4236c698741 Mon Sep 17 00:00:00 2001 From: eikek Date: Wed, 1 Feb 2023 23:40:29 +0100 Subject: [PATCH] Fix deleting users Can now be deleted by id or login. It was wrongly documented. --- .../restapi/src/main/resources/docspell-openapi.yml | 4 ++-- .../scala/docspell/restserver/routes/UserRoutes.scala | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/restapi/src/main/resources/docspell-openapi.yml b/modules/restapi/src/main/resources/docspell-openapi.yml index 394aa91d..f5da45e6 100644 --- a/modules/restapi/src/main/resources/docspell-openapi.yml +++ b/modules/restapi/src/main/resources/docspell-openapi.yml @@ -1584,9 +1584,9 @@ paths: $ref: "#/components/schemas/BasicResult" /sec/user/{username}: delete: - operationId: "sec-user-delete-by-username" + operationId: "sec-user-delete-by-userid-or-login" tags: [ Collective ] - summary: Delete a user. + summary: Delete a user by its id or login name. description: | Deletes a user. security: diff --git a/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala b/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala index 243e26b9..a3f84aff 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala @@ -6,6 +6,7 @@ package docspell.restserver.routes +import cats.data.OptionT import cats.effect._ import cats.implicits._ @@ -73,8 +74,13 @@ object UserRoutes { for { users <- backend.collective.listUser(user.account.collectiveId) ar <- - if (users.exists(_.uid == id)) backend.collective.deleteUser(id) - else UpdateResult.notFound.pure[F] + OptionT + .fromOption[F]( + users + .find(u => u.uid == id || u.login == id) + ) + .semiflatMap(u => backend.collective.deleteUser(u.uid)) + .getOrElse(UpdateResult.notFound) resp <- Ok(basicResult(ar, "User deleted.")) } yield resp