我正在写一个脚本,以管理员的身份从网络上删除数据并将数据插入数据库。我希望只有特定电子邮件的用户才能在表中插入任何新记录。
const { data, error } = await supabase.auth.signInWithPassword({ // Sign in as admin user
email: '[email protected]',
password: '*********',
})
console.log('login data', data) // prints all the session and user object
console.log('login error', error) // prints null
if (!error && data.session?.access_token && data.session?.refresh_token) {
const { data: setSessionData, error: setSessionError } = await supabase.auth.setSession({
access_token: data.session?.access_token,
refresh_token: data.session?.refresh_token,
})
console.log('last session', await supabase.auth.getSession())
// prints 'last session { data: { session: null }, error: null }'
}
const { error: insertError } = await supabase.from('stories').insert([record]) // record is the object that is already created above this code.
console.log('error', insertError)
/* prints 'error {
code: '42501',
details: null,
hint: null,
message: 'new row violates row-level security policy for table "stories"'
}'
*/
const { error: logutError } = await supabase.auth.signOut()
console.log('logutError', logutError) // prints 'logutError null' means working
登录和注销正在工作。我不知道为什么成功登录后getSession不起作用。
以下是不允许插入的管理员插入策略。
我试着允许RLS策略用于所有匿名用户,它正在工作。但当我应用管理员仅插入策略时不起作用。