fix(users): resolve visibility of new users and persistence of matrix templates & 3D rotation

This commit is contained in:
2026-09-24 17:32:17 +00:00
parent 0249f6cc33
commit 48e845c243
2 changed files with 38 additions and 7 deletions
+31
View File
@@ -345,6 +345,22 @@ export const useMatrizAcessos = () => {
);
try {
// Garantir que a chave do recurso exista em interface_resources para evitar erro de Foreign Key
const { error: resourceError } = await supabase
.from('interface_resources')
.upsert(
{
resource_key: resourceKey,
resource_name: resourceKey,
is_submenu: false
},
{ onConflict: 'resource_key' }
);
if (resourceError) {
console.error('Erro ao registrar recurso na tabela interface_resources:', resourceError);
}
// 1. Gravação direta e individual por usuário na tabela user_interface_permissions (Prioridade Máxima)
const dbPermission =
novoNivel === 'criar'
@@ -403,6 +419,21 @@ export const useMatrizAcessos = () => {
);
try {
// Garantir que todos os recursos do template existam em interface_resources
const resourceRecords = Object.keys(novoMap).map(resKey => ({
resource_key: resKey,
resource_name: resKey,
is_submenu: false
}));
const { error: resourceError } = await supabase
.from('interface_resources')
.upsert(resourceRecords, { onConflict: 'resource_key' });
if (resourceError) {
console.error('Erro ao registrar recursos na tabela interface_resources:', resourceError);
}
// 1. Gravação direta em lote na tabela user_interface_permissions
const uipRecords = Object.entries(novoMap).map(([resKey, nivel]) => ({
user_id: userId,
+7 -7
View File
@@ -94,14 +94,14 @@ export function useUserManagement() {
.from('profiles')
.select(`
*,
functions (name, description),
privileges (name, description, permissions)
functions:function_id (name, description),
privileges:privilege_id (name, description, permissions)
`)
.neq('status', 'pending')
.order('created_at', { ascending: false });
if (error) throw error;
setUsers(data || []);
setUsers((data as any) || []);
} catch (error) {
console.error('Error fetching users:', error);
toast.error('Erro ao carregar usuários');
@@ -150,7 +150,7 @@ export function useUserManagement() {
.order('name');
if (error) throw error;
setPrivileges(data || []);
setPrivileges((data as any) || []);
} catch (error) {
console.error('Error fetching privileges:', error);
toast.error('Erro ao carregar privilégios');
@@ -215,7 +215,7 @@ export function useUserManagement() {
const err = error as Error;
if (err.message?.includes('User with this email already exists')) {
toast.error('Este e-mail já está em uso');
} else if (error.message?.includes('Only admins can create new users')) {
} else if (err.message?.includes('Only admins can create new users')) {
toast.error('Apenas administradores podem criar usuários');
} else {
toast.error('Erro ao criar usuário');
@@ -403,7 +403,7 @@ export function useUserManagement() {
.from('privileges')
.insert({
...data,
permissions: data.permissions || {}
permissions: (data.permissions as any) || {}
})
.select()
.single();
@@ -429,7 +429,7 @@ export function useUserManagement() {
try {
const { error } = await supabase
.from('privileges')
.update(data)
.update(data as any)
.eq('id', id);
if (error) throw error;