30 lines
1.3 KiB
Haskell
30 lines
1.3 KiB
Haskell
module Jobs.Handler.ChangeUserDisplayEmail
|
|
( dispatchJobChangeUserDisplayEmail
|
|
) where
|
|
|
|
import Import
|
|
|
|
import Handler.Utils.Mail
|
|
import qualified Data.HashSet as HashSet
|
|
import qualified Data.HashMap.Strict as HashMap
|
|
import qualified Data.CaseInsensitive as CI
|
|
|
|
import Text.Hamlet
|
|
|
|
dispatchJobChangeUserDisplayEmail :: UserId -> UserEmail -> JobHandler UniWorX
|
|
dispatchJobChangeUserDisplayEmail jUser jDisplayEmail = JobHandlerException $ do
|
|
bearer <- bearerRestrict SetDisplayEmailR jDisplayEmail <$> bearerToken (HashSet.singleton $ Right jUser) Nothing (HashMap.singleton BearerTokenRouteEval $ HashSet.singleton SetDisplayEmailR) Nothing Nothing Nothing
|
|
jwt <- encodeBearer bearer
|
|
let
|
|
setDisplayEmailUrl :: SomeRoute UniWorX
|
|
setDisplayEmailUrl = SomeRoute (SetDisplayEmailR, [(toPathPiece GetBearer, toPathPiece jwt)])
|
|
setDisplayEmailUrl' <- toTextUrl setDisplayEmailUrl
|
|
|
|
user@User{..} <- runDB $ getJust jUser
|
|
|
|
userMailT jUser $ do
|
|
_mailTo .= pure (userAddress user & _addressEmail .~ CI.original jDisplayEmail)
|
|
replaceMailHeader "Auto-Submitted" $ Just "auto-generated"
|
|
setSubjectI MsgMailSubjectChangeUserDisplayEmail
|
|
addHtmlMarkdownAlternatives ($(ihamletFile "templates/mail/changeUserDisplayEmail.hamlet") :: HtmlUrlI18n UniWorXMessage (Route UniWorX))
|