refactor: improve type safety and error handling in vacation management components

- Updated the `AprovarFerias.svelte` component to use specific types for `solicitacao` and `gestorId`, enhancing type safety.
- Improved error handling by refining catch blocks to handle errors more accurately.
- Made minor adjustments to ensure consistent code formatting and readability across the component.
This commit is contained in:
2025-10-31 13:39:41 -03:00
parent 5dec7d7da7
commit 5cb63f9437
20 changed files with 155 additions and 112 deletions

View File

@@ -9,15 +9,16 @@ import {
} from "./auth/utils";
import { registrarLogin } from "./logsLogin";
import { Id } from "./_generated/dataModel";
import type { QueryCtx } from "./_generated/server";
/**
* Helper para verificar se usuário está bloqueado
*/
async function verificarBloqueioUsuario(ctx: any, usuarioId: Id<"usuarios">) {
async function verificarBloqueioUsuario(ctx: QueryCtx, usuarioId: Id<"usuarios">) {
const bloqueio = await ctx.db
.query("bloqueiosUsuarios")
.withIndex("by_usuario", (q: any) => q.eq("usuarioId", usuarioId))
.filter((q: any) => q.eq(q.field("ativo"), true))
.withIndex("by_usuario", (q) => q.eq("usuarioId", usuarioId))
.filter((q) => q.eq(q.field("ativo"), true))
.first();
return bloqueio !== null;
@@ -26,17 +27,17 @@ async function verificarBloqueioUsuario(ctx: any, usuarioId: Id<"usuarios">) {
/**
* Helper para verificar rate limiting por IP
*/
async function verificarRateLimitIP(ctx: any, ipAddress: string) {
async function verificarRateLimitIP(ctx: QueryCtx, ipAddress: string) {
// Últimas 15 minutos
const dataLimite = Date.now() - 15 * 60 * 1000;
const tentativas = await ctx.db
.query("logsLogin")
.withIndex("by_ip", (q: any) => q.eq("ipAddress", ipAddress))
.filter((q: any) => q.gte(q.field("timestamp"), dataLimite))
.withIndex("by_ip", (q) => q.eq("ipAddress", ipAddress))
.filter((q) => q.gte(q.field("timestamp"), dataLimite))
.collect();
const falhas = tentativas.filter((t: any) => !t.sucesso).length;
const falhas = tentativas.filter((t) => !t.sucesso).length;
// Bloquear se 5 ou mais tentativas falhas em 15 minutos
return falhas >= 5;
@@ -299,6 +300,7 @@ export const login = mutation({
matricula: usuario.matricula,
nome: usuario.nome,
email: usuario.email,
funcionarioId: usuario.funcionarioId,
role: {
_id: role._id,
nome: role.nome,