package org.onap.aaf.auth.cmd.role;
+import java.util.Map;
+import java.util.TreeMap;
+
import org.onap.aaf.auth.cmd.AAFcli;
import org.onap.aaf.auth.cmd.Cmd;
import org.onap.aaf.auth.cmd.Param;
import org.onap.aaf.cadi.client.Future;
import org.onap.aaf.cadi.client.Rcli;
import org.onap.aaf.cadi.client.Retryable;
+import org.onap.aaf.cadi.util.Split;
import org.onap.aaf.misc.env.APIException;
+import aaf.v2_0.Perm;
import aaf.v2_0.Perms;
+import aaf.v2_0.Role;
import aaf.v2_0.Roles;
+import aaf.v2_0.UserRole;
import aaf.v2_0.UserRoles;
/**
public Integer code(Rcli<?> client) throws CadiException, APIException {
Perms perms=null;
UserRoles urs=null;
- Future<Roles> fr = client.read(
- "/authz/roles/user/"+user+(aafcli.isDetailed()?"?ns":""),
- getDF(Roles.class)
- );
+ Roles roles = null;
+ int code;
Future<UserRoles> fur = client.read(
"/authz/userRoles/user/"+user,
getDF(UserRoles.class)
);
- if (fr.get(AAFcli.timeout())) {
- if (aafcli.isDetailed()) {
- Future<Perms> fp = client.read(
- "/authz/perms/user/"+user+(aafcli.isDetailed()?"?ns":""),
- getDF(Perms.class)
- );
- if (fp.get(AAFcli.timeout())) {
- perms = fp.value;
+ if (fur.get(AAFcli.timeout())) {
+ urs = fur.value;
+ code = fur.code();
+ } else {
+ error(fur);
+ return fur.code();
+ }
+
+ if (aafcli.isDetailed()) {
+ roles = new Roles();
+ Future<Perms> fp = client.read(
+ "/authz/perms/user/"+user+"?ns&force",
+ getDF(Perms.class)
+ );
+ if (fp.get(AAFcli.timeout())) {
+ Map<String, Role> rs = new TreeMap<>();
+ perms = fp.value;
+ for( Perm p : perms.getPerm()) {
+ for(String sr : p.getRoles()) {
+ Role r = rs.get(sr);
+ if(r==null) {
+ r = new Role();
+ String[] split = Split.split('|', sr);
+ if(split.length>1) {
+ r.setNs(split[0]);
+ r.setName(split[1]);
+ } else {
+ r.setName(sr);
+ }
+ rs.put(sr, r);
+ roles.getRole().add(r);
+ }
+ r.getPerms().add(p);
+ }
}
- }
- if (fur.get(AAFcli.timeout())) {
- urs = fur.value;
- }
-
- ((List)parent).report(fr.value,perms,urs,HEADER,user);
+ }
+ code = fp.code();
} else {
- error(fr);
+ roles = new Roles();
+ java.util.List<Role> lr = roles.getRole();
+ Role r;
+ for(UserRole ur : urs.getUserRole()) {
+ r = new Role();
+ r.setName(ur.getRole());
+ lr.add(r);
+ }
}
- return fr.code();
+
+
+ ((List)parent).report(roles,perms,urs,HEADER,user);
+ return code;
}
});
}