* 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.
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;
/**
* 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");
public Cells get(final AuthzTrans trans, final AAF_GUI gui) {
Cells rv=Cells.EMPTY;
final String ticket = trans.get(sTicket, null);
- if(ticket!=null) {
+ if (ticket!=null) {
try {
rv = gui.clientAsUser(trans.getUserPrincipal(), new Retryable<Cells>() {
@Override
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())) {
+
+ if (fa.get(AAF_GUI.TIMEOUT)) {
+ 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.slotHttpServletRequest,null);
+ if(req==null || !req.isUserInRole(Define.ROOT_NS()+"|access|*|*")) {
+ return Cells.EMPTY;
+ }
+ }
}
tt.done();
tt = trans.start("Load Data", Env.SUB);
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 ***")});