فهرست منبع

Improve feedback on login/register forms

James Allen 12 سال پیش
والد
کامیت
e4d9d03f55

+ 3 - 7
services/web/app/coffee/Features/Authentication/AuthenticationController.coffee

@@ -16,9 +16,9 @@ module.exports = AuthenticationController =
 			if !isAllowed
 				logger.log email:email, "too many login requests"
 				res.statusCode = 429
-				return res.send 
+				return res.send
 					message:
-						text: 'This account has had too many login requests, <br> please wait 2 minutes before trying to log in again',
+						text: 'This account has had too many login requests. Please wait 2 minutes before trying to log in again',
 						type: 'error'
 			AuthenticationManager.authenticate email: email, password, (error, user) ->
 				return next(error) if error?
@@ -100,7 +100,7 @@ module.exports = AuthenticationController =
 		callback()
 
 	_establishUserSession: (req, user, callback = (error) ->) ->
-		lightUser = 
+		lightUser =
 			_id: user._id
 			first_name: user.first_name
 			last_name: user.last_name
@@ -110,7 +110,3 @@ module.exports = AuthenticationController =
 		req.session.user = lightUser
 		req.session.justLoggedIn = true
 		req.session.save callback
-		
-		
-	
-		

+ 5 - 3
services/web/app/views/user/login.jade

@@ -35,7 +35,9 @@ block content
 									| Required
 							.actions
 								button.btn-primary.btn(
-									type='submit'
-									ng-disabled="loginForm.$invalid"
-								) Login
+									type='submit',
+									ng-disabled="loginForm.inflight"
+								)
+									span(ng-show="!loginForm.inflight") Login
+									span(ng-show="loginForm.inflight") Logging in...
 								a.pull-right(href='/user/password/reset') Forgot your password?

+ 8 - 7
services/web/app/views/user/register.jade

@@ -10,7 +10,7 @@ block content
 						div Join ShareLaTeX to view this project
 					else if newTemplateData.templateName !== undefined
 						h1 Please register to edit the '#{newTemplateData.templateName}' template
-						div Already have a ShareLaTeX account? 
+						div Already have a ShareLaTeX account?
 							a(href="/login") Login here
 
 			.row
@@ -18,12 +18,12 @@ block content
 					.card
 						.page-header
 							h1 Register
-						form(async-form="register", name="registerForm", action="/register", novalidate, ng-cloak)
+						form(async-form="register", name="registerForm", action="/register", ng-cloak)
 							input(name='_csrf', type='hidden', value=csrfToken)
 							input(name='redir', type='hidden', value=redir)
 							form-messages(for="registerForm")
 							.form-group
-								label(for='email') Email 
+								label(for='email') Email
 								input.form-control(
 									type='email',
 									name='email',
@@ -36,7 +36,7 @@ block content
 								span.small.text-primary(ng-show="registerForm.email.$invalid && registerForm.email.$dirty")
 									| Must be an email address
 							.form-group
-								label(for='password') Password 
+								label(for='password') Password
 								input.form-control(
 									type='password',
 									name='password',
@@ -49,6 +49,7 @@ block content
 							.actions
 								button.btn-primary.btn(
 									type='submit'
-									ng-disabled="register.$invalid"
-								) Register
-						
+									ng-disabled="registerForm.inflight"
+								)
+									span(ng-show="!registerForm.inflight") Register
+									span(ng-show="registerForm.inflight") Registering...

+ 8 - 3
services/web/public/coffee/directives/asyncForm.coffee

@@ -7,6 +7,7 @@ define [
 				formName = attrs.asyncForm
 
 				scope[attrs.name].response = response = {}
+				scope[attrs.name].inflight = false
 
 				element.on "submit", (e) ->
 					e.preventDefault()
@@ -15,9 +16,12 @@ define [
 					for data in element.serializeArray()
 						formData[data.name] = data.value
 
+					scope[attrs.name].inflight = true
+
 					$http
 						.post(element.attr('action'), formData)
 						.success (data, status, headers, config) ->
+							scope[attrs.name].inflight = false
 							response.success = true
 							response.error = false
 
@@ -33,12 +37,13 @@ define [
 									ga('send', 'event', formName, 'failure', data.message)
 								else
 									ga('send', 'event', formName, 'success')
-									
+
 						.error (data, status, headers, config) ->
+							scope[attrs.name].inflight = false
 							response.success = false
 							response.error = true
 							response.message =
-								text: data.message or "Something went wrong talking to the server :(. Please try again."
+								text: data.message?.text or "Something went wrong talking to the server :(. Please try again."
 								type: 'error'
 							ga('send', 'event', formName, 'failure', data.message)
 		}
@@ -60,4 +65,4 @@ define [
 				form: "=for"
 			}
 
-		}
+		}