mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
39 lines (38 loc) • 1.55 kB
JavaScript
;
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMySystemPermissions = exports.getMySystemRoles = void 0;
exports.getRoles = getRoles;
exports.haveISystemPermission = haveISystemPermission;
exports.getPermissionsForRoles = getPermissionsForRoles;
const create_selector_1 = require("mattermost-redux/selectors/create_selector");
const common_1 = require("mattermost-redux/selectors/entities/common");
function getRoles(state) {
return state.entities.roles.roles;
}
exports.getMySystemRoles = (0, create_selector_1.createSelector)('getMySystemRoles', common_1.getCurrentUser, (user) => {
if (user) {
return new Set(user.roles.split(' '));
}
return new Set();
});
exports.getMySystemPermissions = (0, create_selector_1.createSelector)('getMySystemPermissions', exports.getMySystemRoles, getRoles, (mySystemRoles, allRoles) => {
return getPermissionsForRoles(allRoles, mySystemRoles);
});
function haveISystemPermission(state, options) {
return (0, exports.getMySystemPermissions)(state).has(options.permission);
}
function getPermissionsForRoles(allRoles, roleSet) {
const permissions = new Set();
for (const roleName of roleSet) {
const role = allRoles[roleName];
if (!role) {
continue;
}
for (const permission of role.permissions) {
permissions.add(permission);
}
}
return permissions;
}