fix(users): resolve visibility of new users and persistence of matrix templates & 3D rotation
This commit is contained in:
@@ -345,6 +345,22 @@ export const useMatrizAcessos = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
try {
|
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)
|
// 1. Gravação direta e individual por usuário na tabela user_interface_permissions (Prioridade Máxima)
|
||||||
const dbPermission =
|
const dbPermission =
|
||||||
novoNivel === 'criar'
|
novoNivel === 'criar'
|
||||||
@@ -403,6 +419,21 @@ export const useMatrizAcessos = () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
try {
|
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
|
// 1. Gravação direta em lote na tabela user_interface_permissions
|
||||||
const uipRecords = Object.entries(novoMap).map(([resKey, nivel]) => ({
|
const uipRecords = Object.entries(novoMap).map(([resKey, nivel]) => ({
|
||||||
user_id: userId,
|
user_id: userId,
|
||||||
|
|||||||
@@ -94,14 +94,14 @@ export function useUserManagement() {
|
|||||||
.from('profiles')
|
.from('profiles')
|
||||||
.select(`
|
.select(`
|
||||||
*,
|
*,
|
||||||
functions (name, description),
|
functions:function_id (name, description),
|
||||||
privileges (name, description, permissions)
|
privileges:privilege_id (name, description, permissions)
|
||||||
`)
|
`)
|
||||||
.neq('status', 'pending')
|
.neq('status', 'pending')
|
||||||
.order('created_at', { ascending: false });
|
.order('created_at', { ascending: false });
|
||||||
|
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
setUsers(data || []);
|
setUsers((data as any) || []);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching users:', error);
|
console.error('Error fetching users:', error);
|
||||||
toast.error('Erro ao carregar usuários');
|
toast.error('Erro ao carregar usuários');
|
||||||
@@ -150,7 +150,7 @@ export function useUserManagement() {
|
|||||||
.order('name');
|
.order('name');
|
||||||
|
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
setPrivileges(data || []);
|
setPrivileges((data as any) || []);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching privileges:', error);
|
console.error('Error fetching privileges:', error);
|
||||||
toast.error('Erro ao carregar privilégios');
|
toast.error('Erro ao carregar privilégios');
|
||||||
@@ -215,7 +215,7 @@ export function useUserManagement() {
|
|||||||
const err = error as Error;
|
const err = error as Error;
|
||||||
if (err.message?.includes('User with this email already exists')) {
|
if (err.message?.includes('User with this email already exists')) {
|
||||||
toast.error('Este e-mail já está em uso');
|
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');
|
toast.error('Apenas administradores podem criar usuários');
|
||||||
} else {
|
} else {
|
||||||
toast.error('Erro ao criar usuário');
|
toast.error('Erro ao criar usuário');
|
||||||
@@ -403,7 +403,7 @@ export function useUserManagement() {
|
|||||||
.from('privileges')
|
.from('privileges')
|
||||||
.insert({
|
.insert({
|
||||||
...data,
|
...data,
|
||||||
permissions: data.permissions || {}
|
permissions: (data.permissions as any) || {}
|
||||||
})
|
})
|
||||||
.select()
|
.select()
|
||||||
.single();
|
.single();
|
||||||
@@ -429,7 +429,7 @@ export function useUserManagement() {
|
|||||||
try {
|
try {
|
||||||
const { error } = await supabase
|
const { error } = await supabase
|
||||||
.from('privileges')
|
.from('privileges')
|
||||||
.update(data)
|
.update(data as any)
|
||||||
.eq('id', id);
|
.eq('id', id);
|
||||||
|
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
|
|||||||
Reference in New Issue
Block a user