Web: Added canChangeUserRole function.
This commit is contained in:
parent
21e690ff95
commit
6fe3a695a6
@ -15,7 +15,7 @@ const User = ({
|
||||
currCanEditUsers,
|
||||
selectionParentRoom,
|
||||
setSelectionParentRoom,
|
||||
isArchiveRoot,
|
||||
canChangeUserRole,
|
||||
}) => {
|
||||
if (!selectionParentRoom) return null;
|
||||
if (!user.displayName && !user.email) return null;
|
||||
@ -66,11 +66,7 @@ const User = ({
|
||||
}
|
||||
};
|
||||
|
||||
const isAvailable =
|
||||
!isArchiveRoot &&
|
||||
currCanEditUsers &&
|
||||
currentMember?.id !== user.id &&
|
||||
userRole.access !== ShareAccessRights.FullAccess;
|
||||
const isCanChangeUserRole = user && canChangeUserRole(user);
|
||||
|
||||
return (
|
||||
<StyledUser isExpect={isExpect} key={user.id}>
|
||||
@ -91,7 +87,7 @@ const User = ({
|
||||
|
||||
{userRole && userRoleOptions && (
|
||||
<div className="role-wrapper">
|
||||
{isAvailable ? (
|
||||
{isCanChangeUserRole ? (
|
||||
<ComboBox
|
||||
className="role-combobox"
|
||||
selectedOption={userRole}
|
||||
|
@ -19,7 +19,6 @@ const Members = ({
|
||||
selfId,
|
||||
isOwner,
|
||||
isAdmin,
|
||||
isArchiveRoot,
|
||||
selection,
|
||||
|
||||
selectionParentRoom,
|
||||
@ -33,13 +32,14 @@ const Members = ({
|
||||
|
||||
changeUserType,
|
||||
canInviteUserInRoom,
|
||||
canChangeUserRole,
|
||||
}) => {
|
||||
const membersHelper = new MembersHelper({ t });
|
||||
|
||||
const [members, setMembers] = useState(null);
|
||||
const [showLoader, setShowLoader] = useState(false);
|
||||
|
||||
const isDisabledInvite = !canInviteUserInRoom({ access: selection.access });
|
||||
|
||||
const fetchMembers = async (roomId) => {
|
||||
let timerId;
|
||||
if (members) timerId = setTimeout(() => setShowLoader(true), 1000);
|
||||
@ -117,19 +117,13 @@ const Members = ({
|
||||
(member) => member.id === selfId
|
||||
);
|
||||
|
||||
const currCanEditUsers =
|
||||
isOwner ||
|
||||
isAdmin ||
|
||||
currentMember?.access === ShareAccessRights.FullAccess ||
|
||||
currentMember?.access === ShareAccessRights.RoomManager;
|
||||
|
||||
return (
|
||||
<>
|
||||
<StyledUserTypeHeader>
|
||||
<Text className="title">
|
||||
{t("UsersInRoom")} : {members.inRoom.length}
|
||||
</Text>
|
||||
{currCanEditUsers && !isArchiveRoot && (
|
||||
{canInviteUserInRoom && (
|
||||
<IconButton
|
||||
className={"icon"}
|
||||
title={t("Common:AddUsers")}
|
||||
@ -137,7 +131,6 @@ const Members = ({
|
||||
isFill={true}
|
||||
onClick={onClickInviteUsers}
|
||||
size={16}
|
||||
isDisabled={isDisabledInvite}
|
||||
/>
|
||||
)}
|
||||
</StyledUserTypeHeader>
|
||||
@ -145,7 +138,6 @@ const Members = ({
|
||||
<StyledUserList>
|
||||
{Object.values(members.inRoom).map((user) => (
|
||||
<User
|
||||
currCanEditUsers={currCanEditUsers}
|
||||
key={user.id}
|
||||
t={t}
|
||||
user={user}
|
||||
@ -156,7 +148,7 @@ const Members = ({
|
||||
roomType={selectionParentRoom.roomType}
|
||||
selectionParentRoom={selectionParentRoom}
|
||||
setSelectionParentRoom={setSelectionParentRoom}
|
||||
isArchiveRoot={isArchiveRoot}
|
||||
canChangeUserRole={canChangeUserRole}
|
||||
/>
|
||||
))}
|
||||
</StyledUserList>
|
||||
@ -164,7 +156,7 @@ const Members = ({
|
||||
{!!members.expected.length && (
|
||||
<StyledUserTypeHeader isExpect>
|
||||
<Text className="title">{t("ExpectPeople")}</Text>
|
||||
{currCanEditUsers && !isArchiveRoot && (
|
||||
{canInviteUserInRoom && (
|
||||
<IconButton
|
||||
className={"icon"}
|
||||
title={t("Repeat invitation")}
|
||||
@ -191,7 +183,6 @@ const Members = ({
|
||||
roomType={selectionParentRoom.roomType}
|
||||
selectionParentRoom={selectionParentRoom}
|
||||
setSelectionParentRoom={setSelectionParentRoom}
|
||||
isArchiveRoot={isArchiveRoot}
|
||||
/>
|
||||
))}
|
||||
</StyledUserList>
|
||||
@ -200,14 +191,7 @@ const Members = ({
|
||||
};
|
||||
|
||||
export default inject(
|
||||
({
|
||||
auth,
|
||||
filesStore,
|
||||
peopleStore,
|
||||
dialogsStore,
|
||||
accessRightsStore,
|
||||
treeFoldersStore,
|
||||
}) => {
|
||||
({ auth, filesStore, peopleStore, dialogsStore, accessRightsStore }) => {
|
||||
const { selectionParentRoom, setSelectionParentRoom } = auth.infoPanelStore;
|
||||
const {
|
||||
getRoomMembers,
|
||||
@ -217,9 +201,7 @@ export default inject(
|
||||
const { isOwner, isAdmin, id: selfId } = auth.userStore.user;
|
||||
const { setInvitePanelOptions } = dialogsStore;
|
||||
const { changeType: changeUserType } = peopleStore;
|
||||
const { canInviteUserInRoom } = accessRightsStore;
|
||||
|
||||
const { isArchiveFolderRoot } = treeFoldersStore;
|
||||
const { canInviteUserInRoom, canChangeUserRole } = accessRightsStore;
|
||||
|
||||
return {
|
||||
selectionParentRoom,
|
||||
@ -237,7 +219,7 @@ export default inject(
|
||||
|
||||
changeUserType,
|
||||
canInviteUserInRoom,
|
||||
isArchiveRoot: isArchiveFolderRoot,
|
||||
canChangeUserRole,
|
||||
};
|
||||
}
|
||||
)(
|
||||
|
@ -14,22 +14,43 @@ import {
|
||||
class AccessRightsStore {
|
||||
authStore = null;
|
||||
selectedFolderStore = null;
|
||||
treeFoldersStore = null;
|
||||
|
||||
constructor(authStore, selectedFolderStore) {
|
||||
constructor(
|
||||
authStore,
|
||||
selectedFolderStore,
|
||||
treeFoldersStore,
|
||||
versionHistoryStore
|
||||
) {
|
||||
this.authStore = authStore;
|
||||
this.selectedFolderStore = selectedFolderStore;
|
||||
this.treeFoldersStore = treeFoldersStore;
|
||||
|
||||
makeAutoObservable(this);
|
||||
}
|
||||
|
||||
canInviteUserInRoom = (room) => {
|
||||
const { rootFolderType } = this.selectedFolderStore;
|
||||
get canInviteUserInRoom() {
|
||||
const { isArchiveFolderRoot } = this.treeFoldersStore;
|
||||
const { access } = this.selectedFolderStore;
|
||||
|
||||
if (rootFolderType === FolderType.Archive) return false;
|
||||
if (isArchiveFolderRoot) return false;
|
||||
|
||||
const { inviteUsers } = getRoomRoleActions(room.access);
|
||||
return getRoomRoleActions(access).inviteUsers;
|
||||
}
|
||||
|
||||
return inviteUsers;
|
||||
canChangeUserRole = (currentRoomMember) => {
|
||||
const { isArchiveFolderRoot } = this.treeFoldersStore;
|
||||
const { access } = this.selectedFolderStore;
|
||||
const { userStore } = this.authStore;
|
||||
const { user } = userStore;
|
||||
|
||||
const isMyProfile = user.id === currentRoomMember.id;
|
||||
const isOwnerRoleRoom =
|
||||
currentRoomMember.access === ShareAccessRights.FullAccess;
|
||||
|
||||
if (isArchiveFolderRoot || isMyProfile || isOwnerRoleRoom) return false;
|
||||
|
||||
return getRoomRoleActions(access).changeUserRole;
|
||||
};
|
||||
|
||||
canArchiveRoom = (room) => {
|
||||
|
@ -36,8 +36,6 @@ const oformsStore = new OformsStore(authStore);
|
||||
|
||||
const selectedFolderStore = new SelectedFolderStore(authStore.settingsStore);
|
||||
|
||||
const accessRightsStore = new AccessRightsStore(authStore, selectedFolderStore);
|
||||
|
||||
const paymentStore = new PaymentStore();
|
||||
const wizardStore = new WizardStore();
|
||||
const setupStore = new SettingsSetupStore();
|
||||
@ -60,6 +58,11 @@ const tagsStore = new TagsStore();
|
||||
const treeFoldersStore = new TreeFoldersStore(selectedFolderStore);
|
||||
const settingsStore = new SettingsStore(thirdPartyStore, treeFoldersStore);
|
||||
|
||||
const accessRightsStore = new AccessRightsStore(
|
||||
authStore,
|
||||
selectedFolderStore,
|
||||
treeFoldersStore
|
||||
);
|
||||
const filesStore = new FilesStore(
|
||||
authStore,
|
||||
selectedFolderStore,
|
||||
|
Loading…
Reference in New Issue
Block a user