Files
sgse-app/packages/backend/convex/inicializarPermissoes.ts

77 lines
2.2 KiB
TypeScript

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