frontend; backend: adiciona sistema novo de gravacao de provas

Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2025-07-27 18:47:48 -03:00
1 parent 0750b26208
commit 24b5d04fbc
13 files changed
+1507 -12

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken';
import { prisma } from '../config/database';
export interface SessionRequest extends Request {
user?: {
id: string;
email: string;
perfil: string;
};
}
export const sessionAuthMiddleware = async (
req: SessionRequest,
res: Response,
next: NextFunction
) => {
try {
const token = req.headers.authorization?.replace('Bearer ', '');
if (!token) {
// Para sessões, permitir acesso sem autenticação em certas rotas
if (req.path.includes('/public/') || req.method === 'GET') {
return next();
}
return res.status(401).json({ error: 'Token não fornecido' });
}
const decoded = jwt.verify(token, process.env.JWT_SECRET || 'default-secret') as any;
const user = await prisma.usuario.findUnique({
where: { id: decoded.id },
select: {
id: true,
email: true,
perfil: true,
ativo: true
}
});
if (!user || !user.ativo) {
return res.status(401).json({ error: 'Usuário inválido ou inativo' });
}
req.user = user;
next();
} catch (error) {
console.error('Erro na autenticação de sessão:', error);
res.status(401).json({ error: 'Token inválido' });
}
};