blob: d7aabf8dc5c37d993e1e8a45bce8ee7f3227d530 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React from "react";
import { Table, Badge } from "react-bootstrap";
import dateFormat from "dateformat";
import { ClassTypes } from "../../../utils/XAEnums";
import { isEmpty } from "lodash";
export const RoleLogs = ({ data, reportdata }) => {
const { objectName, objectClassType, createDate, owner, action } = data;
let Userscreate = reportdata.filter(
(o) => o.attributeName == "Users" && o.action == "create"
);
let createUsrNew = Userscreate.map((obj) => obj.newValue);
let Groupscreate = reportdata.filter(
(o) => o.attributeName == "Groups" && o.action == "create"
);
let createGrpNew = Groupscreate.map((obj) => obj.newValue);
let Rolescreate = reportdata.filter(
(o) => o.attributeName == "Roles" && o.action == "create"
);
let createRoleNew = Rolescreate.map((obj) => obj.newValue);
let Usersupdate = reportdata.filter(
(o) => o.attributeName == "Users" && o.action == "update"
);
let Groupsupdate = reportdata.filter(
(o) => o.attributeName == "Groups" && o.action == "update"
);
let Rolesupdate = reportdata.filter(
(o) => o.attributeName == "Roles" && o.action == "update"
);
let Users = reportdata.filter(
(o) => o.attributeName == "Users" && o.action == "delete"
);
let deleteUsrOld = Users.map((obj) => obj.previousValue);
let Groups = reportdata.filter(
(o) => o.attributeName == "Groups" && o.action == "delete"
);
let deleteGrpOld = Groups.map((obj) => obj.previousValue);
let Roles = reportdata.filter(
(o) => o.attributeName == "Roles" && o.action == "delete"
);
let deleteRoleOld = Roles.map((obj) => obj.previousValue);
let Roledetail = reportdata.filter((c) => {
return (
c.attributeName != "Users" &&
c.attributeName != "Groups" &&
c.attributeName != "Roles"
);
});
return (
<div>
{/* CREATE */}
{action == "create" &&
objectClassType == ClassTypes.CLASS_TYPE_RANGER_ROLE.value && (
<div>
<div className="fw-bolder">Name: {objectName}</div>
<div className="fw-bolder">
Date: {dateFormat(createDate, "mm/dd/yyyy hh:MM:ss TT ")} India
Standard Time
</div>
<div className="fw-bolder">Created By: {owner} </div>
<br />
<h5 className="bold wrap-header m-t-sm">Role Detail:</h5>
<Table className="table table-bordered w-50">
<thead className="thead-light">
<tr>
<th>Fields</th>
<th>New Value</th>
</tr>
</thead>
<tbody>
{Roledetail.map((role, index) => {
return (
<tr key={index}>
<td className="table-warning">{role.attributeName}</td>
<td className="table-warning">{role.newValue || "--"}</td>
</tr>
);
})}
</tbody>
</Table>
<br />
{action == "create" && !isEmpty(createUsrNew) && (
<>
<h5 className="bold wrap-header m-t-sm">Users:</h5>
<Table className="table table-bordered w-50">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Userscreate.map((usr) => {
return (
<>
{JSON.parse(usr.newValue).map((obj, idx) => (
<tr key={idx}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))}
</>
);
})}
</tbody>
</Table>
<br />
</>
)}
{action == "create" && !isEmpty(createGrpNew) && (
<>
<h5 className="bold wrap-header m-t-sm">Groups:</h5>
<Table className="table table-bordered w-50">
<thead>
<tr className="thead-light">
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Groupscreate.map((grp) => {
return (
<>
{JSON.parse(grp.newValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))}
</>
);
})}
</tbody>
</Table>
<br />
</>
)}
{action == "create" && !isEmpty(createRoleNew) && (
<>
<h5 className="bold wrap-header m-t-sm">Roles:</h5>
<Table className="table table-bordered w-50">
<thead>
<tr className="thead-light">
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Rolescreate.map((roles) => {
return (
<>
{JSON.parse(roles.newValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))}
</>
);
})}
</tbody>
</Table>
</>
)}
</div>
)}
{/* UPDATE */}
{action == "update" &&
objectClassType == ClassTypes.CLASS_TYPE_RANGER_ROLE.value && (
<div>
<div className="row">
<div className="col-md-6">
<div className="fw-bolder">Name: {objectName}</div>
<div className="fw-bolder">
Date: {dateFormat(createDate, "mm/dd/yyyy hh:MM:ss TT ")}
India Standard Time
</div>
<div className="fw-bolder">Updated By: {owner}</div>
</div>
<div className="col-md-6 text-end">
<div className="bg-success legend"></div> {" Added "}
<div className="bg-danger legend"></div> {" Deleted "}
</div>
</div>
<br />
{action == "update" && !isEmpty(Roledetail) && (
<>
<h5 className="bold wrap-header m-t-sm">Role Detail:</h5>
<Table className="table table-bordered w-75">
<thead className="thead-light">
<tr>
<th>Fields</th>
<th>Old Value</th>
<th>New Value</th>
</tr>
</thead>
<tbody>
{Roledetail.map((role, index) => {
return (
<tr key={index}>
<td className="table-warning">
{role.attributeName}
</td>
<td className="table-warning text-nowrap">
{!isEmpty(role.previousValue) ? (
isEmpty(role.newValue) ? (
<h6>
<Badge className="d-inline me-1" bg="danger">
{role.previousValue}
</Badge>
</h6>
) : (
role.previousValue
)
) : (
"--"
)}
</td>
<td className="table-warning text-nowrap">
{!isEmpty(role.newValue) ? (
isEmpty(role.previousValue) ? (
<h6>
<Badge className="d-inline me-1" bg="success">
{role.newValue}
</Badge>
</h6>
) : (
role.newValue
)
) : (
"--"
)}
</td>
</tr>
);
})}
</tbody>
</Table>
<br />
</>
)}
{action == "update" && !isEmpty(Usersupdate) && (
<div className="row">
<div className="col">
<h5 className="bold wrap-header m-t-sm">
Old Users Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Usersupdate.map((usr) => {
return !isEmpty(usr.previousValue) ? (
JSON.parse(usr.previousValue).map((obj, index) => (
<tr key={index}>
<td className="old-value-bg">{obj.name}</td>
<td className="old-value-bg">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="old-value-bg">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
<div className="col">
<h5 className="bold wrap-header m-t-sm">
New Users Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Usersupdate.map((usr) => {
return !isEmpty(usr.newValue) ? (
JSON.parse(usr.newValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="table-warning">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
<br />
</div>
</div>
)}
{action == "update" && !isEmpty(Groupsupdate) && (
<div className="row">
<div className="col">
<h5 className="bold wrap-header m-t-sm">
Old Groups Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Groupsupdate.map((grp) => {
return !isEmpty(grp.previousValue) ? (
JSON.parse(grp.previousValue).map((obj, index) => (
<tr key={index}>
<td className="old-value-bg">{obj.name}</td>
<td className="old-value-bg">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="old-value-bg">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
<div className="col">
<h5 className="bold wrap-header m-t-sm">
New Groups Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Groupsupdate.map((grp) => {
return !isEmpty(grp.newValue) ? (
JSON.parse(grp.newValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="table-warning">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
</div>
)}
<br />
{action == "update" && !isEmpty(Rolesupdate) && (
<div className="row">
<div className="col">
<h5 className="bold wrap-header m-t-sm">
Old Roles Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Rolesupdate.map((roles) => {
return !isEmpty(roles.previousValue) ? (
JSON.parse(roles.previousValue).map((obj, index) => (
<tr key={index}>
<td className="old-value-bg">{obj.name}</td>
<td className="old-value-bg">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="old-value-bg">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
<div className="col">
<h5 className="bold wrap-header m-t-sm">
New Roles Details:
</h5>
<Table className="table table-bordered w-100">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Rolesupdate.map((roles) => {
return !isEmpty(roles.newValue) ? (
JSON.parse(roles.newValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
))
) : (
<tr>
<td colSpan={2} className="table-warning">
Empty
</td>
</tr>
);
})}
</tbody>
</Table>
</div>
</div>
)}
</div>
)}
{/* DELETE */}
{action == "delete" &&
objectClassType == ClassTypes.CLASS_TYPE_RANGER_ROLE.value && (
<div>
<div className="fw-bolder">Name: {objectName}</div>
<div className="fw-bolder">
Date: {dateFormat(createDate, "mm/dd/yyyy hh:MM:ss TT ")} India
Standard Time
</div>
<div className="fw-bolder">Created By: {owner} </div>
<div className="fw-bolder">Deleted By: {owner} </div>
<br />
<h5 className="bold wrap-header m-t-sm">Role Detail:</h5>
<Table className="table table-bordered w-50">
<>
<thead className="thead-light">
<tr>
<th>Fields</th>
<th>New Value</th>
</tr>
</thead>
<tbody>
{reportdata
.filter((val) => {
return (
val.attributeName != "Users" &&
val.attributeName != "Groups" &&
val.attributeName != "Roles"
);
})
.map((role, index) => {
return (
<tr key={index}>
<td className="table-warning">
{role.attributeName}
</td>
<td className="table-warning">
{!isEmpty(role.previousValue)
? role.previousValue
: "--"}
</td>
</tr>
);
})}
</tbody>
</>
</Table>
<br />
{action == "delete" && !isEmpty(deleteUsrOld) && (
<>
<h5 className="bold wrap-header m-t-sm">Users:</h5>
<Table className="table table-bordered w-50">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Users.map((usr) => {
return JSON.parse(usr.previousValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
));
})}
</tbody>
</Table>
<br />
</>
)}
{action == "delete" && !isEmpty(deleteGrpOld) && (
<>
<h5 className="bold wrap-header m-t-sm">Groups:</h5>
<Table className="table table-bordered w-50">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Groups.map((u) => {
return JSON.parse(u.previousValue).map((obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
));
})}
</tbody>
</Table>
<br />
</>
)}
{action == "delete" && !isEmpty(deleteRoleOld) && (
<>
<h5 className="bold wrap-header m-t-sm">Roles:</h5>
<Table className="table table-bordered w-50">
<thead className="thead-light">
<tr>
<th>Name</th>
<th> Role Admin</th>
</tr>
</thead>
<tbody>
{Roles.map((roles) => {
return JSON.parse(roles.previousValue).map(
(obj, index) => (
<tr key={index}>
<td className="table-warning">{obj.name}</td>
<td className="table-warning">
{obj.isAdmin === false ? "false" : "true"}
</td>
</tr>
)
);
})}
</tbody>
</Table>
</>
)}
</div>
)}
</div>
);
};
export default RoleLogs;