Delete the user along its data

This commit is contained in:
eikek
2021-09-06 21:54:30 +02:00
parent 3650a7d20c
commit 8df235e9db
6 changed files with 162 additions and 5 deletions

View File

@ -15,7 +15,7 @@ import docspell.backend.PasswordCrypt
import docspell.backend.ops.OCollective._
import docspell.common._
import docspell.store.UpdateResult
import docspell.store.queries.QCollective
import docspell.store.queries.{QCollective, QUser}
import docspell.store.queue.JobQueue
import docspell.store.records._
import docspell.store.usertask.{UserTask, UserTaskScope, UserTaskStore}
@ -37,7 +37,11 @@ trait OCollective[F[_]] {
def update(s: RUser): F[AddResult]
def deleteUser(login: Ident, collective: Ident): F[AddResult]
/** Deletes the user and all its data. */
def deleteUser(login: Ident, collective: Ident): F[UpdateResult]
/** Return an excerpt of what would be deleted, when the user is deleted. */
def getDeleteUserData(accountId: AccountId): F[DeleteUserData]
def insights(collective: Ident): F[InsightData]
@ -91,6 +95,9 @@ object OCollective {
type EmptyTrash = REmptyTrashSetting.EmptyTrash
val EmptyTrash = REmptyTrashSetting.EmptyTrash
type DeleteUserData = QUser.UserData
val DeleteUserData = QUser.UserData
sealed trait PassResetResult
object PassResetResult {
case class Success(newPw: Password) extends PassResetResult
@ -215,8 +222,13 @@ object OCollective {
def update(s: RUser): F[AddResult] =
store.add(RUser.update(s), RUser.exists(s.login))
def deleteUser(login: Ident, collective: Ident): F[AddResult] =
store.transact(RUser.delete(login, collective)).attempt.map(AddResult.fromUpdate)
def getDeleteUserData(accountId: AccountId): F[DeleteUserData] =
store.transact(QUser.getUserData(accountId))
def deleteUser(login: Ident, collective: Ident): F[UpdateResult] =
UpdateResult.fromUpdate(
store.transact(QUser.deleteUserAndData(AccountId(collective, login)))
)
def insights(collective: Ident): F[InsightData] =
store.transact(QCollective.getInsights(collective))