-- eidolon -- A simple gallery in Haskell and Yesod -- Copyright (C) 2015 Amedeo Molnár -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU Affero General Public License as published -- by the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU Affero General Public License for more details. -- -- You should have received a copy of the GNU Affero General Public License -- along with this program. If not, see . module Handler.ProfileSettings where import Import import Handler.Commons getProfileSettingsR :: UserId -> Handler Html getProfileSettingsR userId = do checkRes <- profileCheck userId case checkRes of Right user -> do (profileSettingsWidget, enctype) <- generateFormPost $ profileSettingsForm user formLayout $ do setTitle "Eidolon :: Profile settings" $(widgetFile "profileSettings") Left (errorMsg, route) -> do setMessage errorMsg redirect route postProfileSettingsR :: UserId -> Handler Html postProfileSettingsR userId = do checkRes <- profileCheck userId case checkRes of Right user -> do ((result, _), _) <- runFormPost $ profileSettingsForm user case result of FormSuccess temp -> do runDB $ update userId [ UserName =. userName temp , UserSlug =. userSlug temp , UserEmail =. userEmail temp ] setMessage "Profile settings changed successfully" redirect $ UserR $ userName user _ -> do setMessage "There was an error changing your settings" redirect $ ProfileSettingsR userId Left (errorMsg, route) -> do setMessage errorMsg redirect route profileSettingsForm :: User -> Form User profileSettingsForm user = renderDivs $ User <$> areq textField "Username" (Just $ userName user) <*> areq textField "Userslug" (Just $ userSlug user) <*> areq emailField "Email" (Just $ userEmail user) <*> pure (userSalt user) <*> pure (userSalted user) <*> pure (userAlbums user) <*> pure (userAdmin user)