]> git.argeo.org Git - lgpl/argeo-commons.git/blob - useradmin/LdifAuthorization.java
Prepare next development cycle
[lgpl/argeo-commons.git] / useradmin / LdifAuthorization.java
1 package org.argeo.osgi.useradmin;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.osgi.service.useradmin.Authorization;
7 import org.osgi.service.useradmin.Role;
8
9 public class LdifAuthorization implements Authorization {
10 private final LdifUser user;
11
12 public LdifAuthorization(LdifUser user) {
13 this.user = user;
14 }
15
16 @Override
17 public String getName() {
18 if (user == null)
19 return null;
20 return user.getName();
21 }
22
23 @Override
24 public boolean hasRole(String name) {
25 for (Role role : getAllRoles()) {
26 if (role.getName().equals(name))
27 return true;
28 }
29 return false;
30 }
31
32 @Override
33 public String[] getRoles() {
34 List<Role> allRoles = getAllRoles();
35 if (user != null)
36 allRoles.add(0, user);
37 String[] res = new String[allRoles.size()];
38 for (int i = 0; i < allRoles.size(); i++)
39 res[i] = allRoles.get(i).getName();
40 return res;
41 }
42
43 List<Role> getAllRoles() {
44 List<Role> allRoles = new ArrayList<Role>();
45 if (user != null)
46 collectRoles(user, allRoles);
47 else
48 collectAnonymousRoles(allRoles);
49 return allRoles;
50 }
51
52 private void collectRoles(LdifUser user, List<Role> allRoles) {
53 for (LdifGroup group : user.directMemberOf) {
54 // TODO check for loops
55 allRoles.add(group);
56 collectRoles(group, allRoles);
57 }
58 }
59
60 private void collectAnonymousRoles(List<Role> allRoles) {
61 // TODO gather anonymous roles
62 }
63
64 }