Setup: verify the password.
This commit is contained in:
		
							parent
							
								
									ac4f8469ce
								
							
						
					
					
						commit
						044578a501
					
				
					 1 changed files with 30 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -2,9 +2,11 @@
 | 
			
		|||
-- | Users can also erase their account.
 | 
			
		||||
module App.Page.Setup where
 | 
			
		||||
 | 
			
		||||
import Prelude (Unit, bind, discard, pure, ($), (<<<), (==))
 | 
			
		||||
import Prelude (Unit, bind, discard, pure, ($), (<<<), (==), (<>), show, map)
 | 
			
		||||
 | 
			
		||||
import Data.Maybe (Maybe(..))
 | 
			
		||||
import Data.Array as A
 | 
			
		||||
import Data.Maybe (Maybe(..), maybe)
 | 
			
		||||
import Data.Either (Either(..))
 | 
			
		||||
import Effect.Aff.Class (class MonadAff)
 | 
			
		||||
import Halogen as H
 | 
			
		||||
import Halogen.HTML as HH
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +17,8 @@ import Web.Event.Event (Event)
 | 
			
		|||
 | 
			
		||||
import Bulma as Bulma
 | 
			
		||||
 | 
			
		||||
import App.Validation.Password as P
 | 
			
		||||
 | 
			
		||||
import App.Type.LogMessage
 | 
			
		||||
import App.Message.AuthenticationDaemon as AuthD
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,6 +50,7 @@ data NewPasswordInput
 | 
			
		|||
data Action
 | 
			
		||||
  = HandleNewPassword NewPasswordInput
 | 
			
		||||
  | ChangePasswordAttempt Event
 | 
			
		||||
  | SendChangePasswordMessage
 | 
			
		||||
  | CancelModal
 | 
			
		||||
  | DeleteAccountPopup
 | 
			
		||||
  | DeleteAccount
 | 
			
		||||
| 
						 | 
				
			
			@ -142,10 +147,31 @@ handleAction = case _ of
 | 
			
		|||
      _ , "" -> H.raise $ Log $ UnableToSend "Confirm your password!"
 | 
			
		||||
      pass, confirmation -> do
 | 
			
		||||
        if pass == confirmation
 | 
			
		||||
        then do H.raise $ Log $ SystemLog "Changing the password"
 | 
			
		||||
                H.raise $ ChangePassword pass
 | 
			
		||||
        then case P.password pass of
 | 
			
		||||
               Left errors -> H.raise $ Log $ UnableToSend $ A.fold $ map show_error_password errors
 | 
			
		||||
               Right _     -> handleAction SendChangePasswordMessage
 | 
			
		||||
        else H.raise $ Log $ UnableToSend "Confirmation differs from password"
 | 
			
		||||
 | 
			
		||||
  SendChangePasswordMessage -> do
 | 
			
		||||
    state <- H.get
 | 
			
		||||
    H.raise $ Log $ SystemLog "Changing the password"
 | 
			
		||||
    H.raise $ ChangePassword state.newPasswordForm.password
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  where
 | 
			
		||||
  show_error_password :: P.Error -> String
 | 
			
		||||
  show_error_password = case _ of
 | 
			
		||||
    P.ParsingError {error, position} ->
 | 
			
		||||
      "position " <> show position <> " " <> maybe "" string_error_password error
 | 
			
		||||
 | 
			
		||||
  string_error_password :: P.PasswordParsingError -> String
 | 
			
		||||
  string_error_password = case _ of
 | 
			
		||||
    P.CannotParse         -> "cannot parse the password"
 | 
			
		||||
    P.CannotEntirelyParse -> "cannot entirely parse the password"
 | 
			
		||||
    P.Size min max n      -> "password size should be between "
 | 
			
		||||
                             <> show min <> " and " <> show max
 | 
			
		||||
                             <> " (currently: " <> show n <> ")"
 | 
			
		||||
 | 
			
		||||
handleQuery :: forall a m. MonadAff m => Query a -> H.HalogenM State Action () Output m (Maybe a)
 | 
			
		||||
handleQuery = case _ of
 | 
			
		||||
  -- For now, no message actually needs to be handled here.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue