@@ -203,7 +203,7 @@ protected Application getApplication(HttpServletRequest request) {
203203 /**
204204 * @since 1.0.RC8.3
205205 */
206- private AccessTokenResult tokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) throws Exception {
206+ protected AccessTokenResult tokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) throws Exception {
207207
208208 OAuthGrantRequestAuthenticationResult authenticationResult ;
209209
@@ -224,7 +224,7 @@ private AccessTokenResult tokenAuthenticationRequest(HttpServletRequest request,
224224 /**
225225 * @since 1.0.RC8.3
226226 */
227- private AccessTokenResult refreshTokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) throws Exception {
227+ protected AccessTokenResult refreshTokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) throws Exception {
228228
229229 OAuthGrantRequestAuthenticationResult authenticationResult ;
230230
@@ -246,7 +246,7 @@ private AccessTokenResult refreshTokenAuthenticationRequest(HttpServletRequest r
246246 /**
247247 * @since 1.0.0
248248 */
249- private AccessTokenResult clientCredentialsAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
249+ protected AccessTokenResult clientCredentialsAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
250250 OAuthGrantRequestAuthenticationResult authenticationResult ;
251251
252252 try {
@@ -273,7 +273,7 @@ private AccessTokenResult clientCredentialsAuthenticationRequest(HttpServletRequ
273273 /**
274274 * @since 1.1.0
275275 */
276- private AccessTokenResult stormpathSocialAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
276+ protected AccessTokenResult stormpathSocialAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
277277 OAuthGrantRequestAuthenticationResult authenticationResult ;
278278
279279 try {
@@ -310,7 +310,7 @@ private OAuthException convertToOAuthException(ResourceException e, OAuthErrorCo
310310 return new OAuthException (oauthError , message );
311311 }
312312
313- private AccessTokenResult stormpathTokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
313+ protected AccessTokenResult stormpathTokenAuthenticationRequest (HttpServletRequest request , HttpServletResponse response ) {
314314 OAuthGrantRequestAuthenticationResult authenticationResult ;
315315
316316 try {
@@ -338,7 +338,6 @@ protected ViewModel doPost(HttpServletRequest request, HttpServletResponse respo
338338
339339 String json ;
340340
341- AuthenticationRequest authcRequest = null ;
342341 AccessTokenResult result ;
343342
344343 try {
@@ -355,48 +354,15 @@ protected ViewModel doPost(HttpServletRequest request, HttpServletResponse respo
355354
356355 grantTypeValidator .validate (grantType );
357356
358- switch (grantType ) {
359- case PASSWORD_GRANT_TYPE :
360- result = this .tokenAuthenticationRequest (request , response );
361- break ;
362- case REFRESH_TOKEN_GRANT_TYPE :
363- result = this .refreshTokenAuthenticationRequest (request , response );
364- break ;
365- case CLIENT_CREDENTIALS_GRANT_TYPE :
366- try {
367- result = this .clientCredentialsAuthenticationRequest (request , response );
368- } catch (HttpAuthenticationException e ) {
369- log .warn ("Unable to authenticate client" , e );
370- throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
371- }
372- break ;
373- case STORMPATH_SOCIAL_GRANT_TYPE :
374- try {
375- result = this .stormpathSocialAuthenticationRequest (request , response );
376- } catch (HttpAuthenticationException e ) {
377- log .warn ("Unable to authenticate client" , e );
378- throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
379- }
380- break ;
381- case STORMPATH_TOKEN_GRANT_TYPE :
382- try {
383- result = this .stormpathTokenAuthenticationRequest (request , response );
384- } catch (HttpAuthenticationException ex ) {
385- log .warn ("Unable to authenticate client" , ex );
386- throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
387- }
388- break ;
389- default :
390- throw new OAuthException (OAuthErrorCode .UNSUPPORTED_GRANT_TYPE , "'" + grantType + "' is an unsupported grant type." );
391- }
357+ result = getAccessTokenResult (grantType , request , response );
392358
393359 saveResult (request , response , result );
394360
395361 json = result .getTokenResponse ().toJson ();
396362
397363 response .setStatus (HttpServletResponse .SC_OK );
398364
399- SuccessfulAuthenticationRequestEvent e = createSuccessEvent (request , response , authcRequest , result );
365+ SuccessfulAuthenticationRequestEvent e = createSuccessEvent (request , response , null , result );
400366 publish (e );
401367
402368 } catch (OAuthException e ) {
@@ -413,7 +379,7 @@ protected ViewModel doPost(HttpServletRequest request, HttpServletResponse respo
413379
414380 try {
415381 FailedAuthenticationRequestEvent evt =
416- new DefaultFailedAuthenticationRequestEvent (request , response , authcRequest , e );
382+ new DefaultFailedAuthenticationRequestEvent (request , response , null , e );
417383 publish (evt );
418384 } catch (Throwable t ) {
419385 log .warn (
@@ -434,6 +400,51 @@ protected ViewModel doPost(HttpServletRequest request, HttpServletResponse respo
434400 return null ;
435401 }
436402
403+ /**
404+ * Get the AccessTokenResult given the specified grantType. The request authorization and support for the grantType
405+ * will already have been validated.
406+ *
407+ * @since 1.3.0
408+ */
409+ protected AccessTokenResult getAccessTokenResult (String grantType , HttpServletRequest request , HttpServletResponse response ) throws Exception {
410+ AccessTokenResult result ;
411+ switch (grantType ) {
412+ case PASSWORD_GRANT_TYPE :
413+ result = this .tokenAuthenticationRequest (request , response );
414+ break ;
415+ case REFRESH_TOKEN_GRANT_TYPE :
416+ result = this .refreshTokenAuthenticationRequest (request , response );
417+ break ;
418+ case CLIENT_CREDENTIALS_GRANT_TYPE :
419+ try {
420+ result = this .clientCredentialsAuthenticationRequest (request , response );
421+ } catch (HttpAuthenticationException e ) {
422+ log .warn ("Unable to authenticate client" , e );
423+ throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
424+ }
425+ break ;
426+ case STORMPATH_SOCIAL_GRANT_TYPE :
427+ try {
428+ result = this .stormpathSocialAuthenticationRequest (request , response );
429+ } catch (HttpAuthenticationException e ) {
430+ log .warn ("Unable to authenticate client" , e );
431+ throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
432+ }
433+ break ;
434+ case STORMPATH_TOKEN_GRANT_TYPE :
435+ try {
436+ result = this .stormpathTokenAuthenticationRequest (request , response );
437+ } catch (HttpAuthenticationException ex ) {
438+ log .warn ("Unable to authenticate client" , ex );
439+ throw new OAuthException (OAuthErrorCode .INVALID_CLIENT );
440+ }
441+ break ;
442+ default :
443+ throw new OAuthException (OAuthErrorCode .UNSUPPORTED_GRANT_TYPE , "'" + grantType + "' is an unsupported grant type." );
444+ }
445+ return result ;
446+ }
447+
437448 protected SuccessfulAuthenticationRequestEvent createSuccessEvent (HttpServletRequest request ,
438449 HttpServletResponse response ,
439450 AuthenticationRequest authcRequest ,
0 commit comments