Merge "AAFcli.java -Declare "value" on a separate line"
[aaf/authz.git] / auth / auth-gui / src / main / java / org / onap / aaf / auth / gui / pages / RequestDetail.java
index 090b6e3..b6a6a01 100644 (file)
@@ -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.
@@ -28,6 +28,9 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.UUID;
 
+import javax.servlet.http.HttpServletRequest;
+
+import org.onap.aaf.auth.common.Define;
 import org.onap.aaf.auth.env.AuthzEnv;
 import org.onap.aaf.auth.env.AuthzTrans;
 import org.onap.aaf.auth.gui.AAF_GUI;
@@ -65,12 +68,12 @@ public class RequestDetail extends Page {
 
     /**
      * Implement the table content for Request Detail
-     * 
+     *
      * @author Jeremiah
      *
      */
     private static class Model extends TableData<AAF_GUI,AuthzTrans> {
-        final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L;
+       static final long NUM_100NS_INTERVALS_SINCE_UUID_EPOCH = 0x01b21dd213814000L;
         private Slot sTicket;
         public Model(AuthzEnv env) {
             sTicket = env.slot(NAME+".ticket");
@@ -89,13 +92,22 @@ public class RequestDetail extends Page {
                             ArrayList<AbsCell[]> rv = new ArrayList<>();
                             try {
                                 Future<Approvals> fa = client.read(
-                                    "/authz/approval/ticket/"+ticket, 
+                                    "/authz/approval/ticket/"+ticket,
                                     gui.getDF(Approvals.class)
                                     );
-                                
+
                                 if (fa.get(AAF_GUI.TIMEOUT)) {
-                                    if (!trans.user().equals(fa.value.getApprovals().get(0).getUser())) {
+                                    Approval app = fa.value.getApprovals().get(0);
+                                    if(app==null) {
                                         return Cells.EMPTY;
+                                    } else {
+                                        if (!(trans.user().equals(app.getUser()) ||
+                                              trans.user().equals(app.getApprover()))) {
+                                            HttpServletRequest req = trans.get(gui.slot_httpServletRequest,null);
+                                            if(req==null || !req.isUserInRole(Define.ROOT_NS()+"|access|*|*")) {
+                                                return Cells.EMPTY;
+                                            }
+                                        }
                                     }
                                     tt.done();
                                     tt = trans.start("Load Data", Env.SUB);
@@ -106,39 +118,39 @@ public class RequestDetail extends Page {
                                         if (first) {
                                             DateFormat createdDF = new SimpleDateFormat(DATE_TIME_FORMAT);
                                             UUID id = UUID.fromString(approval.getId());
-                                            
+
                                             rv.add(new AbsCell[]{new TextCell("Ticket ID:"),new TextCell(approval.getTicket(),"colspan=3")});
                                             rv.add(new AbsCell[]{new TextCell("Memo:"),new TextCell(approval.getMemo(),"colspan=3")});
-                                            rv.add(new AbsCell[]{new TextCell("Requested On:"), 
+                                            rv.add(new AbsCell[]{new TextCell("Requested On:"),
                                                     new TextCell(createdDF.format((id.timestamp() - NUM_100NS_INTERVALS_SINCE_UUID_EPOCH)/10000),"colspan=3")
                                             });
                                             rv.add(new AbsCell[]{new TextCell("Operation:"),new TextCell(decodeOp(approval.getOperation()),"colspan=3")});
                                             String user = approval.getUser();
                                             rv.add(new AbsCell[]{new TextCell("User:"),new TextCell(user,"colspan=3")});
-                                            
+
                                             // headers for listing each approver
                                             rv.add(new AbsCell[]{new TextCell(" ","colspan=4","class=blank_line")});
                                             rv.add(new AbsCell[]{AbsCell.Null,
-                                                    new TextCell("Approver","class=bold"), 
-                                                    new TextCell("Type","class=bold"), 
+                                                    new TextCell("Approver","class=bold"),
+                                                    new TextCell("Type","class=bold"),
                                                     new TextCell("Status","class=bold")});
                                             approverLine[0] = new TextCell("Approvals:");
-                                            
+
                                             first = false;
                                         } else {
                                             approverLine[0] = AbsCell.Null;
                                         }
-                                        
+
                                         approverLine[1] = new TextCell(approval.getApprover());
                                         String type = approval.getType();
                                         if ("owner".equalsIgnoreCase(type)) {
                                             type = "resource owner";
                                         }
-                                        
+
                                         approverLine[2] = new TextCell(type);
                                         approverLine[3] = new TextCell(approval.getStatus());
                                         rv.add(approverLine);
-                                    
+
                                     }
                                 } else {
                                     rv.add(new AbsCell[] {new TextCell("*** Data Unavailable ***")});