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

@@ -1,7 +1,4 @@
import type {
AuthError,
SignInWithPasswordlessCredentials,
} from '@supabase/gotrue-js';
import type { SignInWithPasswordlessCredentials } from '@supabase/gotrue-js';
import { useMutation } from '@tanstack/react-query';
@@ -15,7 +12,7 @@ export function useSignInWithOtp() {
const result = await client.auth.signInWithOtp(credentials);
if (result.error) {
if (shouldIgnoreError(result.error)) {
if (shouldIgnoreError(result.error.message)) {
console.warn(
`Ignoring error during development: ${result.error.message}`,
);
@@ -37,10 +34,10 @@ export function useSignInWithOtp() {
export default useSignInWithOtp;
function shouldIgnoreError(error: AuthError) {
function shouldIgnoreError(error: string) {
return isSmsProviderNotSetupError(error);
}
function isSmsProviderNotSetupError(error: AuthError) {
return error.message.includes(`sms Provider could not be found`);
function isSmsProviderNotSetupError(error: string) {
return error.includes(`sms Provider could not be found`);
}