feat: roles permission & style & component.

This commit is contained in:
elforjani13
2021-11-21 01:13:41 +02:00
parent 3d3827b683
commit c139e129bf
21 changed files with 730 additions and 44 deletions

View File

@@ -29,3 +29,4 @@ export * from './GenericResource';
export * from './jobs';
export * from './misc';
export * from './cashflowAccounts'
export * from './roles'

77
src/hooks/query/roles.js Normal file
View File

@@ -0,0 +1,77 @@
import { useMutation, useQueryClient } from 'react-query';
import { useRequestQuery } from '../useQueryRequest';
import useApiRequest from '../useRequest';
import t from './types';
// Common invalidate queries.
const commonInvalidateQueries = (queryClient) => {
queryClient.invalidateQueries(t.ROLES_PERMISSIONS_SCHEMA);
queryClient.invalidateQueries(t.ROLE);
};
/**
* Edit role .
*/
export function useEditRolePermissionSchema(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation(([id, values]) => apiRequest.post(`roles/${id}`, values), {
onSuccess: () => {
// Common invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
});
}
/**
* Create a new roles
*/
export function useCreateRolePermissionSchema(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation((values) => apiRequest.post(`roles`, values), {
onSuccess: () => {
// Common invalidate queries.
commonInvalidateQueries(queryClient);
},
...props,
});
}
/**
* Delete the given role.
*/
export function useDeleteRole(props) {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation((id) => apiRequest.delete(`roles/${id}`), {
onSuccess: (res, id) => {
// Invalidate specific role.
queryClient.invalidateQueries(t.ROLE, id);
commonInvalidateQueries(queryClient);
},
...props,
});
}
/**
* Retrive the roles permissions schema.
*/
export function usePermissionsSchema(query, props) {
return useRequestQuery(
[t.ROLES_PERMISSIONS_SCHEMA, query],
{ method: 'get', url: 'roles/permissions/schema', params: query },
{
select: (res) => res.data.data,
defaultData: {
roles: [],
},
...props,
},
);
}

View File

@@ -102,6 +102,12 @@ const USERS = {
USER: 'USER',
};
const ROLES = {
ROLE: 'ROLE',
ROLES: 'ROLES',
ROLES_PERMISSIONS_SCHEMA: 'ROLES_PERMISSIONS_SCHEMA',
};
const SETTING = {
SETTING: 'SETTING',
SETTING_INVOICES: 'SETTING_INVOICES',
@@ -177,4 +183,5 @@ export default {
...LANDED_COSTS,
...CONTACTS,
...CASH_FLOW_ACCOUNTS,
...ROLES,
};