Implement custom roles and improve permissions logic

The commit refactors the handling of account roles and enhances permissions checks. The account role has been shifted to use a string type, providing the ability to define custom roles. It also introduces the RolesDataProvider component, which stipulates role-related data for different forms and tables. The modification goes further to consider user role hierarchy in permissions checks, offering a more granular access control.
This commit is contained in:
giancarlo
2024-03-29 14:48:45 +08:00
parent f1967a686c
commit 99db8f4ca4
41 changed files with 498 additions and 228 deletions

View File

@@ -26,7 +26,7 @@ export class AccountMembersService {
async updateMemberRole(params: {
accountId: string;
userId: string;
role: Database['public']['Enums']['account_role'];
role: string;
}) {
const { data, error } = await this.client
.from('accounts_memberships')

View File

@@ -1,13 +1,19 @@
import { SupabaseClient } from '@supabase/supabase-js';
import 'server-only';
import { z } from 'zod';
import { Database } from '@kit/supabase/database';
import { LeaveTeamAccountSchema } from '../../schema/leave-team-account.schema';
export class LeaveAccountService {
constructor(private readonly client: SupabaseClient<Database>) {}
async leaveTeamAccount(params: { accountId: string; userId: string }) {
async leaveTeamAccount(params: z.infer<typeof LeaveTeamAccountSchema>) {
await Promise.resolve();
console.log(params);
// TODO
// implement this method
}