UNPKG

@mikezimm/fps-core-v7

Version:

Library of reusable core interfaces, types and constants migrated from fps-library-v2

75 lines 3.1 kB
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