]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/kernel/NodeAuthorization.java
Fix automated Kerberos config
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / NodeAuthorization.java
1 package org.argeo.cms.internal.kernel;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.Collection;
6 import java.util.Collections;
7 import java.util.List;
8
9 import javax.security.auth.x500.X500Principal;
10
11 import org.osgi.service.useradmin.Authorization;
12
13 class NodeAuthorization implements Authorization {
14 private final String name;
15 private final String displayName;
16 private final List<String> systemRoles;
17 private final List<String> roles;
18
19 public NodeAuthorization(String name, String displayName,
20 Collection<String> systemRoles, String[] roles) {
21 this.name = new X500Principal(name).getName();
22 this.displayName = displayName;
23 this.systemRoles = Collections.unmodifiableList(new ArrayList<String>(
24 systemRoles));
25 this.roles = Collections.unmodifiableList(Arrays.asList(roles));
26 }
27
28 @Override
29 public String getName() {
30 return name;
31 }
32
33 @Override
34 public boolean hasRole(String name) {
35 if (systemRoles.contains(name))
36 return true;
37 if (roles.contains(name))
38 return true;
39 return false;
40 }
41
42 @Override
43 public String[] getRoles() {
44 int size = systemRoles.size() + roles.size();
45 List<String> res = new ArrayList<String>(size);
46 res.addAll(systemRoles);
47 res.addAll(roles);
48 return res.toArray(new String[size]);
49 }
50
51 @Override
52 public int hashCode() {
53 if (name == null)
54 return super.hashCode();
55 return name.hashCode();
56 }
57
58 @Override
59 public boolean equals(Object obj) {
60 if (!(obj instanceof Authorization))
61 return false;
62 Authorization that = (Authorization) obj;
63 if (name == null)
64 return that.getName() == null;
65 return name.equals(that.getName());
66 }
67
68 @Override
69 public String toString() {
70 return displayName;
71 }
72
73 }