]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/commands/AddRole.java
Introduce delete roles and users
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / commands / AddRole.java
1 package org.argeo.security.ui.admin.commands;
2
3 import org.argeo.ArgeoException;
4 import org.argeo.security.UserAdminService;
5 import org.argeo.security.ui.admin.editors.ArgeoUserEditor;
6 import org.argeo.security.ui.admin.views.RolesView;
7 import org.eclipse.core.commands.AbstractHandler;
8 import org.eclipse.core.commands.ExecutionEvent;
9 import org.eclipse.core.commands.ExecutionException;
10 import org.eclipse.ui.IEditorReference;
11 import org.eclipse.ui.IWorkbenchPage;
12 import org.eclipse.ui.handlers.HandlerUtil;
13
14 /** Add a new role. */
15 public class AddRole extends AbstractHandler {
16 public final static String COMMAND_ID = "org.argeo.security.ui.admin.addRole";
17 private UserAdminService userAdminService;
18 private String rolePrefix = "ROLE_";
19
20 public Object execute(ExecutionEvent event) throws ExecutionException {
21 RolesView rolesView = (RolesView) HandlerUtil
22 .getActiveWorkbenchWindow(event).getActivePage()
23 .findView(RolesView.ID);
24 String role = rolesView.getNewRole();
25 if (role.trim().equals(""))
26 return null;
27 if (role.equals(rolesView.getAddNewRoleText()))
28 return null;
29 role = role.trim().toUpperCase();
30 if (!role.startsWith(rolePrefix))
31 role = rolePrefix + role;
32 if (userAdminService.listEditableRoles().contains(role))
33 throw new ArgeoException("Role " + role + " already exists");
34 userAdminService.newRole(role);
35 rolesView.refresh();
36
37 // refresh editors
38 IEditorReference[] refs = HandlerUtil.getActiveWorkbenchWindow(event)
39 .getActivePage()
40 .findEditors(null, ArgeoUserEditor.ID, IWorkbenchPage.MATCH_ID);
41 for (IEditorReference ref : refs) {
42 ArgeoUserEditor userEditor = (ArgeoUserEditor) ref.getEditor(false);
43 if (userEditor != null) {
44 userEditor.refresh();
45 }
46 }
47 return null;
48 }
49
50 public void setUserAdminService(UserAdminService userAdminService) {
51 this.userAdminService = userAdminService;
52 }
53
54 }