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

View File

@ -4554,6 +4554,7 @@ components:
required: required:
- folders - folders
- sentMails - sentMails
- shares
properties: properties:
folders: folders:
type: array type: array
@ -4563,6 +4564,9 @@ components:
sentMails: sentMails:
type: integer type: integer
format: int32 format: int32
shares:
type: integer
format: int32
SecondFactor: SecondFactor:
description: | description: |

View File

@ -72,7 +72,9 @@ object UserRoutes {
data <- backend.collective.getDeleteUserData( data <- backend.collective.getDeleteUserData(
AccountId(user.account.collective, username) 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 } yield resp
} }
} }

View File

@ -20,7 +20,8 @@ object QUser {
final case class UserData( final case class UserData(
ownedFolders: List[Ident], ownedFolders: List[Ident],
sentMails: Int sentMails: Int,
shares: Int
) )
def getUserData(accountId: AccountId): ConnectionIO[UserData] = { def getUserData(accountId: AccountId): ConnectionIO[UserData] = {
@ -28,6 +29,7 @@ object QUser {
val mail = RSentMail.as("m") val mail = RSentMail.as("m")
val mitem = RSentMailItem.as("mi") val mitem = RSentMailItem.as("mi")
val user = RUser.as("u") val user = RUser.as("u")
val share = RShare.as("s")
for { for {
uid <- loadUserId(accountId).map(_.getOrElse(Ident.unsafe(""))) uid <- loadUserId(accountId).map(_.getOrElse(Ident.unsafe("")))
@ -43,7 +45,13 @@ object QUser {
.innerJoin(user, user.uid === mail.uid), .innerJoin(user, user.uid === mail.uid),
user.login === accountId.user && user.cid === accountId.collective user.login === accountId.user && user.cid === accountId.collective
).query[Int].unique ).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] = def deleteUserAndData(accountId: AccountId): ConnectionIO[Int] =

View File

@ -295,7 +295,7 @@ renderDeleteConfirm texts settings model =
DimmerUserData data -> DimmerUserData data ->
let let
empty = empty =
List.isEmpty data.folders && data.sentMails == 0 List.isEmpty data.folders && data.sentMails == 0 && data.shares == 0
folderNames = folderNames =
String.join ", " data.folders String.join ", " data.folders
@ -312,16 +312,20 @@ renderDeleteConfirm texts settings model =
[ div [] [ div []
[ text texts.reallyDeleteUser [ text texts.reallyDeleteUser
, text " " , text " "
, text "The following data will be deleted:" , text (texts.deleteFollowingData ++ ":")
] ]
, ul [ class "list-inside list-disc" ] , ul [ class "list-inside list-disc" ]
[ li [ classList [ ( "hidden", List.isEmpty data.folders ) ] ] [ li [ classList [ ( "hidden", List.isEmpty data.folders ) ] ]
[ text "Folders: " [ text (texts.folders ++ ": ")
, text folderNames , text folderNames
] ]
, li [ classList [ ( "hidden", data.sentMails == 0 ) ] ] , li [ classList [ ( "hidden", data.sentMails == 0 ) ] ]
[ text (String.fromInt data.sentMails) [ 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)
] ]
] ]
] ]

View File

@ -31,6 +31,10 @@ type alias Texts =
, deleteThisUser : String , deleteThisUser : String
, pleaseCorrectErrors : String , pleaseCorrectErrors : String
, notDeleteCurrentUser : String , notDeleteCurrentUser : String
, folders : String
, sentMails : String
, shares : String
, deleteFollowingData : String
} }
@ -48,6 +52,10 @@ gb =
, deleteThisUser = "Delete this user" , deleteThisUser = "Delete this user"
, pleaseCorrectErrors = "Please correct the errors in the form." , pleaseCorrectErrors = "Please correct the errors in the form."
, notDeleteCurrentUser = "You can't delete the user you are currently logged in with." , 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" , deleteThisUser = "Benutzer löschen"
, pleaseCorrectErrors = "Bitte korrigiere die Fehler im Formular." , pleaseCorrectErrors = "Bitte korrigiere die Fehler im Formular."
, notDeleteCurrentUser = "Der aktuelle Benutzer kann nicht gelöscht werden." , 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"
} }