@mikezimm/fps-core-v7
Version:
Library of reusable core interfaces, types and constants migrated from fps-library-v2
75 lines • 3.1 kB
JavaScript
import { doesObjectExistInArrayInt } from "../../../logic/Arrays/searching/objectfind";
/**
*
* @param webPermissions
* @param myPermissions
* @param addDownToNoChild //This is added so that if there are no child permissions, a 'down' arrow is added. For Libraries, set to false to make it cleaner.
*/
export function deltaPermissions(webPermissions, myPermissions, addDownToNoChild) {
const delta = [];
//Add web permissions to delta
webPermissions.allUserPermissions.map(user => {
delta.push(createUserDelta(user, 'parent'));
});
myPermissions.allUserPermissions.map(user => {
const Id = user.userId;
const parentIndex = doesObjectExistInArrayInt(delta, 'Id', Id, true);
if (parentIndex < 0) {
//user was not on parent
const newUser = createUserDelta(user, 'child');
newUser.direction = 'up';
newUser.dirIcon = 'ArrowUpRight8';
delta.push(newUser);
}
else {
//User was on parent
const thisUser = delta[parentIndex];
thisUser.childHighPriority = user.highPriority;
thisUser.childPermissions = user.permissions;
if (thisUser.childHighPriority > thisUser.parentHighPriority) {
thisUser.direction = 'up';
thisUser.dirIcon = 'ArrowUpRight8';
}
else if (thisUser.childHighPriority === thisUser.parentHighPriority) {
thisUser.direction = 'equal';
thisUser.dirIcon = 'CalculatorEqualTo';
}
else {
thisUser.direction = 'down';
thisUser.dirIcon = 'ArrowDownRight8';
}
}
});
//Now go back and check for ones where the direction was not set
if (addDownToNoChild === true) {
delta.map(thisUser => {
if (thisUser.childPermissions.length === 0) {
thisUser.direction = 'down';
thisUser.dirIcon = 'ArrowDownRight8';
}
});
}
// console.log('webPermissionAllDetla', delta );
return delta;
}
export function createUserDelta(user, parentOrChild) {
const delta = {
Id: user.userId,
Title: user.userInfo.Title,
shortTitle: user.userInfo.shortTitle,
Description: user.userInfo.Description,
PrincipalType: user.userInfo.PrincipalType,
PrincipalText: user.userInfo.PrincipalText,
IsSiteAdmin: user.userInfo.IsSiteAdmin,
UserPrincipalName: user.userInfo.UserPrincipalName,
parentHighPriority: parentOrChild === 'parent' ? user.highPriority : null,
parentPermissions: parentOrChild === 'parent' ? user.permissions : [],
childHighPriority: parentOrChild === 'child' ? user.highPriority : null,
childPermissions: parentOrChild === 'child' ? user.permissions : [],
direction: null,
dirIcon: null,
color: null,
};
return delta;
}
//# sourceMappingURL=deltaPermissions.js.map