]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/commands/AddRole.java
Improve security UI
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / commands / AddRole.java
1 package org.argeo.security.ui.commands;
2
3 import org.argeo.ArgeoException;
4 import org.argeo.security.ArgeoSecurityService;
5 import org.argeo.security.ui.views.RolesView;
6 import org.eclipse.core.commands.AbstractHandler;
7 import org.eclipse.core.commands.ExecutionEvent;
8 import org.eclipse.core.commands.ExecutionException;
9 import org.eclipse.ui.handlers.HandlerUtil;
10
11 /** Add a new role. */
12 public class AddRole extends AbstractHandler {
13 public final static String COMMAND_ID = "org.argeo.security.ui.addRole";
14 private ArgeoSecurityService securityService;
15 private String rolePrefix = "ROLE_";
16
17 public Object execute(ExecutionEvent event) throws ExecutionException {
18 RolesView rolesView = (RolesView) HandlerUtil
19 .getActiveWorkbenchWindow(event).getActivePage()
20 .findView(RolesView.ID);
21 String role = rolesView.getNewRole();
22 if (role.trim().equals(""))
23 return null;
24 if (role.equals(rolesView.getAddNewRoleText()))
25 return null;
26 role = role.trim().toUpperCase();
27 if (!role.startsWith(rolePrefix))
28 role = rolePrefix + role;
29 if (securityService.getSecurityDao().listEditableRoles().contains(role))
30 throw new ArgeoException("Role " + role + " already exists");
31 securityService.newRole(role);
32 rolesView.refresh();
33 return null;
34 }
35
36 public void setSecurityService(ArgeoSecurityService securityService) {
37 this.securityService = securityService;
38 }
39
40 }