mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 10:23:51 +00:00
restore selection after updating the user list; fixed validation success messages
This commit is contained in:
1 parent
26464239b5
commit
fb7ac8b983
10 files changed
+64
-21
No files matched your search
+2
@@ -129,4 +129,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||
|
||||
String failedToSignIn();
|
||||
|
||||
String emailValidationUnsuccessful(String username);
|
||||
|
||||
}
|
||||
+2
-1
@@ -59,4 +59,5 @@ errorValidatingEmail=Error validating e-mail address of user {0}: {1}
|
||||
emailValidatedSuccessfully=e-mail address of user {0} validated successfully
|
||||
errorResettingPassword=Error resetting password for user {0}: {1}
|
||||
successfullyResetPassword=Successfully reset password for user {0}. e-Mail has been sent.
|
||||
failedToSignIn=Failed to sign in. Check your credentials.
|
||||
failedToSignIn=Failed to sign in. Check your credentials.
|
||||
emailValidationUnsuccessful=Validation of e-mail address for user {0} failed. Did you really use the latest validation code?
|
||||
+2
-1
@@ -59,4 +59,5 @@ errorValidatingEmail=Fehler beim Validieren der e-Mail-Adresse für Benutzer {0}
|
||||
emailValidatedSuccessfully=e-Mail-Adresse für Benutzer {0} erfolgreich validiert
|
||||
errorResettingPassword=Fehler beim Zurücksetzen des Passworts für Benutzer {0}: {1}
|
||||
successfullyResetPassword=Passwort für Benutzer {0} erfolgreich zurückgesetzt. e-Mail wurde versendet.
|
||||
failedToSignIn=Anmeldung fehlgeschlagen. Zugangsdaten überprüfen.
|
||||
failedToSignIn=Anmeldung fehlgeschlagen. Zugangsdaten überprüfen.
|
||||
emailValidationUnsuccessful=Validierung der e-Mail-Adresse für Benutzer {0} fehlgeschlagen. Handelte es sich wirklich um den zuletzt ausgestellten Validierungs-Code?
|
||||
+6
-2
@@ -92,10 +92,11 @@ public class UserDetailsView extends FlowPanel {
|
||||
changeEmail.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new EditEmailDialog(stringMessages, userManagementService, UserDetailsView.this.user, new DialogCallback<UserData>() {
|
||||
final UserDTO clickedUser = UserDetailsView.this.user;
|
||||
new EditEmailDialog(stringMessages, userManagementService, clickedUser, new DialogCallback<UserData>() {
|
||||
@Override
|
||||
public void ok(final UserData userData) {
|
||||
userManagementService.updateSimpleUserEmail(UserDetailsView.this.user.getName(), userData.getEmail(), new MarkedAsyncCallback<Void>(
|
||||
userManagementService.updateSimpleUserEmail(clickedUser.getName(), userData.getEmail(), new MarkedAsyncCallback<Void>(
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
@@ -105,6 +106,9 @@ public class UserDetailsView extends FlowPanel {
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
emailLabel.setText(userData.getEmail());
|
||||
for (UserChangeEventHandler handler : handlers) {
|
||||
handler.onUserChange(clickedUser);
|
||||
}
|
||||
Window.alert(stringMessages.successfullyUpdatedEmail());
|
||||
}
|
||||
}));
|
||||
|
||||
+28
-3
@@ -2,7 +2,11 @@ package com.sap.sse.security.ui.client.component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
@@ -10,6 +14,7 @@ import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.view.client.AbstractDataProvider;
|
||||
import com.google.gwt.view.client.HasData;
|
||||
import com.google.gwt.view.client.Range;
|
||||
import com.google.gwt.view.client.SelectionModel;
|
||||
import com.sap.sse.security.ui.shared.UserDTO;
|
||||
import com.sap.sse.security.ui.shared.UserManagementServiceAsync;
|
||||
|
||||
@@ -24,7 +29,7 @@ public class UserListDataProvider extends AbstractDataProvider<UserDTO> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onRangeChanged(HasData<UserDTO> display) {
|
||||
protected void onRangeChanged(final HasData<UserDTO> display) {
|
||||
final Range range = display.getVisibleRange();
|
||||
userManagementService.getFilteredSortedUserList(filterBox.getText(), new AsyncCallback<Collection<UserDTO>>() {
|
||||
@Override
|
||||
@@ -38,15 +43,35 @@ public class UserListDataProvider extends AbstractDataProvider<UserDTO> {
|
||||
List<UserDTO> show = new ArrayList<>();
|
||||
int start = range.getStart();
|
||||
int end = range.getStart() + range.getLength();
|
||||
for (int i = start; i < end && i < resultList.size(); i++){
|
||||
show.add(resultList.get(i));
|
||||
final SelectionModel<? super UserDTO> selectionModel = display.getSelectionModel();
|
||||
Map<String, UserDTO> oldSelection = getSelectionByUsername(display, selectionModel);
|
||||
Set<UserDTO> toSelect = new HashSet<>();
|
||||
for (int i = start; i < end && i < resultList.size(); i++) {
|
||||
final UserDTO e = resultList.get(i);
|
||||
show.add(e);
|
||||
if (oldSelection.containsKey(e.getName())) {
|
||||
toSelect.add(e);
|
||||
}
|
||||
}
|
||||
updateRowData(start, show);
|
||||
updateRowCount(result.size(), true);
|
||||
for (UserDTO userToSelect : toSelect) {
|
||||
selectionModel.setSelected(userToSelect, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Map<String, UserDTO> getSelectionByUsername(HasData<UserDTO> display, SelectionModel<? super UserDTO> selectionModel) {
|
||||
Map<String, UserDTO> result = new HashMap<>();
|
||||
for (UserDTO user : display.getVisibleItems()) {
|
||||
if (selectionModel.isSelected(user)) {
|
||||
result.put(user.getName(), user);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void updateDisplays() {
|
||||
for (HasData<UserDTO> hd : getDataDisplays()) {
|
||||
onRangeChanged(hd);
|
||||
|
||||
+7
-3
@@ -27,15 +27,19 @@ public class EmailValidationEntryPoint implements EntryPoint {
|
||||
final String validationSecret = Window.Location.getParameter("v");
|
||||
RootLayoutPanel rootPanel = RootLayoutPanel.get();
|
||||
final Label resultLabel = new Label();
|
||||
userManagementService.validateEmail(username, validationSecret, new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
|
||||
userManagementService.validateEmail(username, validationSecret, new MarkedAsyncCallback<Boolean>(new AsyncCallback<Boolean>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
resultLabel.setText(stringMessages.errorValidatingEmail(username, caught.getMessage()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
resultLabel.setText(stringMessages.emailValidatedSuccessfully(username));
|
||||
public void onSuccess(Boolean result) {
|
||||
if (result) {
|
||||
resultLabel.setText(stringMessages.emailValidatedSuccessfully(username));
|
||||
} else {
|
||||
resultLabel.setText(stringMessages.emailValidationUnsuccessful(username));
|
||||
}
|
||||
}
|
||||
}));
|
||||
rootPanel.add(resultLabel);
|
||||
|
||||
+2
-2
@@ -173,8 +173,8 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validateEmail(String username, String validationSecret) throws UserManagementException {
|
||||
getSecurityService().validateEmail(username, validationSecret);
|
||||
public boolean validateEmail(String username, String validationSecret) throws UserManagementException {
|
||||
return getSecurityService().validateEmail(username, validationSecret);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ public interface UserManagementService extends RemoteService {
|
||||
|
||||
void resetPassword(String username) throws UserManagementException, MailException;
|
||||
|
||||
void validateEmail(String username, String validationSecret) throws UserManagementException;
|
||||
boolean validateEmail(String username, String validationSecret) throws UserManagementException;
|
||||
|
||||
SuccessInfo deleteUser(String username);
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ public interface UserManagementServiceAsync {
|
||||
|
||||
void resetPassword(String username, AsyncCallback<Void> callback);
|
||||
|
||||
void validateEmail(String username, String validationSecret, AsyncCallback<Void> markedAsyncCallback);
|
||||
void validateEmail(String username, String validationSecret, AsyncCallback<Boolean> markedAsyncCallback);
|
||||
|
||||
void updateSimpleUserEmail(String username, String newEmail, AsyncCallback<Void> callback);
|
||||
|
||||
|
||||
@@ -283,18 +283,24 @@ public class SecurityServiceImpl extends RemoteServiceServlet implements Securit
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSimpleUserEmail(String username, String newEmail) throws UserManagementException, MailException {
|
||||
public void updateSimpleUserEmail(final String username, final String newEmail) throws UserManagementException, MailException {
|
||||
final User user = store.getUserByName(username);
|
||||
if (user == null) {
|
||||
throw new UserManagementException(UserManagementException.USER_DOES_NOT_EXIST);
|
||||
}
|
||||
logger.info("Changing e-mail address of user "+username+" to "+newEmail);
|
||||
user.setEmail(newEmail);
|
||||
try {
|
||||
startEmailValidation(user);
|
||||
} catch (MailException e) {
|
||||
logger.log(Level.SEVERE, "Error sending mail to validate e-mail address change for user "+username+
|
||||
" to address "+newEmail, e);
|
||||
}
|
||||
new Thread("e-mail validation after changing e-mail of user " + username + " to " + newEmail) {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
startEmailValidation(user);
|
||||
} catch (MailException e) {
|
||||
logger.log(Level.SEVERE, "Error sending mail to validate e-mail address change for user "
|
||||
+ username + " to address " + newEmail, e);
|
||||
}
|
||||
}
|
||||
}.start();
|
||||
store.updateUser(user);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user