mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 01:01:02 +00:00
added UI support for managing user permissions
This commit is contained in:
1 parent
ebfb80479b
commit
6a8f4d4c89
9 files changed
+98
-7
No files matched your search
+39
-1
@@ -26,6 +26,7 @@ import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
|
||||
import com.sap.sse.gwt.client.controls.listedit.StringListEditorComposite;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
import com.sap.sse.security.shared.DefaultPermissions;
|
||||
import com.sap.sse.security.shared.DefaultRoles;
|
||||
import com.sap.sse.security.shared.UserManagementException;
|
||||
import com.sap.sse.security.ui.client.IconResources;
|
||||
@@ -48,6 +49,7 @@ public class UserDetailsView extends FlowPanel {
|
||||
private final Label usernameLabel;
|
||||
private final Label emailLabel;
|
||||
private final StringListEditorComposite rolesEditor;
|
||||
private final StringListEditorComposite permissionsEditor;
|
||||
private final VerticalPanel accountPanels;
|
||||
private UserDTO user;
|
||||
|
||||
@@ -60,12 +62,16 @@ public class UserDetailsView extends FlowPanel {
|
||||
for (DefaultRoles defaultRole : DefaultRoles.values()) {
|
||||
defaultRoleNames.add(defaultRole.getRolename());
|
||||
}
|
||||
List<String> defaultPermissionNames = new ArrayList<>();
|
||||
for (DefaultPermissions defaultPermission : DefaultPermissions.values()) {
|
||||
defaultPermissionNames.add(defaultPermission.getPermissionname());
|
||||
}
|
||||
rolesEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getRoles(), stringMessages, IconResources.INSTANCE.remove(), defaultRoleNames,
|
||||
stringMessages.enterRoleName());
|
||||
rolesEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||
Iterable<String> newRoleList = event.getValue();
|
||||
final Iterable<String> newRoleList = event.getValue();
|
||||
final UserDTO selectedUser = UserDetailsView.this.user;
|
||||
userManagementService.setRolesForUser(selectedUser.getName(), newRoleList, new MarkedAsyncCallback<SuccessInfo>(
|
||||
new AsyncCallback<SuccessInfo>() {
|
||||
@@ -79,6 +85,7 @@ public class UserDetailsView extends FlowPanel {
|
||||
if (!result.isSuccessful()) {
|
||||
Window.alert(stringMessages.errorUpdatingRoles(selectedUser.getName(), result.getMessage()));
|
||||
} else {
|
||||
selectedUser.setRoles(newRoleList);
|
||||
if (userService.getCurrentUser().getName().equals(selectedUser.getName())) {
|
||||
// if the current user's roles changed, update the user object in the user service and notify others
|
||||
userService.updateUser(/* notify other instances */ true);
|
||||
@@ -88,6 +95,35 @@ public class UserDetailsView extends FlowPanel {
|
||||
}));
|
||||
}
|
||||
});
|
||||
permissionsEditor = new StringListEditorComposite(user==null?Collections.<String>emptySet():user.getPermissions(), stringMessages, IconResources.INSTANCE.remove(), defaultPermissionNames,
|
||||
stringMessages.enterPermissionName());
|
||||
permissionsEditor.addValueChangeHandler(new ValueChangeHandler<Iterable<String>>() {
|
||||
@Override
|
||||
public void onValueChange(ValueChangeEvent<Iterable<String>> event) {
|
||||
final Iterable<String> newPermissionList = event.getValue();
|
||||
final UserDTO selectedUser = UserDetailsView.this.user;
|
||||
userManagementService.setPermissionsForUser(selectedUser.getName(), newPermissionList, new MarkedAsyncCallback<SuccessInfo>(
|
||||
new AsyncCallback<SuccessInfo>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
Window.alert(stringMessages.errorUpdatingPermissions(selectedUser.getName(), caught.getMessage()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(SuccessInfo result) {
|
||||
if (!result.isSuccessful()) {
|
||||
Window.alert(stringMessages.errorUpdatingPermissions(selectedUser.getName(), result.getMessage()));
|
||||
} else {
|
||||
selectedUser.setPermissions(newPermissionList);
|
||||
if (userService.getCurrentUser().getName().equals(selectedUser.getName())) {
|
||||
// if the current user's permissions changed, update the user object in the user service and notify others
|
||||
userService.updateUser(/* notify other instances */ true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
usernameLabel = new Label();
|
||||
emailLabel = new Label();
|
||||
final Button changeEmail = new Button(stringMessages.edit());
|
||||
@@ -131,6 +167,7 @@ public class UserDetailsView extends FlowPanel {
|
||||
decoratorPanel.setWidget(fp);
|
||||
this.add(decoratorPanel);
|
||||
this.add(rolesEditor);
|
||||
this.add(permissionsEditor);
|
||||
updateUser(user, userManagementService);
|
||||
}
|
||||
|
||||
@@ -203,6 +240,7 @@ public class UserDetailsView extends FlowPanel {
|
||||
accountPanels.add(accountPanelDecorator);
|
||||
}
|
||||
rolesEditor.setValue(user.getRoles(), /* fireEvents */ false);
|
||||
permissionsEditor.setValue(user.getPermissions(), /* fireEvents */ false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -45,7 +45,9 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||
String add();
|
||||
String edit();
|
||||
String errorUpdatingRoles(String username, String message);
|
||||
String errorUpdatingPermissions(String name, String message);
|
||||
String enterRoleName();
|
||||
String enterPermissionName();
|
||||
String errorCreatingUser(String username, String message);
|
||||
String signedUpSuccessfully(String username);
|
||||
String unknownErrorCreatingUser(String username);
|
||||
@@ -69,6 +71,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
||||
String failedToSignIn();
|
||||
String emailValidationUnsuccessful(String username);
|
||||
String roles();
|
||||
String permissions();
|
||||
String signInWith();
|
||||
String generalWelcome();
|
||||
String newUser();
|
||||
|
||||
+3
@@ -38,7 +38,9 @@ remove=Remove
|
||||
add=Add
|
||||
edit=Edit
|
||||
errorUpdatingRoles=Error updating roles for user {0}: {1}
|
||||
errorUpdatingPermissions=Error updating permissions for user {0}: {1}
|
||||
enterRoleName=Enter role name...
|
||||
enterPermissionName=Enter permission name...
|
||||
errorCreatingUser=Error signing up with username {0}: {1}
|
||||
signedUpSuccessfully=Successfully signed up user {0}. Please check you e-mails to validate your e-mail account.
|
||||
unknownErrorCreatingUser=Unknown error trying to sign up user with name {0}. Perhaps another user with that name already exists.
|
||||
@@ -62,6 +64,7 @@ successfullyResetPassword=Successfully reset password for user {0}. e-Mail has b
|
||||
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?
|
||||
roles=Roles
|
||||
permissions=Permissions
|
||||
signInWith=Sign in with...
|
||||
generalWelcome=Welcome!
|
||||
newUser=New here?
|
||||
|
||||
+3
@@ -38,7 +38,9 @@ remove=Löschen
|
||||
add=Hinzufügen
|
||||
edit=Bearbeiten
|
||||
errorUpdatingRoles=Fehler beim Aktualisieren der Rollen des Benutzers {0}: {1}
|
||||
errorUpdatingPermissions=Fehler beim Aktualisieren der Berechtigungen des Benutzers {0}: {1}
|
||||
enterRoleName=Rollennamen eingeben...
|
||||
enterPermissionName=Berechtigungsnamen eingeben...
|
||||
errorCreatingUser=Fehler beim Anlegen des Benutzers mit Namen {0}: {1}
|
||||
signedUpSuccessfully=Benutzer {0} erfolgreich angelegt. Bitte e-Mails pr�fen, um e-Mail-Adresse zu validieren.
|
||||
unknownErrorCreatingUser=Unbekannter Fehler beim Versuch, den Benutzer mit dem Namen {0} anzulegen. M�glicherweise existiert ein Benutzer gleichen Namens bereits.
|
||||
@@ -62,6 +64,7 @@ successfullyResetPassword=Passwort für Benutzer {0} erfolgreich zurückgesetzt.
|
||||
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?
|
||||
roles=Rollen
|
||||
permissions=Berechtigungen
|
||||
signInWith=Anmelden mit...
|
||||
generalWelcome=Herzlich Willkommen.
|
||||
newUser=Neuer Benutzer?
|
||||
|
||||
+4
@@ -68,6 +68,9 @@ public class EditProfileEntryPoint implements EntryPoint {
|
||||
rolesPanel.add(new Label(stringMessages.roles()));
|
||||
final Label rolesLabel = new Label();
|
||||
rolesPanel.add(rolesLabel);
|
||||
rolesPanel.add(new Label(stringMessages.permissions()));
|
||||
final Label permissionsLabel = new Label();
|
||||
rolesPanel.add(permissionsLabel);
|
||||
fp.add(rolesPanel);
|
||||
final Label emailLabel = new Label(stringMessages.email());
|
||||
fp.add(emailLabel);
|
||||
@@ -116,6 +119,7 @@ public class EditProfileEntryPoint implements EntryPoint {
|
||||
nameText.setText(user.getName());
|
||||
emailText.setText(user.getEmail());
|
||||
rolesLabel.setText(user.getRoles().toString());
|
||||
permissionsLabel.setText(user.getPermissions().toString());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+1
@@ -290,6 +290,7 @@ public class UserManagementServiceImpl extends RemoteServiceServlet implements U
|
||||
}
|
||||
userDTO = new UserDTO(user.getName(), user.getEmail(), user.isEmailValidated(), accountDTOs);
|
||||
userDTO.addRoles(user.getRoles());
|
||||
userDTO.addPermissions(user.getPermissions());
|
||||
return userDTO;
|
||||
}
|
||||
|
||||
|
||||
+25
-1
@@ -12,6 +12,7 @@ public class UserDTO implements IsSerializable {
|
||||
private String email;
|
||||
private List<AccountDTO> accounts;
|
||||
private Set<String> roles = new HashSet<>();
|
||||
private Set<String> permissions = new HashSet<>();
|
||||
private boolean emailValidated;
|
||||
|
||||
UserDTO() {} // for serialization only
|
||||
@@ -34,11 +35,33 @@ public class UserDTO implements IsSerializable {
|
||||
public boolean hasRole(String role) {
|
||||
return roles.contains(role);
|
||||
}
|
||||
|
||||
|
||||
public void addRoles(Iterable<String> roles) {
|
||||
Util.addAll(roles, this.roles);
|
||||
}
|
||||
|
||||
public void setRoles(Iterable<String> newRoleList) {
|
||||
this.roles.clear();
|
||||
Util.addAll(newRoleList, this.roles);
|
||||
}
|
||||
|
||||
public Iterable<String> getPermissions() {
|
||||
return permissions;
|
||||
}
|
||||
|
||||
public boolean hasPermission(String permission) {
|
||||
return permissions.contains(permission);
|
||||
}
|
||||
|
||||
public void addPermissions(Iterable<String> permissions) {
|
||||
Util.addAll(permissions, this.permissions);
|
||||
}
|
||||
|
||||
public void setPermissions(Iterable<String> newPermissionList) {
|
||||
this.permissions.clear();
|
||||
Util.addAll(newPermissionList, this.permissions);
|
||||
}
|
||||
|
||||
public List<AccountDTO> getAccounts() {
|
||||
return accounts;
|
||||
}
|
||||
@@ -50,4 +73,5 @@ public class UserDTO implements IsSerializable {
|
||||
public boolean isEmailValidated() {
|
||||
return emailValidated;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user