🔗 fix: Shared Link with Markdown Code Error (#6016)

* refactor: Export AuthContext from AuthContextProvider

* refactor: Update useHasAccess to utilize useContext for AuthContext

* refactor: Enhance type definitions in useHasAccess for better type safety
This commit is contained in:
Danny Avila 2025-02-24 22:52:54 -05:00 committed by GitHub
parent 50e8769340
commit f362f18870
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 9 deletions

View file

@ -8,7 +8,7 @@ import {
createContext, createContext,
} from 'react'; } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useRecoilState, useRecoilValue } from 'recoil'; import { useRecoilState } from 'recoil';
import { setTokenHeader, SystemRoles } from 'librechat-data-provider'; import { setTokenHeader, SystemRoles } from 'librechat-data-provider';
import type * as t from 'librechat-data-provider'; import type * as t from 'librechat-data-provider';
import { import {
@ -200,7 +200,7 @@ const AuthContextProvider = ({
}, },
isAuthenticated, isAuthenticated,
}), }),
// eslint-disable-next-line react-hooks/exhaustive-deps
[user, error, isAuthenticated, token, userRole, adminRole], [user, error, isAuthenticated, token, userRole, adminRole],
); );
@ -217,4 +217,4 @@ const useAuthContext = () => {
return context; return context;
}; };
export { AuthContextProvider, useAuthContext }; export { AuthContextProvider, useAuthContext, AuthContext };

View file

@ -1,6 +1,6 @@
import { useMemo, useCallback } from 'react'; import { useMemo, useCallback, useContext } from 'react';
import { PermissionTypes, Permissions } from 'librechat-data-provider'; import type { TUser, PermissionTypes, Permissions } from 'librechat-data-provider';
import { useAuthContext } from '~/hooks/AuthContext'; import { AuthContext } from '~/hooks/AuthContext';
const useHasAccess = ({ const useHasAccess = ({
permissionType, permissionType,
@ -9,16 +9,31 @@ const useHasAccess = ({
permissionType: PermissionTypes; permissionType: PermissionTypes;
permission: Permissions; permission: Permissions;
}) => { }) => {
const { isAuthenticated, user, roles } = useAuthContext(); const authContext = useContext(AuthContext);
const user = authContext?.user;
const roles = authContext?.roles;
const isAuthenticated = authContext?.isAuthenticated || false;
const checkAccess = useCallback( const checkAccess = useCallback(
({ user, permissionType, permission }) => { ({
user,
permissionType,
permission,
}: {
user?: TUser | null;
permissionType: PermissionTypes;
permission: Permissions;
}) => {
if (!authContext) {
return false;
}
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 roles[user.role]?.[permissionType]?.[permission] === true;
} }
return false; return false;
}, },
[isAuthenticated, roles], [authContext, isAuthenticated, roles],
); );
const hasAccess = useMemo( const hasAccess = useMemo(