module Handler.Users where import Import import Jobs -- import Data.Text import Handler.Utils import Utils.Lens import qualified Data.CaseInsensitive as CI import qualified Data.Set as Set import qualified Data.Map as Map import qualified Database.Esqueleto as E import qualified Database.Esqueleto.Utils as E import Handler.Profile (makeProfileData) hijackUserForm :: CryptoUUIDUser -> Form () hijackUserForm cID csrf = do (uidResult, uidView) <- mforced hiddenField "" (cID :: CryptoUUIDUser) (btnResult, btnView) <- mreq (buttonField BtnHijack) "" Nothing return (() <$ uidResult <* btnResult, mconcat [toWidget csrf, fvInput uidView, fvInput btnView]) -- In case of refactoring, use this: -- instance HasEntity (DBRow (Entity User)) User where -- hasEntity = _dbrOutput -- instance HasUser (DBRow (Entity USer)) where -- hasUser = _entityVal getUsersR :: Handler Html getUsersR = do let dbtColonnade = dbColonnade . mconcat $ [ dbRow , sortable (Just "name") (i18nCell MsgName) $ \DBRow{ dbrOutput = Entity uid User{..} } -> anchorCellM (AdminUserR <$> encrypt uid) (nameWidget userDisplayName userSurname) , sortable (Just "matriculation") (i18nCell MsgMatrikelNr) $ \DBRow{ dbrOutput = Entity uid User{..} } -> anchorCellM (AdminUserR <$> encrypt uid) (toWidget . display $ userMatrikelnummer) -- , sortable (Just "last-name") (i18nCell MsgName) $ \DBRow{ dbrOutput = Entity uid User{..} } -> anchorCellM -- (AdminUserR <$> encrypt uid) -- (toWidget . display $ last $ impureNonNull $ words $ userDisplayName) , sortable Nothing (i18nCell MsgAdminFor) $ \DBRow{ dbrOutput = Entity uid _ } -> flip (set' cellContents) mempty $ do schools <- lift . E.select . E.from $ \(school `E.InnerJoin` userAdmin) -> do E.on $ school E.^. SchoolId E.==. userAdmin E.^. UserAdminSchool E.where_ $ userAdmin E.^. UserAdminUser E.==. E.val uid E.orderBy [E.asc $ school E.^. SchoolShorthand] return $ school E.^. SchoolShorthand return [whamlet| $newline never