diff --git a/messages/de.msg b/messages/de.msg index c97852f20..ea407972e 100644 --- a/messages/de.msg +++ b/messages/de.msg @@ -3,6 +3,7 @@ BtnAbort: Abbrechen BtnDelete: Löschen BtnRegister: Anmelden BtnDeregister: Abmelden +BtnHijack: Sitzung übernehmen RegisterFrom: Anmeldungen von RegisterTo: Anmeldungen bis diff --git a/routes b/routes index 48cc4578b..778805719 100644 --- a/routes +++ b/routes @@ -35,6 +35,7 @@ /users UsersR GET -- no tags, i.e. admins only /admin/test AdminTestR GET POST /admin/user/#CryptoUUIDUser AdminUserR GET +/admin/user/#CryptoUUIDUser/hijack AdminHijackUserR POST /info VersionR GET !free /profile ProfileR GET POST !free !free diff --git a/src/Handler/Users.hs b/src/Handler/Users.hs index 31faf23af..ba2ad0022 100644 --- a/src/Handler/Users.hs +++ b/src/Handler/Users.hs @@ -14,11 +14,17 @@ import Handler.Utils import qualified Data.Map as Map -import Colonnade hiding (fromMaybe) - import qualified Database.Esqueleto as E +hijackUserForm :: UserId -> Form UserId +hijackUserForm uid csrf = do + cID <- encrypt uid + (uidResult, uidView) <- mforced hiddenField "" (cID :: CryptoUUIDUser) + (btnResult, btnView) <- mreq (buttonField BtnHijack) "" Nothing + + return (uid <$ uidResult <* btnResult, mconcat [toWidget csrf, fvInput uidView, fvInput btnView]) + getUsersR :: Handler Html getUsersR = do let @@ -53,6 +59,13 @@ getUsersR = do