From 6696aba4817861e00b0d754d90ebc8b502c9cca2 Mon Sep 17 00:00:00 2001 From: eikek Date: Sat, 23 Oct 2021 23:42:02 +0200 Subject: [PATCH] Show user shares when asking to delete user --- .../restapi/src/main/resources/docspell-openapi.yml | 4 ++++ .../docspell/restserver/routes/UserRoutes.scala | 4 +++- .../main/scala/docspell/store/queries/QUser.scala | 12 ++++++++++-- modules/webapp/src/main/elm/Comp/UserManage.elm | 12 ++++++++---- .../webapp/src/main/elm/Messages/Comp/UserManage.elm | 12 ++++++++++++ 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/modules/restapi/src/main/resources/docspell-openapi.yml b/modules/restapi/src/main/resources/docspell-openapi.yml index f7e250fa..f6714ac4 100644 --- a/modules/restapi/src/main/resources/docspell-openapi.yml +++ b/modules/restapi/src/main/resources/docspell-openapi.yml @@ -4554,6 +4554,7 @@ components: required: - folders - sentMails + - shares properties: folders: type: array @@ -4563,6 +4564,9 @@ components: sentMails: type: integer format: int32 + shares: + type: integer + format: int32 SecondFactor: description: | 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 35944fca..ef4d75d8 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/routes/UserRoutes.scala @@ -72,7 +72,9 @@ object UserRoutes { data <- backend.collective.getDeleteUserData( AccountId(user.account.collective, username) ) - resp <- Ok(DeleteUserData(data.ownedFolders.map(_.id), data.sentMails)) + resp <- Ok( + DeleteUserData(data.ownedFolders.map(_.id), data.sentMails, data.shares) + ) } yield resp } } diff --git a/modules/store/src/main/scala/docspell/store/queries/QUser.scala b/modules/store/src/main/scala/docspell/store/queries/QUser.scala index c261b670..6000016a 100644 --- a/modules/store/src/main/scala/docspell/store/queries/QUser.scala +++ b/modules/store/src/main/scala/docspell/store/queries/QUser.scala @@ -20,7 +20,8 @@ object QUser { final case class UserData( ownedFolders: List[Ident], - sentMails: Int + sentMails: Int, + shares: Int ) def getUserData(accountId: AccountId): ConnectionIO[UserData] = { @@ -28,6 +29,7 @@ object QUser { val mail = RSentMail.as("m") val mitem = RSentMailItem.as("mi") val user = RUser.as("u") + val share = RShare.as("s") for { uid <- loadUserId(accountId).map(_.getOrElse(Ident.unsafe(""))) @@ -43,7 +45,13 @@ object QUser { .innerJoin(user, user.uid === mail.uid), user.login === accountId.user && user.cid === accountId.collective ).query[Int].unique - } yield UserData(folders, mails) + shares <- run( + select(count(share.id)), + from(share) + .innerJoin(user, user.uid === share.userId), + user.login === accountId.user && user.cid === accountId.collective + ).query[Int].unique + } yield UserData(folders, mails, shares) } def deleteUserAndData(accountId: AccountId): ConnectionIO[Int] = diff --git a/modules/webapp/src/main/elm/Comp/UserManage.elm b/modules/webapp/src/main/elm/Comp/UserManage.elm index 15efbaf8..47a6d0a6 100644 --- a/modules/webapp/src/main/elm/Comp/UserManage.elm +++ b/modules/webapp/src/main/elm/Comp/UserManage.elm @@ -295,7 +295,7 @@ renderDeleteConfirm texts settings model = DimmerUserData data -> let empty = - List.isEmpty data.folders && data.sentMails == 0 + List.isEmpty data.folders && data.sentMails == 0 && data.shares == 0 folderNames = String.join ", " data.folders @@ -312,16 +312,20 @@ renderDeleteConfirm texts settings model = [ div [] [ text texts.reallyDeleteUser , text " " - , text "The following data will be deleted:" + , text (texts.deleteFollowingData ++ ":") ] , ul [ class "list-inside list-disc" ] [ li [ classList [ ( "hidden", List.isEmpty data.folders ) ] ] - [ text "Folders: " + [ text (texts.folders ++ ": ") , text folderNames ] , li [ classList [ ( "hidden", data.sentMails == 0 ) ] ] [ text (String.fromInt data.sentMails) - , text " sent mails" + , text (" " ++ texts.sentMails) + ] + , li [ classList [ ( "hidden", data.shares == 0 ) ] ] + [ text (String.fromInt data.shares) + , text (" " ++ texts.shares) ] ] ] diff --git a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm index 2c59fd72..5f1fd5f2 100644 --- a/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm +++ b/modules/webapp/src/main/elm/Messages/Comp/UserManage.elm @@ -31,6 +31,10 @@ type alias Texts = , deleteThisUser : String , pleaseCorrectErrors : String , notDeleteCurrentUser : String + , folders : String + , sentMails : String + , shares : String + , deleteFollowingData : String } @@ -48,6 +52,10 @@ gb = , deleteThisUser = "Delete this user" , pleaseCorrectErrors = "Please correct the errors in the form." , notDeleteCurrentUser = "You can't delete the user you are currently logged in with." + , folders = "Folders" + , sentMails = "sent mails" + , shares = "shares" + , deleteFollowingData = "The following data will be deleted" } @@ -65,4 +73,8 @@ de = , deleteThisUser = "Benutzer löschen" , pleaseCorrectErrors = "Bitte korrigiere die Fehler im Formular." , notDeleteCurrentUser = "Der aktuelle Benutzer kann nicht gelöscht werden." + , folders = "Ordner" + , sentMails = "gesendete E-Mails" + , shares = "Freigaben" + , deleteFollowingData = "Die folgenden Daten werden auch gelöscht" }