mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* Migrating admin_definition from jsx to tsx * Fixing types and errors * Fixing all the types errors * Fixing linter errors * Removing no longer needed yup dependency * Moving admin_definition types to its own file * Removing a couple of anys * Fixing linter errors * Fixing tests snapshots * Fixing bug --------- Co-authored-by: Mattermost Build <build@mattermost.com>
52 lines
2.0 KiB
JavaScript
52 lines
2.0 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import {cloneDeep} from 'lodash';
|
|
|
|
import {ResourceToSysConsolePermissionsTable, RESOURCE_KEYS} from 'mattermost-redux/constants/permissions_sysconsole';
|
|
import {createSelector} from 'mattermost-redux/selectors/create_selector';
|
|
import {getMySystemPermissions} from 'mattermost-redux/selectors/entities/roles_helpers';
|
|
|
|
import AdminDefinition from 'components/admin_console/admin_definition';
|
|
|
|
export const getAdminDefinition = createSelector(
|
|
'getAdminDefinition',
|
|
() => AdminDefinition,
|
|
(state) => state.plugins.adminConsoleReducers,
|
|
(adminDefinition, reducers) => {
|
|
let result = cloneDeep(AdminDefinition);
|
|
for (const reducer of Object.values(reducers)) {
|
|
result = reducer(result);
|
|
}
|
|
return result;
|
|
},
|
|
);
|
|
|
|
export const getAdminConsoleCustomComponents = (state, pluginId) =>
|
|
state.plugins.adminConsoleCustomComponents[pluginId] || {};
|
|
|
|
export const getConsoleAccess = createSelector(
|
|
'getConsoleAccess',
|
|
getAdminDefinition,
|
|
getMySystemPermissions,
|
|
(adminDefinition, mySystemPermissions) => {
|
|
const consoleAccess = {read: {}, write: {}};
|
|
const addEntriesForKey = (entryKey) => {
|
|
const permissions = ResourceToSysConsolePermissionsTable[entryKey].filter((x) => mySystemPermissions.has(x));
|
|
consoleAccess.read[entryKey] = permissions.length !== 0;
|
|
consoleAccess.write[entryKey] = permissions.some((permission) => permission.startsWith('sysconsole_write_'));
|
|
};
|
|
const mapAccessValuesForKey = ([key]) => {
|
|
if (typeof RESOURCE_KEYS[key.toUpperCase()] === 'object') {
|
|
Object.values(RESOURCE_KEYS[key.toUpperCase()]).forEach((entry) => {
|
|
addEntriesForKey(entry);
|
|
});
|
|
} else {
|
|
addEntriesForKey(key);
|
|
}
|
|
};
|
|
Object.entries(adminDefinition).forEach(mapAccessValuesForKey);
|
|
return consoleAccess;
|
|
},
|
|
);
|