UNPKG

jsm-core

Version:
58 lines (57 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasPermission = void 0; const hasPermission = (permissions, currentUser, permissionName) => { if (!permissionName) return true; if (Array.isArray(permissionName) && permissionName.length === 0) return true; // logger.debug('hasPermission', permissionName, currentUser?.email); let perms = []; let permsObject = {}; if (typeof permissionName === "string") perms.push(permissionName); else for (const p of permissionName) { perms.push(p); } for (const p of permissions) { if (perms.includes(p.name)) permsObject[p.name] = p._id; } // logger.debug('hasPermission', { // perms, // permsObj, // permissions, // currentUserPermissions: currentUser?.permissions, // }); let granted = false; if (!currentUser || currentUser === null) { /* empty */ } else if (typeof permissionName === "string") { granted = currentUser.permissions.includes(permsObject[permissionName]); } else { // TODO manage multiple permissions // eslint-disable-next-line unicorn/no-array-reduce granted = permissionName.reduce((previous, _permissionName) => { var _a; return (previous || ((_a = currentUser === null || currentUser === void 0 ? void 0 : currentUser.permissions) === null || _a === void 0 ? void 0 : _a.includes(permsObject[_permissionName]))); }, false); // return permissionName.reduce((prev: boolean, _permissionName: string) => { // return userAndLoadedState.user && userAndLoadedState.user !== null ? // prev && userAndLoadedState.user.permissions.includes( // permsObj[_permissionName] // ) : false; // }, true); } // logger.debug("hasPermission", 'current user is', { // user: currentUser ? buildUserFullName(currentUser.profile) : null, // permissionName: typeof permissionName === "string" ? permissionName : permissionName?.join(', '), // granted // }); return granted; }; exports.hasPermission = hasPermission;