Web: Client: Changing access rights to modules without user request

This commit is contained in:
Alexey Kostenko 2021-05-18 10:44:19 +03:00
parent 08cc7b3560
commit 969f0abb7c
3 changed files with 75 additions and 8 deletions

View File

@ -23,6 +23,7 @@ import PeopleSelector from "people/PeopleSelector";
import { inject, observer } from "mobx-react";
import { getUserRole } from "@appserver/people/src/helpers/people-helpers";
import { getNewModulesList } from "../../utils";
import isEmpty from "lodash/isEmpty";
@ -408,15 +409,17 @@ class PortalAdmins extends Component {
});
};
onModuleToggle = (moduleId, access) => {
onFullAccessClick = (access) => {
const { selectedUser } = this.state;
const { changeAdmins, admins, setAdmins } = this.props;
changeAdmins([selectedUser.id], moduleId, access)
changeAdmins([selectedUser.id], fullAccessId, access)
.then(async () => {
const updatedUser = await api.people.getUserById([selectedUser.id]);
const updatedAdmins = admins.map((admin) => {
if (admin.id === selectedUser.id) return updatedUser;
if (admin.id === selectedUser.id) {
return updatedUser;
}
return admin;
});
@ -430,6 +433,49 @@ class PortalAdmins extends Component {
});
};
onModuleToggle = (module, access) => {
const { selectedUser } = this.state;
const { changeAdmins, admins, setAdmins, modules } = this.props;
changeAdmins([selectedUser.id], module.id, access)
.then(async () => {
const updatedAdmins = admins.map((admin) => {
if (admin.id === selectedUser.id) {
if (!admin.listAdminModules) {
admin.listAdminModules = [module.appName];
} else if (!access) {
const moduleIndex = admin.listAdminModules.findIndex(
(adminModule) => {
return module.appName === adminModule;
}
);
admin.listAdminModules.splice(moduleIndex, 1);
} else if (access) {
const newModuleList = getNewModulesList(
module,
admin.listAdminModules,
modules
);
admin.listAdminModules = newModuleList;
}
this.setState({
selectedUser: admin,
});
}
return admin;
});
setAdmins(updatedAdmins);
})
.catch((e) => {
console.log(e);
});
};
isModuleAdmin = (user, moduleName) => {
let isModuleAdmin = false;
@ -557,10 +603,7 @@ class PortalAdmins extends Component {
className="toggle-btn"
isChecked={selectedUser.isAdmin}
onChange={() =>
this.onModuleToggle(
fullAccessId,
!selectedUser.isAdmin
)
this.onFullAccessClick(!selectedUser.isAdmin)
}
isDisabled={false}
/>
@ -595,7 +638,7 @@ class PortalAdmins extends Component {
inputId={module.id}
onChange={() =>
this.onModuleToggle(
module.id,
module,
!isModuleAdmin
)
}

View File

@ -0,0 +1,23 @@
export const getNewModulesList = (
module,
listAdminModules,
availableModules
) => {
const newModulesList = [];
for (let i = 0; i < availableModules.length; i++) {
if (availableModules[i].appName === module.appName) {
newModulesList.push(availableModules[i].appName);
continue;
}
for (let k = 0; k < listAdminModules.length; k++) {
if (availableModules[i].appName === listAdminModules[k]) {
newModulesList.push(availableModules[i].appName);
break;
}
}
}
return newModulesList;
};

View File

@ -8,3 +8,4 @@ export { checkPropertyByLink } from "./checkPropertyByLink";
export { getFromSessionStorage } from "./getFromSessionStorage";
export { saveToSessionStorage } from "./saveToSessionStorage";
export { getSettingsIndex } from "./getSettingsIndex";
export { getNewModulesList } from "./getNewModulesList";