我正在尝试按照[文档](https://marmelab.com/react-admin/Permissions.html)获得仅某些使用supabase的用户可用的资源之一。
但是,当我查看 authProvide.ts 来检查 supabaseAuthProvider 时,我可以看到该钩子的行是空的(在 node_module/ra-supabase-core/src 中)
file located at:
node_module/ra-supabase-core/src/authProvider.ts
export const supabaseAuthProvider = (
client: SupabaseClient,
{ getIdentity, redirectTo }: SupabaseAuthProviderOptions
): SupabaseAuthProvider => {
return {
async login(params) {
// some code here
},
// other functions here
async getPermissions() {
return;
},
async getIdentity() {
// some code here
},
};
};
这是否意味着 SUPABASE(还?)不支持 getPermissions() ?我应该复制该文件的内容并用作我自己的自定义 authProvider,添加缺少的代码吗?
非常感谢
编辑 还在四处寻找,今天我发现的是
//src/AuthProvider.jsx
import { supabaseAuthProvider } from 'ra-supabase'
import { supabaseClient } from './supabaseClient'
export const authProvider = supabaseAuthProvider(supabaseClient, {
getIdentity: async (user) => {
const { data, error } = await supabaseClient
.from('profiles')
.select('id, name, apelido')
.match({ email: user.email })
.single()
if (!data || error) {
throw new Error()
}
return {
id: data.id,
fullName: `${data.name} ${data.apelido}`,
}
},
getPermissions: async () => {
console.log('getPermissions')
const user = supabaseClient.auth.user()
return user ? user.app_metadata.groups : []
},
})
即使 getIdentity 运行良好,我也从未从 console.log 获取 getPermissions,这正常吗?
谢谢
首先,到目前为止你必须自己实现
getPermissions
方法,但幸运的是有 pull request 来增强这一点。
其次,正如文档所解释的那样,React-admin 默认情况下不使用权限,但它提供了
usePermissions
钩子来检索当前用户的权限。这意味着您将通过调用 usePermissions
挂钩在控制台中看到您的日志。
希望这有帮助:)