🔒 refactor: Apply interface settings to all Roles (#3967)

This commit is contained in:
Danny Avila 2024-09-09 20:15:08 -04:00 committed by GitHub
parent 748b41eda4
commit 0148b9b097
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 20 additions and 15 deletions

View file

@ -35,7 +35,10 @@ const AuthContextProvider = ({
const [error, setError] = useState<string | undefined>(undefined);
const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);
const { data: userRole = null } = useGetRole(SystemRoles.USER, {
enabled: !!(isAuthenticated && user?.role),
enabled: !!(isAuthenticated && (user?.role ?? '')),
});
const { data: adminRole = null } = useGetRole(SystemRoles.ADMIN, {
enabled: !!(isAuthenticated && user?.role === SystemRoles.ADMIN),
});
const navigate = useNavigate();
@ -130,7 +133,7 @@ const AuthContextProvider = ({
if (userQuery.data) {
setUser(userQuery.data);
} else if (userQuery.isError) {
doSetError((userQuery?.error as Error).message);
doSetError((userQuery.error as Error).message);
navigate('/login', { replace: true });
}
if (error && isAuthenticated) {
@ -179,11 +182,12 @@ const AuthContextProvider = ({
setError,
roles: {
[SystemRoles.USER]: userRole,
[SystemRoles.ADMIN]: adminRole,
},
isAuthenticated,
}),
// eslint-disable-next-line react-hooks/exhaustive-deps
[user, error, isAuthenticated, token, userRole],
[user, error, isAuthenticated, token, userRole, adminRole],
);
return <AuthContext.Provider value={memoedValue}>{children}</AuthContext.Provider>;

View file

@ -1,5 +1,5 @@
import { useMemo, useCallback } from 'react';
import { SystemRoles, PermissionTypes, Permissions } from 'librechat-data-provider';
import { PermissionTypes, Permissions } from 'librechat-data-provider';
import { useAuthContext } from '~/hooks/AuthContext';
const useHasAccess = ({
@ -13,9 +13,7 @@ const useHasAccess = ({
const checkAccess = useCallback(
({ user, permissionType, permission }) => {
if (isAuthenticated && user?.role === SystemRoles.ADMIN) {
return true;
} else if (isAuthenticated && user?.role != null && roles && roles[user.role]) {
if (isAuthenticated && user?.role != null && roles && roles[user.role]) {
return roles[user.role]?.[permissionType]?.[permission] === true;
}
return false;