@@ -60,15 +60,10 @@ class LoginByPasswordRequest {
6060 * @return {Promise }
6161 */
6262 static handle ( req , res ) {
63- let request
64-
65- try {
66- request = LoginByPasswordRequest . fromParams ( req , res )
67- } catch ( error ) {
68- return Promise . reject ( error )
69- }
63+ const request = LoginByPasswordRequest . fromParams ( req , res )
7064
7165 return LoginByPasswordRequest . login ( request )
66+ . catch ( request . error . bind ( request ) )
7267 }
7368
7469 /**
@@ -156,23 +151,30 @@ class LoginByPasswordRequest {
156151 return extracted
157152 }
158153
154+ error ( error ) {
155+ let res = this . response
156+ let params = Object . assign ( { } , this . authQueryParams , { error : error . message } )
157+ res . statusCode ( error . statusCode || 400 )
158+ res . render ( 'auth/login' , params )
159+ }
160+
159161 /**
160162 * Validates the Login request (makes sure required parameters are present),
161163 * and throws an error if not.
162164 *
163- * @throws {TypeError } If missing required params
165+ * @throws {Error } If missing required params
164166 */
165167 validate ( ) {
166168 let error
167169
168170 if ( ! this . username ) {
169- error = new TypeError ( 'Username required' )
171+ error = new Error ( 'Username required' )
170172 error . statusCode = 400
171173 throw error
172174 }
173175
174176 if ( ! this . password ) {
175- error = new TypeError ( 'Password required' )
177+ error = new Error ( 'Password required' )
176178 error . statusCode = 400
177179 throw error
178180 }
@@ -182,7 +184,7 @@ class LoginByPasswordRequest {
182184 * Loads a user from the user store, and if one is found and the
183185 * password matches, returns a `UserAccount` instance for that user.
184186 *
185- * @throws {TypeError } If
187+ * @throws {Error } If failures to load user are encountered
186188 *
187189 * @return {Promise<UserAccount> }
188190 */
@@ -208,7 +210,7 @@ class LoginByPasswordRequest {
208210 } )
209211 . then ( foundUser => {
210212 if ( ! foundUser ) {
211- error = new TypeError ( 'No user found for that username' )
213+ error = new Error ( 'No user found for that username' )
212214 error . statusCode = 400
213215 throw error
214216 }
@@ -217,7 +219,7 @@ class LoginByPasswordRequest {
217219 } )
218220 . then ( validUser => {
219221 if ( ! validUser ) {
220- error = new TypeError ( 'User found but no password found' )
222+ error = new Error ( 'User found but no password found' )
221223 error . statusCode = 400
222224 throw error
223225 }
0 commit comments