UserInfoRolesAccessContext.tsx 992 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React, { useMemo } from 'react';
  2. import { useGetUserInfo } from 'lib/hooks/api/roles';
  3. import { modifyRolesData, RolesModifiedTypes } from 'lib/permissions';
  4. export interface UserInfoType {
  5. username: string;
  6. roles: RolesModifiedTypes;
  7. rbacFlag: boolean;
  8. }
  9. export const UserInfoRolesAccessContext = React.createContext({
  10. username: '',
  11. roles: new Map() as RolesModifiedTypes,
  12. rbacFlag: true,
  13. });
  14. export const UserInfoRolesAccessProvider: React.FC<
  15. React.PropsWithChildren<unknown>
  16. > = ({ children }) => {
  17. const { data } = useGetUserInfo();
  18. const contextValue = useMemo(() => {
  19. const username = data?.userInfo?.username ? data?.userInfo?.username : '';
  20. const roles = modifyRolesData(data?.userInfo?.permissions);
  21. return {
  22. username,
  23. rbacFlag: !!data?.rbacEnabled,
  24. roles,
  25. };
  26. }, [data]);
  27. return (
  28. <UserInfoRolesAccessContext.Provider value={contextValue}>
  29. {children}
  30. </UserInfoRolesAccessContext.Provider>
  31. );
  32. };