/** * 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" }; }, });