UNPKG

@mikezimm/npmfunctions

Version:
92 lines (72 loc) 4.43 kB
import { WebPartContext } from '@microsoft/sp-webpart-base'; // For SPPermission: let addAndCustomizePages = pageContext.web.permissions.hasPermission( SPPermission.addAndCustomizePages ); import { SPPermission, } from '@microsoft/sp-page-context'; import { IUser, IFPSUser, ISimplePermission } from './IUserInterfaces'; import { checkDeepProperty } from '../Objects/properties'; export function getFPSUser ( context: WebPartContext, trickyEmails: string[], trickyApp: string ) { const { user, web } = context.pageContext; let startTime = new Date(); const thisWindow : any = window; let currentCultureName = checkDeepProperty(context.pageContext, ['cultureInfo','currentCultureName'], 'ShortError'); let isSiteAdmin = checkDeepProperty(context.pageContext, ['legacyPageContext','isSiteAdmin'], 'ShortError'); if ( isSiteAdmin !== true && isSiteAdmin !== false ) { isSiteAdmin = false; } let showTricks: any = false; trickyEmails.map( getsTricks => { if ( user.loginName && user.loginName.toLowerCase().indexOf( getsTricks ) > -1 ) { showTricks = true ; } } ); if ( thisWindow.FPSUser ){ if ( showTricks === true && thisWindow.FPSUser.trickyApps.indexOf( trickyApp ) < 0 ) { thisWindow.FPSUser.trickyApps.push( trickyApp ); } return thisWindow.FPSUser; } else { const userAny: any = user; //Cast as any where needed... unsure where I got some of these props not on SPUser... const userId: number = context.pageContext.legacyPageContext.userId; const userTitle : string= user.displayName ? user.displayName : userAny.title ? userAny.title : userAny.Title ? userAny.Title : 'Unknown User'; const FPSUser: IFPSUser = { title: userTitle, Title: userTitle, email: user.email, name: userAny.Name ? userAny.Name : userAny.LoginName ? userAny.LoginName : user.loginName, id: userId.toString(), ID: userId , Id: userId, currentCultureName: currentCultureName, imageUrl: userAny.imageUrl, trickyApps: showTricks === true ? [ trickyApp ] : [], PrincipalType: userAny.PrincipalType? userAny.PrincipalType : null, isSiteAdmin: isSiteAdmin, isGuest: user.isExternalGuestUser, manageWeb: web.permissions.hasPermission( SPPermission.manageWeb ), managePermissions: web.permissions.hasPermission( SPPermission.managePermissions ), enumeratePermissions: web.permissions.hasPermission( SPPermission.enumeratePermissions ), addAndCustomizePages: web.permissions.hasPermission( SPPermission.addAndCustomizePages ), // aka design manageLists: web.permissions.hasPermission( SPPermission.manageLists ),// aka edit approveItems: web.permissions.hasPermission( SPPermission.approveItems ), editListItems: web.permissions.hasPermission( SPPermission.editListItems ), // aka contribute openItems: web.permissions.hasPermission( SPPermission.openItems ), // aka read simple: 'None', crunchTime: -1, }; //'SharePoint' | 'Admin' | 'FullControl' | 'Designer' | 'Editor' | 'Approver' | 'Contributor' | 'Reader' | 'None'; let simple: ISimplePermission = 'None'; if ( showTricks === true ) { simple = 'SharePoint' ; } else if ( FPSUser.isSiteAdmin === true ) { simple = 'Admin' ; } else if ( FPSUser.manageWeb === true ) { simple = 'FullControl' ; } else if ( FPSUser.addAndCustomizePages === true ) { simple = 'Designer' ; } else if ( FPSUser.manageLists === true ) { simple = 'Editor' ; } else if ( FPSUser.approveItems === true ) { simple = 'Approver' ; } else if ( FPSUser.editListItems === true ) { simple = 'Contributor' ; } else if ( FPSUser.openItems === true ) { simple = 'Reader' ; } else { simple = 'None' ; } FPSUser.simple = simple; let endTime = new Date(); let totalTime = endTime.getTime() - startTime.getTime(); FPSUser.crunchTime = totalTime; console.log('PermissionCheck Time:', totalTime ); thisWindow.FPSUser = FPSUser; return FPSUser; } }