X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-cmd%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fcmd%2Frole%2FListByUser.java;h=9657721a9faaba89a5b8f339447dd8d79fe1e556;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=7165de67bd7e7dc38ae25fe64ee82c52974a4e2f;hpb=ceda6e8bc270202bcb24340b86617110289c902e;p=aaf%2Fauthz.git diff --git a/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/role/ListByUser.java b/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/role/ListByUser.java index 7165de67..9657721a 100644 --- a/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/role/ListByUser.java +++ b/auth/auth-cmd/src/main/java/org/onap/aaf/auth/cmd/role/ListByUser.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -21,6 +21,9 @@ 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; @@ -30,10 +33,14 @@ import org.onap.aaf.cadi.LocatorException; 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; /** @@ -42,58 +49,88 @@ import aaf.v2_0.UserRoles; * */ public class ListByUser extends Cmd { - private static final String HEADER = "List Roles for User "; - - public ListByUser(List parent) { - super(parent,"user", - new Param("id",true), - new Param("detail", false)); - } + private static final String HEADER = "List Roles for User "; + + public ListByUser(List parent) { + super(parent,"user", + new Param("id",true), + new Param("detail", false)); + } + + @Override + public int _exec( int idx, final String ... args) throws CadiException, APIException, LocatorException { + final String user=fullID(args[idx]); + + + return same(new Retryable() { + @Override + public Integer code(Rcli client) throws CadiException, APIException { + Perms perms=null; + UserRoles urs=null; + Roles roles = null; + int code; + Future fur = client.read( + "/authz/userRoles/user/"+user, + getDF(UserRoles.class) + ); + if (fur.get(AAFcli.timeout())) { + urs = fur.value; + code = fur.code(); + } else { + error(fur); + return fur.code(); + } + + if (aafcli.isDetailed()) { + roles = new Roles(); + Future fp = client.read( + "/authz/perms/user/"+user+"?ns&force", + getDF(Perms.class) + ); + if (fp.get(AAFcli.timeout())) { + Map 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); + } + } + } + code = fp.code(); + } else { + roles = new Roles(); + java.util.List lr = roles.getRole(); + Role r; + for(UserRole ur : urs.getUserRole()) { + r = new Role(); + r.setName(ur.getRole()); + lr.add(r); + } + } + - @Override - public int _exec( int idx, final String ... args) throws CadiException, APIException, LocatorException { - final String user=fullID(args[idx]); - + ((List)parent).report(roles,perms,urs,HEADER,user); + return code; + } + }); + } - return same(new Retryable() { - @Override - public Integer code(Rcli client) throws CadiException, APIException { - Perms perms=null; - UserRoles urs=null; - Future fr = client.read( - "/authz/roles/user/"+user+(aafcli.isDetailed()?"?ns":""), - getDF(Roles.class) - ); - Future fur = client.read( - "/authz/userRoles/user/"+user, - getDF(UserRoles.class) - ); - if(fr.get(AAFcli.timeout())) { - if (aafcli.isDetailed()) { - Future 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; - } - - ((List)parent).report(fr.value,perms,urs,HEADER,user); - } else { - error(fr); - } - return fr.code(); - } - }); - } - - @Override - public void detailedHelp(int indent, StringBuilder sb) { - detailLine(sb,indent,HEADER); - api(sb,indent,HttpMethods.GET,"authz/roles/user/",Roles.class,true); - } + @Override + public void detailedHelp(int indent, StringBuilder sb) { + detailLine(sb,indent,HEADER); + api(sb,indent,HttpMethods.GET,"authz/roles/user/",Roles.class,true); + } }