From fdfe41ac4ae4fb54c9ec1f93b630460ed1bc3a6e Mon Sep 17 00:00:00 2001 From: nek0 Date: Mon, 26 Oct 2015 18:33:34 +0100 Subject: [PATCH] made user ident modifyable --- Handler/NewUser.hs | 41 ++++++++++++++++++++++++++++------------- messages/cz.msg | 1 + messages/de.msg | 1 + messages/en.msg | 1 + 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/Handler/NewUser.hs b/Handler/NewUser.hs index d7bbbdc..27a1950 100644 --- a/Handler/NewUser.hs +++ b/Handler/NewUser.hs @@ -39,9 +39,15 @@ postNewUserR = do $ newUserForm secs case res of FormSuccess user -> do - runDB $ insert_ user - setMessageI MsgUserCreated - redirect HomeR + namesakes <- runDB $ selectList [UserIdent ==. userIdent user] [] + if null namesakes + then do + runDB $ insert_ user + setMessageI MsgUserCreated + redirect HomeR + else do + setMessageI MsgUserIdentNotUnique + redirect NewUserR _ -> do setMessageI MsgUserNotCreated redirect NewUserR @@ -60,7 +66,8 @@ newUserForm secs = User optionsPairs $ map (\ent -> ((avatarIdent $ entityVal ent), entityKey ent)) ents data UserConf = UserConf - { userConfEmail :: Maybe Text + { userConfIdent :: Text + , userConfEmail :: Maybe Text , userConfAvatar :: Maybe AvatarId , userConfBarcode :: Maybe [Text] } @@ -95,14 +102,21 @@ postModifyUserR uId = do $ modifyUserForm user bs case res of FormSuccess uc -> do - runDB $ update uId - [ UserEmail =. userConfEmail uc - , UserAvatar =. userConfAvatar uc - ] - liftIO $ notify user (userConfEmail uc) - handleBarcodes (Left uId) (fromMaybe [] $ userConfBarcode uc) - setMessageI MsgUserEdited - redirect $ SelectR uId + namesakes <- runDB $ selectList [UserIdent ==. userConfIdent uc] [] + if null namesakes + then do + runDB $ update uId + [ UserIdent =. userConfIdent uc + , UserEmail =. userConfEmail uc + , UserAvatar =. userConfAvatar uc + ] + liftIO $ notify user (userConfEmail uc) + handleBarcodes (Left uId) (fromMaybe [] $ userConfBarcode uc) + setMessageI MsgUserEdited + redirect $ SelectR uId + else do + setMessageI MsgUserIdentNotUnique + redirect $ ModifyUserR uId _ -> do setMessageI MsgUserNotEdited redirect $ SelectR uId @@ -112,7 +126,8 @@ postModifyUserR uId = do modifyUserForm :: User -> [Text] -> AForm Handler UserConf modifyUserForm user bs = UserConf - <$> aopt emailField (bfs MsgEmailNotify) (Just $ userEmail user) + <$> areq textField (bfs MsgName) (Just $ userIdent user) + <*> aopt emailField (bfs MsgEmailNotify) (Just $ userEmail user) <*> aopt (selectField avatars) (bfs MsgSelectAvatar) (Just $ userAvatar user) <*> aopt barcodeField (bfs MsgBarcodeField) (Just $ Just bs) <* bootstrapSubmit (msgToBSSubmit MsgSubmit) diff --git a/messages/cz.msg b/messages/cz.msg index 669e4e3..479f29a 100755 --- a/messages/cz.msg +++ b/messages/cz.msg @@ -141,3 +141,4 @@ BuyValue: K placení CustomerId: Kód zákazníka TotalCrates: Celkový počet přepravek Modify: upravit +UserIdentNotUnique: Uživatelské jméno není jedinečný diff --git a/messages/de.msg b/messages/de.msg index dc93f09..72e4d94 100755 --- a/messages/de.msg +++ b/messages/de.msg @@ -141,3 +141,4 @@ BuyValue: Zahlbetrag CustomerId: Kundennummer TotalCrates: Gesamtanzahl Kästen Modify: bearbeiten +UserIdentNotUnique: Benutzername ist nicht einzigartig diff --git a/messages/en.msg b/messages/en.msg index b5292b4..dbe2bb5 100755 --- a/messages/en.msg +++ b/messages/en.msg @@ -141,3 +141,4 @@ BuyValue: Payment amount CustomerId: Customer id TotalCrates: Total crates Modify: modify +UserIdentNotUnique: Username is not unique