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

Commit 64fba97

Browse files
author
Mario
committed
1242 - Pre and Post handlers added to IDSite outbound and inbound
1 parent f699791 commit 64fba97

File tree

7 files changed

+59
-6
lines changed

7 files changed

+59
-6
lines changed

extensions/servlet/src/main/java/com/stormpath/sdk/servlet/config/filter/IDSiteLoginFilterFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,6 @@ protected IdSiteController newController() {
3131
public void doConfigure(IdSiteController controller, Config config) {
3232
controller.setIdSiteUri(config.get("stormpath.web.idSite.loginUri"));
3333
controller.setNextUri(config.get("stormpath.web.login.nextUri"));
34+
controller.setPreLoginHandler(config.getLoginPreHandler());
3435
}
3536
}

extensions/servlet/src/main/java/com/stormpath/sdk/servlet/config/filter/IDSiteRegisterFilterFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ protected IdSiteController newController() {
3232
public void doConfigure(IdSiteController controller, Config config) {
3333
controller.setIdSiteUri(config.get("stormpath.web.idSite.registerUri"));
3434
controller.setNextUri(config.get("stormpath.web.register.nextUri"));
35+
controller.setPreRegisterHandler(config.getRegisterPreHandler());
3536
}
3637

3738
}

extensions/servlet/src/main/java/com/stormpath/sdk/servlet/config/filter/IDSiteResultFilterFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ protected IdSiteResultController newController() {
3131
@Override
3232
public void doConfigure(IdSiteResultController controller, Config config) {
3333
controller.setRegisterNextUri(config.getRegisterConfig().getNextUri());
34+
controller.setPostRegisterHandler(config.getRegisterPostHandler());
35+
controller.setPostLoginHandler(config.getLoginPostHandler());
3436
}
3537

3638
}

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.stormpath.sdk.authc.AuthenticationResult;
2020
import com.stormpath.sdk.idsite.LogoutResult;
2121
import com.stormpath.sdk.lang.Assert;
22-
import com.stormpath.sdk.lang.Strings;
2322
import com.stormpath.sdk.saml.SamlResultListener;
2423
import com.stormpath.sdk.servlet.application.ApplicationResolver;
2524
import com.stormpath.sdk.servlet.authc.impl.DefaultSuccessfulAuthenticationRequestEvent;
@@ -43,6 +42,8 @@ public abstract class CallbackController extends AbstractController {
4342
protected Saver<AuthenticationResult> authenticationResultSaver;
4443
protected Publisher<RequestEvent> eventPublisher;
4544
protected List<SamlResultListener> samlResultListeners = new ArrayList<SamlResultListener>();
45+
protected WebHandler postLoginHandler;
46+
protected WebHandler postRegisterHandler;
4647

4748
public void setLoginNextUri(String loginNextUri) {
4849
this.loginNextUri = loginNextUri;
@@ -106,6 +107,12 @@ protected ViewModel onAuthentication(HttpServletRequest request,
106107

107108
publish(new DefaultSuccessfulAuthenticationRequestEvent(request, response, null, authcResult));
108109

110+
if (postLoginHandler != null) {
111+
if (!postLoginHandler.handle(request, response, result.getAccount())) {
112+
return null;
113+
}
114+
}
115+
109116
return new DefaultViewModel(loginNextUri).setRedirect(true);
110117
}
111118

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ public class IdSiteController extends AbstractController {
4040

4141
private Resolver<IdSiteOrganizationContext> idSiteOrganizationResolver;
4242

43+
protected WebHandler preRegisterHandler;
44+
protected WebHandler preLoginHandler;
45+
4346
public void setServerUriResolver(ServerUriResolver serverUriResolver) {
4447
this.serverUriResolver = serverUriResolver;
4548
}
@@ -65,13 +68,22 @@ public void init() {
6568
Assert.notNull(callbackUri, "callbackUri must be configured.");
6669
Assert.notNull(idSiteOrganizationResolver, "idSiteOrganizationResolver must be configured.");
6770
Assert.notNull(alreadyLoggedInUri, "alreadyLoggedInUri must be configured.");
71+
Assert.isTrue(preRegisterHandler != null ^ preLoginHandler != null || (preRegisterHandler == null && preLoginHandler == null), "This IDSite controller should have only one of preRegisterHandler and preLoginHandler");
6872
}
6973

7074
@Override
7175
public boolean isNotAllowedIfAuthenticated() {
7276
return false;
7377
}
7478

79+
public void setPreLoginHandler(WebHandler preLoginHandler) {
80+
this.preLoginHandler = preLoginHandler;
81+
}
82+
83+
public void setPreRegisterHandler(WebHandler preRegisterHandler) {
84+
this.preRegisterHandler = preRegisterHandler;
85+
}
86+
7587
protected Application getApplication(HttpServletRequest request) {
7688
return ApplicationResolver.INSTANCE.getApplication(request);
7789
}
@@ -96,6 +108,16 @@ protected String buildCallbackUri(HttpServletRequest request) {
96108
@Override
97109
protected ViewModel doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
98110

111+
if (preLoginHandler != null) {
112+
if (!preLoginHandler.handle(request, response, null)) {
113+
return null;
114+
}
115+
} else if (preRegisterHandler != null) {
116+
if (!preRegisterHandler.handle(request, response, null)) {
117+
return null;
118+
}
119+
}
120+
99121
//Let's redirect to "alreadyLoggedInUri" if the user is already logged in
100122
if (AccountResolver.INSTANCE.getAccount(request) != null) {
101123
return new DefaultViewModel(alreadyLoggedInUri).setRedirect(true);

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

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.stormpath.sdk.application.Application;
2121
import com.stormpath.sdk.authc.AuthenticationResult;
2222
import com.stormpath.sdk.client.Client;
23+
import com.stormpath.sdk.idsite.AccountResult;
2324
import com.stormpath.sdk.idsite.IdSiteCallbackHandler;
2425
import com.stormpath.sdk.idsite.IdSiteResultListener;
2526
import com.stormpath.sdk.idsite.LogoutResult;
@@ -106,7 +107,7 @@ public void onLogout(LogoutResult result) {
106107
idSiteCallbackHandler.addResultListener(resultListener);
107108
}
108109

109-
idSiteCallbackHandler.getAccountResult();
110+
AccountResult accountResult = idSiteCallbackHandler.getAccountResult();
110111

111112
return viewModel[0];
112113
}
@@ -126,7 +127,12 @@ private ViewModel onRegistration(final HttpServletRequest request, final HttpSer
126127
AuthenticationResult authcResult = new TransientAuthenticationResult(account);
127128
saveResult(request, response, authcResult);
128129
}
129-
// else - do we need to do anything else?
130+
131+
if (postRegisterHandler != null) {
132+
if (!postRegisterHandler.handle(request, response, account)) {
133+
return null;
134+
}
135+
}
130136

131137
//just redirect to post-register view:
132138
return new DefaultViewModel(registerNextUri).setRedirect(true);
@@ -136,4 +142,12 @@ private RegisteredAccountRequestEvent createRegisteredEvent(HttpServletRequest r
136142
HttpServletResponse response, Account account) {
137143
return new DefaultRegisteredAccountRequestEvent(request, response, account);
138144
}
145+
146+
public void setPostRegisterHandler(WebHandler postRegisterHandler) {
147+
this.postRegisterHandler = postRegisterHandler;
148+
}
149+
150+
public void setPostLoginHandler(WebHandler postLoginHandler) {
151+
this.postLoginHandler = postLoginHandler;
152+
}
139153
}

extensions/spring/stormpath-spring-webmvc/src/main/java/com/stormpath/spring/config/AbstractStormpathWebMvcConfiguration.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,7 @@ public Resolver<SamlOrganizationContext> stormpathSamlOrganizationResolver() {
909909
return resolver;
910910
}
911911

912-
protected Controller createIdSiteController(String idSiteUri) {
912+
protected IdSiteController createIdSiteController(String idSiteUri) {
913913
IdSiteController controller = new IdSiteController();
914914
controller.setServerUriResolver(stormpathServerUriResolver());
915915
controller.setIdSiteUri(idSiteUri);
@@ -962,7 +962,9 @@ public ControllerConfig stormpathLoginConfig() {
962962
public Controller stormpathLoginController() {
963963

964964
if (idSiteEnabled) {
965-
return createIdSiteController(idSiteLoginUri);
965+
IdSiteController controller = createIdSiteController(idSiteLoginUri);
966+
controller.setPreLoginHandler(loginPreHandler);
967+
return controller;
966968
}
967969

968970
//otherwise standard login controller:
@@ -1094,7 +1096,9 @@ public ControllerConfig stormpathRegisterConfig() {
10941096
public Controller stormpathRegisterController() {
10951097

10961098
if (idSiteEnabled) {
1097-
return createIdSiteController(idSiteRegisterUri);
1099+
IdSiteController controller = createIdSiteController(idSiteRegisterUri);
1100+
controller.setPreRegisterHandler(registerPreHandler);
1101+
return controller;
10981102
}
10991103

11001104
//otherwise standard registration:
@@ -1202,6 +1206,8 @@ public Controller stormpathIdSiteResultController() {
12021206
if (springSecurityIdSiteResultListener != null) {
12031207
controller.addIdSiteResultListener(springSecurityIdSiteResultListener);
12041208
}
1209+
controller.setPostLoginHandler(loginPostHandler);
1210+
controller.setPostRegisterHandler(registerPostHandler);
12051211
controller.init();
12061212
return controller;
12071213
}

0 commit comments

Comments
 (0)