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