Newer
Older
import { rootSelector } from '@/redux/root/root.selectors';
import { createSelector } from '@reduxjs/toolkit';
import { projectIdSelector } from '@/redux/project/project.selectors';
import { hasPrivilegeToObject } from '@/redux/user/user.utils';
import { UserPrivilege } from '@/types/models';
export const userSelector = createSelector(rootSelector, state => state.user);
export const authenticatedUserSelector = createSelector(userSelector, state => state.authenticated);
export const loadingUserSelector = createSelector(userSelector, state => state.loading);
export const loginUserSelector = createSelector(userSelector, state => state.login);
export const userRoleSelector = createSelector(userSelector, state => state.role);
export const userPrivilegesSelector = createSelector(
userSelector,
state => state.userData?.privileges || [],
);
export const hasPrivilegeToWriteProjectSelector = createSelector(
userPrivilegesSelector,
projectIdSelector,
(userPrivileges: UserPrivilege[], projectId: string | undefined): boolean => {
if (!projectId) {
return false;
}
return hasPrivilegeToObject(userPrivileges, 'WRITE_PROJECT', projectId);
},
);