jsm-core
Version:
Core library for JSM project
58 lines (57 loc) • 2.23 kB
JavaScript
;
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;