feat(auth): add user and role management

This commit is contained in:
Ali BARIN
2023-07-18 21:00:10 +00:00
parent a7104c41a2
commit 0deaa03218
108 changed files with 2909 additions and 388 deletions

View File

@@ -0,0 +1,8 @@
import userAbility from 'helpers/userAbility';
import useCurrentUser from 'hooks/useCurrentUser';
export default function useCurrentUserAbility() {
const currentUser = useCurrentUser();
return userAbility(currentUser);
}

View File

@@ -0,0 +1,10 @@
import { useQuery } from '@apollo/client';
import { IPermissionCatalog } from '@automatisch/types';
import { GET_PERMISSION_CATALOG } from 'graphql/queries/get-permission-catalog.ee';
export default function usePermissionCatalog(): IPermissionCatalog {
const { data } = useQuery(GET_PERMISSION_CATALOG);
return data?.getPermissionCatalog;
}

View File

@@ -0,0 +1,28 @@
import * as React from 'react';
import { useLazyQuery } from '@apollo/client';
import { IRole } from '@automatisch/types';
import { GET_ROLE } from 'graphql/queries/get-role.ee';
type QueryResponse = {
getRole: IRole;
}
export default function useRole(roleId?: string) {
const [getRole, { data, loading }] = useLazyQuery<QueryResponse>(GET_ROLE);
React.useEffect(() => {
if (roleId) {
getRole({
variables: {
id: roleId
}
});
}
}, [roleId]);
return {
role: data?.getRole,
loading
};
}

View File

@@ -0,0 +1,17 @@
import { useQuery } from '@apollo/client';
import { IRole } from '@automatisch/types';
import { GET_ROLES } from 'graphql/queries/get-roles.ee';
type QueryResponse = {
getRoles: IRole[];
}
export default function useRoles() {
const { data, loading } = useQuery<QueryResponse>(GET_ROLES, { context: { autoSnackbar: false } });
return {
roles: data?.getRoles || [],
loading
};
}

View File

@@ -0,0 +1,28 @@
import * as React from 'react';
import { useLazyQuery } from '@apollo/client';
import { IUser } from '@automatisch/types';
import { GET_USER } from 'graphql/queries/get-user';
type QueryResponse = {
getUser: IUser;
}
export default function useUser(userId?: string) {
const [getUser, { data, loading }] = useLazyQuery<QueryResponse>(GET_USER);
React.useEffect(() => {
if (userId) {
getUser({
variables: {
id: userId
}
});
}
}, [userId]);
return {
user: data?.getUser,
loading
};
}

View File

@@ -0,0 +1,33 @@
import { useQuery } from '@apollo/client';
import { IUser } from '@automatisch/types';
import { GET_USERS } from 'graphql/queries/get-users';
type Edge = {
node: IUser
}
type QueryResponse = {
getUsers: {
pageInfo: {
currentPage: number;
totalPages: number;
}
edges: Edge[]
}
}
export default function useUsers() {
const { data, loading } = useQuery<QueryResponse>(GET_USERS, {
variables: {
limit: 100,
offset: 0
}
});
const users = data?.getUsers.edges.map(({ node }) => node) || [];
return {
users,
loading
};
}