Moved authentication related activities to sse.security.ui

This commit is contained in:
Steffen Schaefer committed 2016-01-26 11:16:02 +01:00
1 parent 9a924fcff0
commit edb4728da6
6 files changed
+10 -16

No files matched your search

@@ -0,0 +1,25 @@
package com.sap.sse.security.ui.authentication.confirm;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sse.security.ui.client.i18n.StringMessages;
public class ConfirmationInfoActivity extends AbstractActivity implements ConfirmationInfoView.Presenter {
private final ConfirmationInfoPlace place;
private final ConfirmationInfoView view;
private final StringMessages i18n_sec = StringMessages.INSTANCE;
public ConfirmationInfoActivity(ConfirmationInfoPlace place, ConfirmationInfoView view) {
this.place = place;
this.view = view;
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
panel.setWidget(view);
view.setMessage(place.getAction().getMessage(i18n_sec, place.getName()));
}
}
@@ -0,0 +1,125 @@
package com.sap.sse.security.ui.authentication.create;
import static com.sap.sse.security.shared.UserManagementException.USER_ALREADY_EXISTS;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sse.security.shared.UserManagementException;
import com.sap.sse.security.ui.authentication.AsyncLoginCallback;
import com.sap.sse.security.ui.authentication.AuthenticationCallback;
import com.sap.sse.security.ui.authentication.AuthenticationClientFactory;
import com.sap.sse.security.ui.authentication.confirm.ConfirmationInfoPlace;
import com.sap.sse.security.ui.authentication.confirm.ConfirmationInfoPlace.Action;
import com.sap.sse.security.ui.authentication.signin.SignInPlace;
import com.sap.sse.security.ui.client.component.NewAccountValidator;
import com.sap.sse.security.ui.client.i18n.StringMessages;
import com.sap.sse.security.ui.shared.UserDTO;
public class CreateAccountActivity extends AbstractActivity implements CreateAccountView.Presenter {
private final AuthenticationClientFactory clientFactory;
private final PlaceController placeController;
private final CreateAccountView view;
private final StringMessages i18n_sec = StringMessages.INSTANCE;
private final CreateAccountFormValues values = new CreateAccountFormValues();
private final AuthenticationCallback callback;
public CreateAccountActivity(CreateAccountView view, AuthenticationClientFactory clientFactory,
AuthenticationCallback callback, PlaceController placeController) {
this.view = view;
this.clientFactory = clientFactory;
this.callback = callback;
this.placeController = placeController;
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
view.setPresenter(this);
panel.setWidget(view);
values.validate();
}
@Override
public void createAccount() {
if (values.validate()) {
clientFactory.getUserManagementService().createSimpleUser(values.username, values.email,
values.password, values.fullName, values.company, callback.getCreateConfirmationUrl(),
new AsyncCallback<UserDTO>() {
@Override
public void onSuccess(final UserDTO result) {
clientFactory.getUserManagementService().login(result.getName(), values.password,
new AsyncLoginCallback(clientFactory.getAuthenticationManager(), view, callback, false));
placeController.goTo(new ConfirmationInfoPlace(Action.ACCOUNT_CREATED, result.getName()));
}
@Override
public void onFailure(Throwable caught) {
if (caught instanceof UserManagementException) {
if (USER_ALREADY_EXISTS.equals(((UserManagementException) caught).getMessage())) {
Window.alert(i18n_sec.userAlreadyExists(values.username));
}
} else {
Window.alert(i18n_sec.errorCreatingUser(values.username, caught.getMessage()));
}
}
});
}
}
@Override
public void onChangeEmail(String newValue) {
values.email = newValue;
}
@Override
public void onChangeUsername(String newValue) {
values.username = newValue;
values.validate();
}
@Override
public void onChangeFullName(String newValue) {
values.fullName = newValue;
}
@Override
public void onChangeCompany(String newValue) {
values.company = newValue;
}
@Override
public void onChangePassword(String newValue) {
values.password = newValue;
values.validate();
}
@Override
public void onChangePasswordConfirmation(String newValue) {
values.passwordConfirmation = newValue;
values.validate();
}
@Override
public void signIn() {
placeController.goTo(new SignInPlace());
}
private class CreateAccountFormValues {
private final NewAccountValidator validator = new NewAccountValidator(i18n_sec);
private String username, fullName, company, email, password, passwordConfirmation;
private boolean validate() {
String errorMessage = validator.validateUsernameAndPassword(username, password, passwordConfirmation);
boolean isValid = errorMessage == null || errorMessage.isEmpty();
view.setErrorMessage(isValid ? null : errorMessage);
view.getCreateAccountControl().setEnabled(isValid);
return isValid;
}
}
}
@@ -0,0 +1,70 @@
package com.sap.sse.security.ui.authentication.info;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sse.security.ui.authentication.AuthenticationClientFactory;
import com.sap.sse.security.ui.authentication.AuthenticationContextEvent;
import com.sap.sse.security.ui.authentication.AuthenticationRequestEvent;
import com.sap.sse.security.ui.authentication.signin.SignInPlace;
import com.sap.sse.security.ui.shared.SuccessInfo;
public class LoggedInUserInfoActivity extends AbstractActivity implements LoggedInUserInfoView.Presenter {
private final AuthenticationClientFactory clientFactory;
private final PlaceController placeController;
private final LoggedInUserInfoView view;
private final Callback callback;
private EventBus eventBus;
public LoggedInUserInfoActivity(LoggedInUserInfoView view, AuthenticationClientFactory clientFactory,
LoggedInUserInfoView.Presenter.Callback callback, PlaceController placeController) {
this.view = view;
this.clientFactory = clientFactory;
this.placeController = placeController;
this.callback = callback;
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
this.eventBus = eventBus;
view.setPresenter(this);
panel.setWidget(view);
view.setUserInfo(clientFactory.getAuthenticationManager().getAuthenticationContext());
eventBus.addHandler(AuthenticationContextEvent.TYPE, new AuthenticationContextEvent.Handler() {
@Override
public void onUserChangeEvent(AuthenticationContextEvent event) {
if (event.getCtx().isLoggedIn()) {
view.setUserInfo(event.getCtx());
} else {
placeController.goTo(new SignInPlace());
}
}
});
}
@Override
public void gotoProfileUi() {
eventBus.fireEvent(new AuthenticationRequestEvent());
callback.handleUserProfileNavigation();
}
@Override
public void signOut() {
clientFactory.getUserManagementService().logout(new AsyncCallback<SuccessInfo>() {
@Override
public void onSuccess(SuccessInfo result) {
clientFactory.getAuthenticationManager().didLogout();
}
@Override
public void onFailure(Throwable caught) {
clientFactory.getAuthenticationManager().didLogout();
}
});
}
}
@@ -0,0 +1,62 @@
package com.sap.sse.security.ui.authentication.recover;
import static com.sap.sse.security.shared.UserManagementException.CANNOT_RESET_PASSWORD_WITHOUT_VALIDATED_EMAIL;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sse.security.shared.UserManagementException;
import com.sap.sse.security.ui.authentication.AuthenticationClientFactory;
import com.sap.sse.security.ui.authentication.confirm.ConfirmationInfoPlace;
import com.sap.sse.security.ui.authentication.confirm.ConfirmationInfoPlace.Action;
import com.sap.sse.security.ui.client.i18n.StringMessages;
public class PasswordRecoveryActivity extends AbstractActivity implements PasswordRecoveryView.Presenter {
private final AuthenticationClientFactory clientFactory;
private final PlaceController placeController;
private final PasswordRecoveryView view;
private final Callback callback;
public PasswordRecoveryActivity(PasswordRecoveryView view, AuthenticationClientFactory clientFactory,
PasswordRecoveryView.Presenter.Callback callback, PlaceController placeController) {
this.view = view;
this.clientFactory = clientFactory;
this.placeController = placeController;
this.callback = callback;
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
view.setPresenter(this);
panel.setWidget(view);
}
@Override
public void resetPassword(final String email, final String username) {
clientFactory.getUserManagementService().resetPassword(username, email, callback.getPasswordResetUrl(),
new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
String name = (username == null || username.isEmpty()) ? email : username;
placeController.goTo(new ConfirmationInfoPlace(Action.RESET_REQUESTED, name));
}
@Override
public void onFailure(Throwable caught) {
StringMessages i18n = StringMessages.INSTANCE;
if (caught instanceof UserManagementException) {
if (CANNOT_RESET_PASSWORD_WITHOUT_VALIDATED_EMAIL.equals(caught.getMessage())) {
view.setErrorMessage(i18n.cannotResetPasswordWithoutValidatedEmail(username));
} else {
view.setErrorMessage(i18n.errorResettingPassword(username, caught.getMessage()));
}
} else {
view.setErrorMessage(i18n.errorDuringPasswordReset(caught.getMessage()));
}
}
});
}
}
@@ -0,0 +1,70 @@
package com.sap.sse.security.ui.authentication.signin;
import com.google.gwt.activity.shared.AbstractActivity;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.sap.sse.security.ui.authentication.AsyncLoginCallback;
import com.sap.sse.security.ui.authentication.AuthenticationCallback;
import com.sap.sse.security.ui.authentication.AuthenticationClientFactory;
import com.sap.sse.security.ui.authentication.AuthenticationContextEvent;
import com.sap.sse.security.ui.authentication.create.CreateAccountPlace;
import com.sap.sse.security.ui.authentication.info.LoggedInUserInfoPlace;
import com.sap.sse.security.ui.authentication.recover.PasswordRecoveryPlace;
public class SignInActivity extends AbstractActivity implements SignInView.Presenter {
private final AuthenticationClientFactory clientFactory;
private final PlaceController placeController;
private final SignInView view;
private final AuthenticationCallback callback;
public SignInActivity(SignInView view, AuthenticationClientFactory clientFactory,
AuthenticationCallback callback, PlaceController placeController) {
this.clientFactory = clientFactory;
this.placeController = placeController;
this.view = view;
this.callback = callback;
}
@Override
public void start(AcceptsOneWidget panel, EventBus eventBus) {
view.setPresenter(this);
panel.setWidget(view);
eventBus.addHandler(AuthenticationContextEvent.TYPE, new AuthenticationContextEvent.Handler() {
@Override
public void onUserChangeEvent(AuthenticationContextEvent event) {
if (event.getCtx().isLoggedIn()) {
placeController.goTo(new LoggedInUserInfoPlace());
}
}
});
}
@Override
public void login(String loginName, String password) {
clientFactory.getUserManagementService().login(loginName, password,
new AsyncLoginCallback(clientFactory.getAuthenticationManager(), view, callback, true));
}
@Override
public void createAccount() {
placeController.goTo(new CreateAccountPlace());
}
@Override
public void forgotPassword() {
placeController.goTo(new PasswordRecoveryPlace());
}
@Override
public void loginWithFacebook() {
// TODO not supported yet
}
@Override
public void loginWithGoogle() {
// TODO not supported yet
}
}