Benitlux app: revamp UI of the login/signup screen and double check passwords
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 23 May 2016 02:03:44 +0000 (22:03 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 23 May 2016 02:31:31 +0000 (22:31 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/benitlux/src/client/features/translations.nit
contrib/benitlux/src/client/views/user_views.nit
contrib/benitlux/src/server/benitlux_social.nit

index 02deb61..be42f57 100644 (file)
@@ -63,13 +63,23 @@ do
        map["Welcome %0!"] = "Bienvenue %0!"
        map["Logged in as %0"] = "Connecté en tant que %0"
        map["Username"] = "Nom d'utilisateur"
-       map["Invalid name"] = "Nom d'utilisateur invalide"
        map["Password"] = "Mot de passe"
-       map["Passwords must be composed of at least 6 characters."] = "Le mot de passe doit avoir au moins 6 charactères."
+       map["Repeat password"] = "Répéter le mot de passe"
        map["Email"] = "Courriel"
        map["Login"] = "Se connecter"
+       map["Loging in..."] = "Authentification..."
        map["Logout"] = "Se déconnecter"
        map["Signup"] = "Créer un compte"
+       map["Signing up..."] = "Création du compte..."
+
+       map["Passwords must be composed of at least 6 characters."] = "Le mot de passe doit avoir au moins 6 charactères."
+       map["Fill the following fields to sign up."] = "Remplissez les champs suivants pour créer un compte."
+
+       map["Passwords do not match."] = "Les mots de passe ne correspondent pas."
+       map["Invalid username."] = "Nom d'utilisateur invalide."
+       map["Invalid password."] = "Mot de passe invalide."
+       map["Username already in use."] = "Le nom d'utilisateur est déjà réservé."
+       map["Invalid username and password combination."] = "La combinaison de nom et mot de passe n'est pas reconnue."
 
        # Social views
        map["Follow"] = "Suivre"
index 56ea39e..b69b1db 100644 (file)
@@ -86,38 +86,50 @@ end
 class SignupWindow
        super Window
 
-       # Main window layout
-       var layout = new ListLayout(parent=self)
+       private var list = new ListLayout(parent=self)
+       private var lbl_feedback = new Label(parent=list, text="Welcome")
+
+       private var layout_login = new VerticalLayout(parent=list)
 
-       private var lbl_welcome = new Label(parent=layout, text="Welcome")
+       # ---
+       # First the login options
 
        # Name
-       private var name_line = new HorizontalLayout(parent=layout)
+       private var name_line = new HorizontalLayout(parent=layout_login)
        private var lbl_name = new Label(parent=name_line, text="Username".t)
        private var txt_name = new TextInput(parent=name_line, text=app.user)
 
-       # Pass
-       private var pass_line = new HorizontalLayout(parent=layout)
+       # Password
+       private var pass_line = new HorizontalLayout(parent=layout_login)
        private var lbl_pass = new Label(parent=pass_line, text="Password".t)
        private var txt_pass = new TextInput(parent=pass_line, is_password=true)
-       private var lbl_pass_desc = new Label(parent=layout,
+       private var lbl_pass_desc = new Label(parent=layout_login, size = 0.5,
                text="Passwords must be composed of at least 6 characters.".t)
 
-       private var but_login = new Button(parent=layout, text="Login".t)
+       private var but_login = new Button(parent=layout_login, text="Login".t)
+
+       # ---
+       # Then, the signup options
+
+       private var layout_register = new VerticalLayout(parent=list)
+
+       private var lbl_signup_desc = new Label(parent=layout_register, size = 0.5,
+               text="Fill the following fields to sign up.".t)
+
+       # Repeat password
+       private var pass_line2 = new HorizontalLayout(parent=layout_register)
+       private var lbl_pass2 = new Label(parent=pass_line2, text="Repeat password".t)
+       private var txt_pass2 = new TextInput(parent=pass_line2, is_password=true)
 
        # Email
-       private var email_line = new HorizontalLayout(parent=layout)
+       private var email_line = new HorizontalLayout(parent=layout_register)
        private var lbl_email = new Label(parent=email_line, text="Email".t)
        private var txt_email = new TextInput(parent=email_line)
 
-       private var but_signup = new Button(parent=layout, text="Signup".t)
-
-       private var lbl_feedback = new Label(parent=layout, text="")
+       private var but_signup = new Button(parent=layout_register, text="Signup".t)
 
        init
        do
-               lbl_pass_desc.size = 0.5
-
                for c in [but_login, but_signup] do
                        c.observers.add self
                end
@@ -133,25 +145,32 @@ class SignupWindow
 
                                var name = txt_name.text
                                if name == null or not name.name_is_ok then
-                                       feedback "Invalid name".t
+                                       feedback "Invalid username.".t
                                        return
                                end
 
                                var pass = txt_pass.text
                                if pass == null or not pass.pass_is_ok then
-                                       feedback "Invalid password".t
+                                       feedback "Invalid password.".t
                                        return
                                end
 
                                if sender == but_login then
+                                       feedback "Logging in...".t
                                        (new LoginOrSignupAction(self, "rest/login?name={name}&pass={pass.pass_hash}")).start
                                else if sender == but_signup then
+                                       if pass != txt_pass2.text then
+                                               feedback "Passwords do not match.".t
+                                               return
+                                       end
+
                                        var email = txt_email.text
                                        if email == null or email.is_empty then
                                                feedback "Invalid email".t
                                                return
                                        end
 
+                                       feedback "Signing up...".t
                                        (new LoginOrSignupAction(self, "rest/signup?name={name}&pass={pass.pass_hash}&email={email}")).start
                                end
                        end
index bdd83b4..7764c75 100644 (file)
@@ -182,7 +182,7 @@ GROUP BY beer0, beer1""") else
                # Check if already in user
                var stmt = select("ROWID FROM users WHERE lower({user.to_sql_string}) = lower(name)")
                assert stmt != null else print_error "Select 'sign_up' failed with: {error or else "?"}"
-               if not stmt.iterator.to_a.is_empty then return "Username already in use"
+               if not stmt.iterator.to_a.is_empty then return "Username already in use."
 
                # Check email use
                stmt = select("ROWID FROM users WHERE lower({email.to_sql_string}) = lower(email)")