diff --git a/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg b/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg index 9087f1ca0..f58a0818d 100644 --- a/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg +++ b/messages/uniworx/utils/navigation/breadcrumbs/de-de-formal.msg @@ -151,3 +151,5 @@ BreadcrumbSubmissionAuthorshipStatements: Eigenständigkeitserklärungen BreadcrumbExternalApis: Externe APIs BreadcrumbApiDocs: API Dokumentation BreadcrumbSwagger !ident-ok: OpenAPI 2.0 (Swagger) +BreadcrumbSynchLdap !ident-ok: LDAP Synch +BreadcrumbSynchAvs !ident-ok: AVS Synch \ No newline at end of file diff --git a/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg b/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg index 5763051d1..31a3c5016 100644 --- a/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg +++ b/messages/uniworx/utils/navigation/breadcrumbs/en-eu.msg @@ -151,3 +151,5 @@ BreadcrumbSubmissionAuthorshipStatements: Statements of Authorship BreadcrumbExternalApis: External APIs BreadcrumbApiDocs: API documentation BreadcrumbSwagger: OpenAPI 2.0 (Swagger) +BreadcrumbSynchLdap: Synch LDAP +BreadcrumbSynchAvs: Synch AVS diff --git a/routes b/routes index 0585153a1..2224abd6f 100644 --- a/routes +++ b/routes @@ -52,9 +52,11 @@ / NewsR GET !free /users UsersR GET POST -- no tags, i.e. admins only -/users/#CryptoUUIDUser AdminUserR GET POST -/users/#CryptoUUIDUser/delete AdminUserDeleteR POST -/users/#CryptoUUIDUser/hijack AdminHijackUserR GET POST !adminANDno-escalation +/users/#CryptoUUIDUser AdminUserR GET POST +/users/#CryptoUUIDUser/delete AdminUserDeleteR POST +/users/#CryptoUUIDUser/hijack AdminHijackUserR GET POST !adminANDno-escalation +/users/#CryptoUUIDUser/sync/ldap AdminUserSyncLdapR GET +/users/#CryptoUUIDUser/sync/avs AdminUserSyncAvsR GET /users/#CryptoUUIDUser/notifications UserNotificationR GET POST !self /users/#CryptoUUIDUser/password UserPasswordR GET POST !selfANDis-pw-hash !/users/functionary-invite/new AdminNewFunctionaryInviteR GET POST diff --git a/src/Foundation/Navigation.hs b/src/Foundation/Navigation.hs index 008e68e08..3e97c43ee 100644 --- a/src/Foundation/Navigation.hs +++ b/src/Foundation/Navigation.hs @@ -87,9 +87,11 @@ breadcrumb (AdminUserR cID) = useRunDB . maybeT (i18nCrumb MsgBreadcrumbUser $ J uid <- decrypt cID User{..} <- MaybeT $ get uid return (userDisplayName, Just UsersR) -breadcrumb (AdminUserDeleteR cID) = i18nCrumb MsgBreadcrumbUserDelete . Just $ AdminUserR cID -breadcrumb (AdminHijackUserR cID) = i18nCrumb MsgBreadcrumbUserHijack . Just $ AdminUserR cID -breadcrumb (UserNotificationR cID) = useRunDB $ do +breadcrumb (AdminUserDeleteR cID) = i18nCrumb MsgBreadcrumbUserDelete . Just $ AdminUserR cID +breadcrumb (AdminUserSyncLdapR cID) = i18nCrumb MsgBreadcrumbSynchLdap . Just $ AdminUserR cID +breadcrumb (AdminUserSyncAvsR cID) = i18nCrumb MsgBreadcrumbSynchAvs . Just $ AdminUserR cID +breadcrumb (AdminHijackUserR cID) = i18nCrumb MsgBreadcrumbUserHijack . Just $ AdminUserR cID +breadcrumb (UserNotificationR cID) = useRunDB $ do mayList <- hasReadAccessTo UsersR if | mayList @@ -1225,6 +1227,14 @@ pageActions (AdminUserR cID) = return , NavPageActionPrimary { navLink = defNavLink MsgMenuUserEdit $ ForProfileR cID , navChildren = [] + } + , NavPageActionPrimary + { navLink = defNavLink MsgUserLdapSync $ AdminUserSyncLdapR cID + , navChildren = [] + } + , NavPageActionPrimary + { navLink = defNavLink MsgUserAvsSync $ AdminUserSyncAvsR cID + , navChildren = [] } , NavPageActionPrimary { navLink = defNavLinkModal MsgUserHijack $ AdminHijackUserR cID diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index 7defa02c9..21c0570a8 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -14,11 +14,14 @@ module Handler.Profile , getSetDisplayEmailR, postSetDisplayEmailR , getCsvOptionsR, postCsvOptionsR , postLangR + , getAdminUserSyncAvsR + , getAdminUserSyncLdapR ) where import Import import Handler.Utils +import Handler.Utils.Avs import Handler.Utils.Profile import Handler.Utils.Users import Handler.Utils.Company @@ -1255,3 +1258,18 @@ postLangR = do addMessage Success . toHtml $ mr MsgLanguageChanged redirect . fromMaybe NewsR =<< lookupGlobalGetParam GetReferer + + +getAdminUserSyncLdapR :: CryptoUUIDUser -> Handler Html +getAdminUserSyncLdapR uuid = do + uid <- decrypt uuid + queueJob' $ JobSynchroniseLdapUser uid + addMessageI Success $ MsgSynchroniseLdapUserQueued 1 + redirectUltDest $ AdminUserR uuid + +getAdminUserSyncAvsR :: CryptoUUIDUser -> Handler Html +getAdminUserSyncAvsR uuid = do + uid <- decrypt uuid + queueAvsUpdateByUID (Set.singleton uid) Nothing + addMessageI Success $ MsgSynchroniseAvsUserQueued 1 + redirectUltDest $ AdminUserR uuid diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 5b3701cf2..9bfc6f7f7 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -659,7 +659,7 @@ postAdminUserR uuid = do } userDataWidget <- runDB $ makeProfileData $ Entity uid user siteLayout heading $ do - let _deleteWidget = $(i18nWidgetFile "data-delete") + let _deleteWidget = $(i18nWidgetFile "data-delete") -- TODO: update deletion text for FRADrive $(widgetFile "adminUser")