diff --git a/messages/uniworx/categories/user/de-de-formal.msg b/messages/uniworx/categories/user/de-de-formal.msg index 2184d08e4..4bc183394 100644 --- a/messages/uniworx/categories/user/de-de-formal.msg +++ b/messages/uniworx/categories/user/de-de-formal.msg @@ -37,6 +37,7 @@ AuthPWHashAlreadyConfigured: Nutzer:in meldet sich bereits mit FRADrive spezifis AuthPWHashConfigured: Nutzer:in meldet sich nun mit FRADrive spezifischer Kennung an UsersCourseSchool: Institut ActionNoUsersSelected: Keine Benutzer:innen ausgewählt +SynchroniseAvsUserQueued n@Int: AVS-Synchronisation von #{n} #{pluralDE n "Benutzer:in" "Benutzer:innen"} angestoßen SynchroniseLdapUserQueued n@Int: LDAP-Synchronisation von #{n} #{pluralDE n "Benutzer:in" "Benutzer:innen"} angestoßen SynchroniseLdapAllUsersQueued: LDAP-Synchronisation von allen Benutzer:innen angestoßen UserListTitle: Komprehensive Benutzerliste @@ -86,6 +87,7 @@ CourseUserDeregister: Vom Kurs abmelden NewPasswordLinkTip: Das Passwort Ihrer Uni2work-internen Kennung können Sie auf der folgenden Seite setzen: NewPasswordLink: Neues Passwort setzen UserAccountDeleteWarning: Achtung, dies löscht den kompletten Benutzer/die komplette Benutzerin unwiderruflich und mit allen assoziierten Daten aus der Datenbank. Prüfungsdaten müssen jedoch langfristig gespeichert bleiben! +UserAvsSync: AVS-Synchronisieren UserLdapSync: LDAP-Synchronisieren AllUsersLdapSync: Alle LDAP-Synchronisieren UserHijack: Sitzung übernehmen diff --git a/messages/uniworx/categories/user/en-eu.msg b/messages/uniworx/categories/user/en-eu.msg index e45b9e154..9b33bfdc7 100644 --- a/messages/uniworx/categories/user/en-eu.msg +++ b/messages/uniworx/categories/user/en-eu.msg @@ -37,6 +37,7 @@ AuthPWHashAlreadyConfigured: User already logs in using their FRADrive specific AuthPWHashConfigured: User now logs in using their FRADrive specific account UsersCourseSchool: Department ActionNoUsersSelected: No users selected +SynchroniseAvsUserQueued n: Triggered AVS synchronisation of #{n} #{pluralEN n "user" "users"}. SynchroniseLdapUserQueued n: Triggered LDAP synchronisation of #{n} #{pluralEN n "user" "users"}. SynchroniseLdapAllUsersQueued: Triggered LDAP synchronisation of all users UserListTitle: Comprehensive list of users @@ -86,6 +87,7 @@ CourseUserDeregister: Deregister from course NewPasswordLinkTip: You can set the password for your Uni2work-internal account on the following page: NewPasswordLink: Set password UserAccountDeleteWarning: Caution, this permanently deletes users and all of their associated data. Exam results must be stored long term! +UserAvsSync: Synchronise with AVS UserLdapSync: Synchronise with LDAP AllUsersLdapSync: Synchronise all with LDAP UserHijack: Hijack session diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 6c830642d..888ccf2a4 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -55,7 +55,7 @@ hijackUserForm = \csrf -> do -- instance HasUser (DBRow (Entity USer)) where -- hasUser = _entityVal -data UserAction = UserLdapSync | UserAddSupervisor | UserSetSupervisor | UserRemoveSupervisor +data UserAction = UserLdapSync | UserAddSupervisor | UserSetSupervisor | UserRemoveSupervisor | UserAvsSync deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic) deriving anyclass (Universe, Finite) @@ -67,6 +67,7 @@ data UserActionData = UserLdapSyncData | UserAddSupervisorData { getActionSupervisors :: Set Text, getActionRerouteNotifications :: Bool } | UserSetSupervisorData { getActionSupervisors :: Set Text, getActionRerouteNotifications :: Bool } | UserRemoveSupervisorData + | UserAvsSyncData deriving (Eq, Ord, Read, Show, Generic) isNotSetSupervisor :: UserActionData -> Bool @@ -185,6 +186,7 @@ postUsersR = do acts :: Map UserAction (AForm Handler UserActionData) acts = mconcat [ singletonMap UserLdapSync $ pure UserLdapSyncData + , singletonMap UserAvsSync $ pure UserAvsSyncData , singletonMap UserAddSupervisor $ UserAddSupervisorData <$> apopt (textField & cfAnySeparatedSet) (fslI MsgTableSupervisor & setTooltip MsgCourseParticipantsRegisterUsersFieldTip) Nothing <*> apopt (boolField . Just $ SomeMessage MsgBoolIrrelevant) (fslI MsgMailSupervisorReroute & setTooltip MsgMailSupervisorRerouteTooltip) (Just True) @@ -360,6 +362,10 @@ postUsersR = do runDBJobs . forM_ userSet $ \uid -> queueDBJob $ JobSynchroniseLdapUser uid addMessageI Success . MsgSynchroniseLdapUserQueued $ Set.size userSet redirectKeepGetParams UsersR + (UserAvsSyncData, userSet) -> do + runDBJobs . forM_ userSet $ \uid -> queueDBJob $ JobSynchroniseAvsUser uid Nothing + addMessageI Success . MsgSynchroniseAvsUserQueued $ Set.size userSet + redirectKeepGetParams UsersR (UserHijack, Set.minView -> Just (uid, _)) -> hijackUser uid >>= sendResponse (UserRemoveSupervisorData, userSet) -> do