mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-20 19:20:04 +00:00
Bug 4228: Moved the logic triggering the user hint about login to
Authentication manager to be able to use this on other pages later
This commit is contained in:
1 parent
420552d92c
commit
492ecdb66b
5 files changed
+39
-69
No files matched your search
+7
-21
@@ -1,7 +1,5 @@
|
||||
package com.sap.sailing.gwt.home.desktop.app;
|
||||
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||
import com.google.gwt.event.shared.SimpleEventBus;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
@@ -41,9 +39,7 @@ import com.sap.sse.security.ui.authentication.WrappedPlaceManagementController;
|
||||
import com.sap.sse.security.ui.authentication.info.LoggedInUserInfoPlace;
|
||||
import com.sap.sse.security.ui.authentication.login.LoginPopup;
|
||||
import com.sap.sse.security.ui.authentication.view.FlyoutAuthenticationPresenter;
|
||||
import com.sap.sse.security.ui.client.UserStatusEventHandler;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
|
||||
|
||||
public class TabletAndDesktopApplicationClientFactory extends AbstractApplicationClientFactory<DesktopApplicationTopLevelView> implements DesktopClientFactory {
|
||||
@@ -84,23 +80,13 @@ public class TabletAndDesktopApplicationClientFactory extends AbstractApplicatio
|
||||
new FlyoutAuthenticationPresenter(userManagementDisplay, getTopLevelView().getAuthenticationMenuView(),
|
||||
userManagementWizardController, eventBus, authenticationManager.getAuthenticationContext());
|
||||
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
getUserService().addUserStatusEventHandler(new UserStatusEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onUserStatusChange(UserDTO user) {
|
||||
checkNewUserPopup(user, () -> new LoginPopup(() -> {
|
||||
setUserLoginHintToStorage();
|
||||
}, () -> {
|
||||
setUserLoginHintToStorage();
|
||||
placesNavigator.goToPlace(placesNavigator.getMoreLoginInfo());
|
||||
}).show());
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
authenticationManager.checkNewUserPopup(dismissCallback -> {
|
||||
new LoginPopup(() -> {
|
||||
dismissCallback.run();
|
||||
}, () -> {
|
||||
dismissCallback.run();
|
||||
placesNavigator.goToPlace(placesNavigator.getMoreLoginInfo());
|
||||
}).show();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+10
-27
@@ -1,7 +1,5 @@
|
||||
package com.sap.sailing.gwt.home.mobile.app;
|
||||
|
||||
import com.google.gwt.core.client.Scheduler;
|
||||
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
|
||||
import com.google.gwt.place.shared.Place;
|
||||
import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
@@ -34,9 +32,7 @@ import com.sap.sse.security.ui.authentication.WithAuthenticationManager;
|
||||
import com.sap.sse.security.ui.authentication.WithUserService;
|
||||
import com.sap.sse.security.ui.authentication.login.LoginPopupContent;
|
||||
import com.sap.sse.security.ui.client.SecureClientFactoryImpl;
|
||||
import com.sap.sse.security.ui.client.UserStatusEventHandler;
|
||||
import com.sap.sse.security.ui.client.i18n.StringMessages;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -75,29 +71,16 @@ public class MobileApplicationClientFactory extends
|
||||
.getMailVerifiedConfirmationNavigation().getFullQualifiedUrl(), getNavigator()
|
||||
.getPasswordResetNavigation().getFullQualifiedUrl());
|
||||
|
||||
|
||||
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
getUserService().addUserStatusEventHandler(new UserStatusEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onUserStatusChange(UserDTO user) {
|
||||
checkNewUserPopup(user, () -> {
|
||||
final LoginPopupContent content = new LoginPopupContent(() -> {
|
||||
root.setSubHeaderContent(null);
|
||||
setUserLoginHintToStorage();
|
||||
}, () -> {
|
||||
root.setSubHeaderContent(null);
|
||||
setUserLoginHintToStorage();
|
||||
navigator.goToPlace(navigator.getMoreLoginInfo());
|
||||
});
|
||||
root.setSubHeaderContent(content);
|
||||
});
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
authenticationManager.checkNewUserPopup(dismissCallback -> {
|
||||
final LoginPopupContent content = new LoginPopupContent(() -> {
|
||||
root.setSubHeaderContent(null);
|
||||
dismissCallback.run();
|
||||
}, () -> {
|
||||
root.setSubHeaderContent(null);
|
||||
dismissCallback.run();
|
||||
navigator.goToPlace(navigator.getMoreLoginInfo());
|
||||
});
|
||||
root.setSubHeaderContent(content);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -1,5 +1,7 @@
|
||||
package com.sap.sse.security.ui.authentication;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.sap.sse.security.ui.authentication.app.AuthenticationContext;
|
||||
import com.sap.sse.security.ui.shared.SuccessInfo;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
@@ -82,4 +84,6 @@ public interface AuthenticationManager {
|
||||
*/
|
||||
void onSuccess(T result);
|
||||
}
|
||||
|
||||
void checkNewUserPopup(Consumer<Runnable> showUserHintCallback);
|
||||
}
|
||||
+18
-2
@@ -3,6 +3,8 @@ package com.sap.sse.security.ui.authentication;
|
||||
import static com.sap.sse.security.shared.UserManagementException.CANNOT_RESET_PASSWORD_WITHOUT_VALIDATED_EMAIL;
|
||||
import static com.sap.sse.security.shared.UserManagementException.USER_ALREADY_EXISTS;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
@@ -39,8 +41,7 @@ public class AuthenticationManagerImpl implements AuthenticationManager {
|
||||
/**
|
||||
* Creates an {@link AuthenticationManagerImpl} instance based on the {@link UserService} and
|
||||
* {@link UserManagementServiceAsync} instances provided by the given {@link WithSecurity} instance.
|
||||
*
|
||||
* @param userService
|
||||
* * @param userService
|
||||
* the {@link UserService} instance to use
|
||||
* @param eventBus
|
||||
* the {@link EventBus} instance
|
||||
@@ -169,6 +170,21 @@ public class AuthenticationManagerImpl implements AuthenticationManager {
|
||||
return new AuthenticationContextImpl(userService.getCurrentUser());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkNewUserPopup(Consumer<Runnable> showUserHintCallback) {
|
||||
userService.addUserStatusEventHandler(new UserStatusEventHandler() {
|
||||
@Override
|
||||
public void onUserStatusChange(UserDTO user) {
|
||||
// We are only interested in the initial user
|
||||
userService.removeUserStatusEventHandler(this);
|
||||
|
||||
if (user == null && !userService.wasUserRecentlyLoggedInOrDismissedTheHint()) {
|
||||
showUserHintCallback.accept(userService::setUserLoginHintToStorage);
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
|
||||
private abstract class AsyncCallbackImpl<T> implements AsyncCallback<T> {
|
||||
|
||||
private final SuccessCallback<T> successCallback;
|
||||
|
||||
-19
@@ -5,7 +5,6 @@ import com.google.gwt.place.shared.PlaceController;
|
||||
import com.google.web.bindery.event.shared.EventBus;
|
||||
import com.sap.sse.gwt.client.mvp.ClientFactoryImpl;
|
||||
import com.sap.sse.gwt.client.mvp.TopLevelView;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
|
||||
/**
|
||||
* An implementation of a ClientFactory providing security services
|
||||
@@ -38,22 +37,4 @@ public abstract class SecureClientFactoryImpl<TLV extends TopLevelView> extends
|
||||
public UserService getUserService() {
|
||||
return securityProvider.getUserService();
|
||||
}
|
||||
|
||||
protected void checkNewUserPopup(UserDTO user, Runnable newUserRunnable) {
|
||||
if (user != null) {
|
||||
setUserLoginHintToStorage();
|
||||
} else {
|
||||
if (!wasUserRecentlyLoggedInOrDismissedTheHint()) {
|
||||
newUserRunnable.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean wasUserRecentlyLoggedInOrDismissedTheHint() {
|
||||
return getUserService().wasUserRecentlyLoggedInOrDismissedTheHint();
|
||||
}
|
||||
|
||||
public void setUserLoginHintToStorage() {
|
||||
getUserService().setUserLoginHintToStorage();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user