module Handler.ProfileDelete where import Import import qualified Data.Text as T import Data.Maybe import System.Directory import System.FilePath getProfileDeleteR :: UserId -> Handler Html getProfileDeleteR userId = do tempUser <- runDB $ get userId case tempUser of Just user -> do username <- return $ userName user msu <- lookupSession "userId" case msu of Just tempLoginId -> do loginId <- return $ getUserIdFromText tempLoginId case loginId == userId of True -> do defaultLayout $ do $(widgetFile "profileDelete") False -> do setMessage "You can only delete your own profile" redirect $ UserR username Nothing -> do setMessage "You must be logged in to delete profiles" redirect $ LoginR Nothing -> do setMessage "This user does not exist" redirect $ HomeR postProfileDeleteR :: UserId -> Handler Html postProfileDeleteR userId = do tempUser <- runDB $ get userId case tempUser of Just user -> do username <- return $ userName user msu <- lookupSession "userId" case msu of Just tempLoginId -> do loginId <- return $ getUserIdFromText tempLoginId case loginId == userId of True -> do confirm <- lookupPostParam "confirm" case confirm of Just "confirm" -> do albumList <- return $ userAlbums user mapM (\albumId -> do album <- runDB $ getJust albumId mediaList <- return $ albumContent album mapM (\med -> runDB $ delete med) mediaList runDB $ delete albumId ) albumList runDB $ delete userId liftIO $ removeDirectoryRecursive $ "static" "data" (T.unpack $ extractKey userId) deleteSession "userId" setMessage "User deleted successfully" redirect $ HomeR _ -> do setMessage "You must confirm the deletion" redirect $ ProfileSettingsR userId False -> do setMessage "You can only delete your own profile" redirect $ UserR username Nothing -> do setMessage "You must be logged in to delete profiles" redirect $ LoginR Nothing -> do setMessage "This user does not exist" redirect $ HomeR