fix: improve role assignment logic and permission handling in dashboard components
This commit is contained in:
2
packages/backend/convex/_generated/api.d.ts
vendored
2
packages/backend/convex/_generated/api.d.ts
vendored
@@ -19,7 +19,6 @@ import type * as dashboard from "../dashboard.js";
|
||||
import type * as funcionarios from "../funcionarios.js";
|
||||
import type * as healthCheck from "../healthCheck.js";
|
||||
import type * as http from "../http.js";
|
||||
import type * as inicializarPermissoes from "../inicializarPermissoes.js";
|
||||
import type * as logsAcesso from "../logsAcesso.js";
|
||||
import type * as menuPermissoes from "../menuPermissoes.js";
|
||||
import type * as monitoramento from "../monitoramento.js";
|
||||
@@ -56,7 +55,6 @@ declare const fullApi: ApiFromModules<{
|
||||
funcionarios: typeof funcionarios;
|
||||
healthCheck: typeof healthCheck;
|
||||
http: typeof http;
|
||||
inicializarPermissoes: typeof inicializarPermissoes;
|
||||
logsAcesso: typeof logsAcesso;
|
||||
menuPermissoes: typeof menuPermissoes;
|
||||
monitoramento: typeof monitoramento;
|
||||
|
||||
@@ -6,7 +6,9 @@ import { query } from "./_generated/server";
|
||||
import { betterAuth } from "better-auth";
|
||||
import schema from "./betterAuth/schema";
|
||||
|
||||
const siteUrl = process.env.SITE_URL!;
|
||||
// Configurações de ambiente para produção
|
||||
const siteUrl = process.env.SITE_URL || process.env.CONVEX_SITE_URL || "http://localhost:5173";
|
||||
const authSecret = process.env.BETTER_AUTH_SECRET;
|
||||
|
||||
// The component client has methods needed for integrating Convex with Better Auth,
|
||||
// as well as helper methods for general use.
|
||||
@@ -21,6 +23,8 @@ export const createAuth = (
|
||||
{ optionsOnly } = { optionsOnly: false }
|
||||
) => {
|
||||
return betterAuth({
|
||||
// Secret para criptografia de tokens - OBRIGATÓRIO em produção
|
||||
secret: authSecret,
|
||||
// disable logging when createAuth is called just to generate options.
|
||||
// this is not required, but there's a lot of noise in logs without it.
|
||||
logger: {
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
/**
|
||||
* Script para inicializar permissões de menu no sistema
|
||||
*/
|
||||
import { mutation } from "./_generated/server";
|
||||
|
||||
export const inicializarTodasPermissoes = mutation({
|
||||
args: {},
|
||||
handler: async (ctx) => {
|
||||
console.log("🔐 Inicializando permissões de menu...");
|
||||
|
||||
// Buscar roles
|
||||
const roles = await ctx.db.query("roles").collect();
|
||||
|
||||
const admin = roles.find((r) => r.nome === "admin");
|
||||
const ti = roles.find((r) => r.nome === "ti");
|
||||
const usuarioAvancado = roles.find((r) => r.nome === "usuario_avancado");
|
||||
const usuario = roles.find((r) => r.nome === "usuario");
|
||||
|
||||
if (!admin || !ti || !usuarioAvancado || !usuario) {
|
||||
throw new Error("Roles não encontradas");
|
||||
}
|
||||
|
||||
// Menus do sistema
|
||||
const menus = [
|
||||
"/recursos-humanos",
|
||||
"/recursos-humanos/funcionarios",
|
||||
"/recursos-humanos/simbolos",
|
||||
"/financeiro",
|
||||
"/controladoria",
|
||||
"/licitacoes",
|
||||
"/compras",
|
||||
"/juridico",
|
||||
"/comunicacao",
|
||||
"/programas-esportivos",
|
||||
"/secretaria-executiva",
|
||||
"/gestao-pessoas",
|
||||
"/ti",
|
||||
];
|
||||
|
||||
let contador = 0;
|
||||
|
||||
// Admin e TI: acesso total é automático no código, não precisa criar permissões
|
||||
// Eles são filtrados no verificarAcesso (nivel <= 1)
|
||||
|
||||
// Usuario Avançado: SEM acesso por padrão (TI define depois)
|
||||
for (const menu of menus) {
|
||||
await ctx.db.insert("menuPermissoes", {
|
||||
roleId: usuarioAvancado._id,
|
||||
menuPath: menu,
|
||||
podeAcessar: false,
|
||||
podeConsultar: false,
|
||||
podeGravar: false,
|
||||
});
|
||||
contador++;
|
||||
}
|
||||
console.log(` ✅ ${contador} permissões criadas para usuario_avancado`);
|
||||
|
||||
// Usuario: SEM acesso por padrão (TI define depois)
|
||||
contador = 0;
|
||||
for (const menu of menus) {
|
||||
await ctx.db.insert("menuPermissoes", {
|
||||
roleId: usuario._id,
|
||||
menuPath: menu,
|
||||
podeAcessar: false,
|
||||
podeConsultar: false,
|
||||
podeGravar: false,
|
||||
});
|
||||
contador++;
|
||||
}
|
||||
console.log(` ✅ ${contador} permissões criadas para usuario`);
|
||||
|
||||
console.log("✅ Permissões inicializadas com sucesso!");
|
||||
return { success: true, message: "Permissões inicializadas" };
|
||||
},
|
||||
});
|
||||
|
||||
@@ -9,6 +9,7 @@ export const listar = query({
|
||||
returns: v.array(
|
||||
v.object({
|
||||
_id: v.id("roles"),
|
||||
_creationTime: v.number(),
|
||||
nome: v.string(),
|
||||
descricao: v.string(),
|
||||
nivel: v.number(),
|
||||
|
||||
Reference in New Issue
Block a user