mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-15 03:32:15 +01:00
hide actions and pages in the frontend according to permissions
This commit is contained in:
@@ -5,13 +5,18 @@ import { useCurrentTimeEntryStore } from '@/utils/useCurrentTimeEntry';
|
||||
import { useClientsStore } from '@/utils/useClients';
|
||||
import { useMembersStore } from '@/utils/useMembers';
|
||||
import { useTimeEntriesStore } from '@/utils/useTimeEntries';
|
||||
import { canViewClients, canViewMembers } from '@/utils/permissions';
|
||||
|
||||
export function initializeStores() {
|
||||
useProjectsStore().fetchProjects();
|
||||
useTasksStore().fetchTasks();
|
||||
useTagsStore().fetchTags();
|
||||
useCurrentTimeEntryStore().fetchCurrentTimeEntry();
|
||||
useClientsStore().fetchClients();
|
||||
useMembersStore().fetchMembers();
|
||||
if (canViewMembers()) {
|
||||
useMembersStore().fetchMembers();
|
||||
}
|
||||
if (canViewClients()) {
|
||||
useClientsStore().fetchClients();
|
||||
}
|
||||
useTimeEntriesStore().fetchTimeEntries();
|
||||
}
|
||||
|
||||
83
resources/js/utils/permissions.ts
Normal file
83
resources/js/utils/permissions.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import { usePage } from '@inertiajs/vue3';
|
||||
|
||||
const page = usePage<{
|
||||
auth: {
|
||||
permissions: string[];
|
||||
};
|
||||
}>();
|
||||
|
||||
function currentUserHasPermission(permission: string) {
|
||||
console.log(page.props.auth.permissions);
|
||||
if (Array.isArray(page.props.auth.permissions)) {
|
||||
return page.props.auth.permissions.includes(permission);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function canUpdateOrganization() {
|
||||
return currentUserHasPermission('organizations:update');
|
||||
}
|
||||
|
||||
export function canViewProjects() {
|
||||
return currentUserHasPermission('projects:view');
|
||||
}
|
||||
|
||||
export function canCreateProjects() {
|
||||
return currentUserHasPermission('projects:create');
|
||||
}
|
||||
|
||||
export function canUpdateProjects() {
|
||||
return currentUserHasPermission('projects:update');
|
||||
}
|
||||
|
||||
export function canDeleteProjects() {
|
||||
return currentUserHasPermission('projects:delete');
|
||||
}
|
||||
|
||||
export function canViewProjectMembers() {
|
||||
return currentUserHasPermission('project-members:view');
|
||||
}
|
||||
|
||||
export function canCreateTasks() {
|
||||
return currentUserHasPermission('tasks:create');
|
||||
}
|
||||
|
||||
export function canCreateClients() {
|
||||
return currentUserHasPermission('clients:create');
|
||||
}
|
||||
|
||||
export function canDeleteClients() {
|
||||
return currentUserHasPermission('clients:delete');
|
||||
}
|
||||
|
||||
export function canViewClients() {
|
||||
return currentUserHasPermission('clients:view');
|
||||
}
|
||||
|
||||
export function canViewMembers() {
|
||||
return currentUserHasPermission('members:view');
|
||||
}
|
||||
|
||||
export function canDeleteMembers() {
|
||||
return currentUserHasPermission('members:delete');
|
||||
}
|
||||
|
||||
export function canInvitePlaceholderMembers() {
|
||||
return currentUserHasPermission('members:invite-placeholder');
|
||||
}
|
||||
|
||||
export function canCreateInvitations() {
|
||||
return currentUserHasPermission('invitations:create');
|
||||
}
|
||||
|
||||
export function canViewTags() {
|
||||
return currentUserHasPermission('tags:view');
|
||||
}
|
||||
|
||||
export function canCreateTags() {
|
||||
return currentUserHasPermission('tags:create');
|
||||
}
|
||||
|
||||
export function canDeleteTags() {
|
||||
return currentUserHasPermission('tags:delete');
|
||||
}
|
||||
Reference in New Issue
Block a user