fix(users): fix #112 working now

This commit is contained in:
Steffen Jost 2023-07-26 08:55:12 +00:00
parent 35096ace01
commit 88bf21c9c5
2 changed files with 29 additions and 15 deletions

View File

@ -442,6 +442,14 @@ defNavLink navLabel navRoute = NavLink {..}
navQuick' = mempty
navForceActive = False
defNavLinkModal :: (RenderMessage UniWorX msg, HasRoute UniWorX route) => msg -> route -> NavLink
defNavLinkModal navLabel navRoute = NavLink {..}
where
navAccess' = NavAccessTrue
navType = NavTypeLink { navModal = True}
navQuick' = mempty
navForceActive = False
navBaseRoute :: NavLink -> Route UniWorX
navBaseRoute NavLink{navRoute} = urlRoute navRoute
@ -1196,8 +1204,9 @@ pageActions (AdminUserR cID) = return
{ navLink = defNavLink MsgMenuUserEdit $ ForProfileR cID
, navChildren = []
}
, NavPageActionSecondary
{ navLink = (defNavLink MsgUserHijack $ AdminHijackUserR cID){ navType = NavTypeLink { navModal = True }}
, NavPageActionPrimary
{ navLink = defNavLinkModal MsgUserHijack $ AdminHijackUserR cID
, navChildren = []
}
]
pageActions InfoR = return

View File

@ -413,22 +413,27 @@ hijackUser uid = do
User{userIdent} <- runDB $ get404 uid
setCredsRedirect $ Creds apDummy (CI.original userIdent) []
getAdminHijackUserR :: CryptoUUIDUser -> Handler TypedContent
getAdminHijackUserR = postAdminHijackUserR
getAdminHijackUserR :: CryptoUUIDUser -> Handler Html
getAdminHijackUserR cID = do
(hijackWgt, hijackEnctype) <- generateFormPost hijackUserForm
let hjForm = wrapForm hijackWgt def{ formSubmit = FormNoSubmit, formEncoding = hijackEnctype, formAction = Just . SomeRoute $ AdminHijackUserR cID }
uid :: UserId <- decrypt cID
usr <- runDB $ get404 uid
siteLayoutMsg MsgUserHijack $ do
setTitleI MsgUserHijack
[whamlet|
^{userWidget usr}
^{hjForm}
|]
postAdminHijackUserR :: CryptoUUIDUser -> Handler TypedContent
postAdminHijackUserR cID = do
postAdminHijackUserR cID = do
((hijackRes, _), _) <- runFormPost hijackUserForm
$logWarnS "HIJACK" $ "Form Result is: " <> tshow hijackRes
uid <- decrypt cID
((hijackRes, hijackWgt), hijackEnctype) <- runFormPost hijackUserForm
case hijackRes of
(FormSuccess ()) -> hijackUser uid
_ -> selectRep $ do
provideRep . siteLayoutMsg MsgUserHijack $ do
setTitleI MsgUserHijack
let hjForm = wrapForm hijackWgt def{ formEncoding = hijackEnctype }
[whamlet|
^{hjForm}
|]
ret <- formResultMaybe hijackRes $ \() -> Just <$> hijackUser uid
maybe (redirect UsersR) return ret
data ButtonAuthMode = BtnAuthLDAP | BtnAuthPWHash | BtnPasswordReset
deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic)