feat: implement permission checks for various actions across multiple resources, including acoes, atas, atestados, ausencias, ferias, and simbolos
This commit is contained in:
@@ -147,6 +147,11 @@ export async function verificarLicencaAtiva(
|
||||
export const listarTodos = query({
|
||||
args: {},
|
||||
handler: async (ctx) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'listar'
|
||||
});
|
||||
|
||||
try {
|
||||
const [atestados, licencas] = await Promise.all([
|
||||
ctx.db.query('atestados').collect(),
|
||||
@@ -258,6 +263,11 @@ export const listarTodos = query({
|
||||
export const listarPorFuncionario = query({
|
||||
args: { funcionarioId: v.id('funcionarios') },
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'listar'
|
||||
});
|
||||
|
||||
const [atestados, licencas] = await Promise.all([
|
||||
ctx.db
|
||||
.query('atestados')
|
||||
@@ -285,6 +295,11 @@ export const listarPorPeriodo = query({
|
||||
dataFim: v.string()
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'listar'
|
||||
});
|
||||
|
||||
const dataInicioObj = new Date(args.dataInicio);
|
||||
const dataFimObj = new Date(args.dataFim);
|
||||
|
||||
@@ -327,6 +342,10 @@ export const verificarStatusLicenca = query({
|
||||
},
|
||||
returns: v.boolean(),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'listar'
|
||||
});
|
||||
return await verificarLicencaAtiva(ctx, args.funcionarioId);
|
||||
}
|
||||
});
|
||||
@@ -339,6 +358,11 @@ export const obterDadosGraficos = query({
|
||||
periodo: v.optional(v.number()) // dias (padrão: 30)
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'dashboard'
|
||||
});
|
||||
|
||||
try {
|
||||
const dias = args.periodo || 30;
|
||||
const dataLimite = Date.now() - dias * 24 * 60 * 60 * 1000;
|
||||
@@ -588,6 +612,11 @@ export const obterDadosGraficos = query({
|
||||
export const obterEstatisticas = query({
|
||||
args: {},
|
||||
handler: async (ctx) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'dashboard'
|
||||
});
|
||||
|
||||
const hoje = new Date();
|
||||
hoje.setHours(0, 0, 0, 0);
|
||||
const inicioMes = new Date(hoje.getFullYear(), hoje.getMonth(), 1);
|
||||
@@ -657,6 +686,11 @@ export const obterEventosCalendario = query({
|
||||
)
|
||||
},
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'dashboard'
|
||||
});
|
||||
|
||||
const eventos: Array<{
|
||||
id: string;
|
||||
title: string;
|
||||
@@ -837,6 +871,11 @@ export const generateUploadUrl = mutation({
|
||||
args: {},
|
||||
returns: v.string(),
|
||||
handler: async (ctx) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'criar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -853,6 +892,11 @@ export const obterUrlDocumento = query({
|
||||
},
|
||||
returns: v.union(v.string(), v.null()),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'listar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -874,6 +918,11 @@ export const criarAtestadoMedico = mutation({
|
||||
},
|
||||
returns: v.id('atestados'),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'criar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -932,6 +981,11 @@ export const criarDeclaracaoComparecimento = mutation({
|
||||
},
|
||||
returns: v.id('atestados'),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'criar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -990,6 +1044,11 @@ export const criarLicencaMaternidade = mutation({
|
||||
},
|
||||
returns: v.id('licencas'),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'criar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -1054,6 +1113,11 @@ export const criarLicencaPaternidade = mutation({
|
||||
},
|
||||
returns: v.id('licencas'),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'criar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -1112,6 +1176,11 @@ export const prorrogarLicencaMaternidade = mutation({
|
||||
},
|
||||
returns: v.id('licencas'),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'editar'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -1169,6 +1238,11 @@ export const excluirAtestado = mutation({
|
||||
},
|
||||
returns: v.null(),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'excluir'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
@@ -1215,6 +1289,11 @@ export const excluirLicenca = mutation({
|
||||
},
|
||||
returns: v.null(),
|
||||
handler: async (ctx, args) => {
|
||||
await ctx.runQuery(internal.permissoesAcoes.assertPermissaoAcaoAtual, {
|
||||
recurso: 'atestados_licencas',
|
||||
acao: 'excluir'
|
||||
});
|
||||
|
||||
const usuario = await getUsuarioAutenticado(ctx);
|
||||
if (!usuario) throw new Error('Não autenticado');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user