Show user shares when asking to delete user

This commit is contained in:
eikek 2021-10-23 23:42:02 +02:00
parent 2ac0b84e52
commit 6696aba481
5 changed files with 37 additions and 7 deletions
modules
restapi/src/main/resources
restserver/src/main/scala/docspell/restserver/routes
store/src/main/scala/docspell/store/queries
webapp/src/main/elm

@ -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: |

@ -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
}
}

@ -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] =

@ -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)
]
]
]

@ -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"
}