Skip to content
This repository was archived by the owner on Dec 12, 2018. It is now read-only.

Commit 3865e15

Browse files
author
Jason
authored
Refactor AccessTokenController to allow easier extension (#1191)
stormpath-sdk-java-1190, #1991 Refactor AccessTokenController to allow easier extension
1 parent e2561c8 commit 3865e15

File tree

1 file changed

+53
-42
lines changed

1 file changed

+53
-42
lines changed

extensions/servlet/src/main/java/com/stormpath/sdk/servlet/mvc/AccessTokenController.java

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)