fix(auth): replace .maybeSingle() with .limit(1) to avoid 406 Not Acceptable errors on PostgREST for missing resources
This commit is contained in:
@@ -46,14 +46,14 @@ export function UserInfo() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function fetchUserProfile() {
|
async function fetchUserProfile() {
|
||||||
if (!user) return;
|
if (!user) return;
|
||||||
const { data, error } = await supabase
|
const { data: profileArr, error } = await supabase
|
||||||
.from('profiles')
|
.from('profiles')
|
||||||
.select('full_name, email, profile_image_url')
|
.select('full_name, email, profile_image_url')
|
||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.maybeSingle();
|
.limit(1);
|
||||||
|
|
||||||
if (!error && data) {
|
if (!error && profileArr && profileArr.length > 0) {
|
||||||
setProfile(data);
|
setProfile(profileArr[0]);
|
||||||
} else {
|
} else {
|
||||||
setProfile({
|
setProfile({
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
|||||||
@@ -209,16 +209,17 @@ export function useInterfaceResources() {
|
|||||||
.from('profiles')
|
.from('profiles')
|
||||||
.select('privilege_id')
|
.select('privilege_id')
|
||||||
.eq('id', userId)
|
.eq('id', userId)
|
||||||
.maybeSingle();
|
.limit(1);
|
||||||
|
|
||||||
if (profileError) throw profileError;
|
if (profileError) throw profileError;
|
||||||
|
|
||||||
if (!profile?.privilege_id) return [];
|
const priv = profile && profile.length > 0 ? profile[0].privilege_id : null;
|
||||||
|
if (!priv) return [];
|
||||||
|
|
||||||
const { data, error } = await supabase
|
const { data, error } = await supabase
|
||||||
.from('privilege_interface_resources')
|
.from('privilege_interface_resources')
|
||||||
.select('resource_key')
|
.select('resource_key')
|
||||||
.eq('privilege_id', profile.privilege_id);
|
.eq('privilege_id', priv);
|
||||||
|
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
|
|
||||||
|
|||||||
@@ -67,19 +67,20 @@ export function useUserResourcePermissions(resourceKey: string) {
|
|||||||
// Enriquecer com dados do usuário
|
// Enriquecer com dados do usuário
|
||||||
const enrichedData = await Promise.all(
|
const enrichedData = await Promise.all(
|
||||||
(data || []).map(async (permission) => {
|
(data || []).map(async (permission) => {
|
||||||
const { data: profileData } = await supabase
|
const { data: profileDataArr } = await supabase
|
||||||
.from('profiles')
|
.from('profiles')
|
||||||
.select('email, full_name')
|
.select('email, full_name')
|
||||||
.eq('id', permission.user_id)
|
.eq('id', permission.user_id)
|
||||||
.maybeSingle();
|
.limit(1);
|
||||||
|
|
||||||
|
const profileData = profileDataArr && profileDataArr.length > 0 ? profileDataArr[0] : null;
|
||||||
return {
|
return {
|
||||||
user_id: permission.user_id,
|
user_id: permission.user_id,
|
||||||
resource_key: permission.resource_key,
|
resource_key: permission.resource_key,
|
||||||
permission_level: permission.permission as PermissionLevel,
|
permission_level: permission.permission as PermissionLevel,
|
||||||
created_at: permission.created_at,
|
created_at: permission.created_at,
|
||||||
updated_at: permission.updated_at,
|
updated_at: permission.updated_at,
|
||||||
profiles: profileData
|
profiles: profileData as any
|
||||||
} as UserInterfacePermission;
|
} as UserInterfacePermission;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@@ -167,12 +168,13 @@ export function useUserResourcePermissions(resourceKey: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify user exists
|
// Verify user exists
|
||||||
const { data: userExists, error: userError } = await supabase
|
const { data: userExistsArr, error: userError } = await supabase
|
||||||
.from('profiles')
|
.from('profiles')
|
||||||
.select('id, email')
|
.select('id, email')
|
||||||
.eq('id', userId)
|
.eq('id', userId)
|
||||||
.maybeSingle();
|
.limit(1);
|
||||||
|
|
||||||
|
const userExists = userExistsArr && userExistsArr.length > 0 ? userExistsArr[0] : null;
|
||||||
if (userError || !userExists) {
|
if (userError || !userExists) {
|
||||||
console.error('User not found:', { userId, userError });
|
console.error('User not found:', { userId, userError });
|
||||||
toast.error('Usuário não encontrado');
|
toast.error('Usuário não encontrado');
|
||||||
|
|||||||
Reference in New Issue
Block a user