Presupuestador_web/server/src/contexts/auth/infrastructure/express/routes.ts

89 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-05-15 19:56:22 +00:00
import { config } from "@/config";
import Express from "express";
import JWT from "jsonwebtoken";
import passport from "passport";
import { User } from "../../domain";
/*authRoutes.post(
"/login",
passport.authenticate("local-email"),
(req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
console.log("login OK => generate token JWT");
// Generar token JWT
const token = JWT.sign({ userId: req.user?.id }, "clave_secreta", {
expiresIn: "1h",
}); // Clave secreta y expiración de 1 hora
// Enviar token como respuesta
res.json({ token });
},
);
authRoutes.post("/logout", passport.authenticate("local-jwt"));
authRoutes.get(
"/profile",
passport.authenticate("local-jwt", { session: false }),
(req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
res.json({
message: "You made it to the secure route",
user: req.user,
token: req.query.secret_token,
});
},
);*/
//export { authRouter };
export const AuthRouter = (appRouter: Express.Router) => {
const authRoutes: Express.Router = Express.Router({ mergeParams: true });
//appRouter.use(registerMiddleware("authenticate", authenticate));
authRoutes.post(
"/login",
passport.authenticate("local-email", { session: false }),
(req, res, next) => {
if (req.isAuthenticated()) {
const user: User = req.user;
const accessToken = JWT.sign(
{ id: user.id, email: user.email },
config.jwt.secret_key,
{ expiresIn: config.jwt.token_expiration },
);
const refreshToken = JWT.sign(
{ id: user.id, email: user.email },
config.jwt.refresh_secret_key,
{ expiresIn: config.jwt.refresh_token_expiration },
);
//refreshTokens.push(refreshToken);
return res.json({ accessToken, refreshToken });
}
return res.status(401).json({});
},
);
authRoutes.post(
"/login2",
(req: Express.Request, res: Express.Response, next: Express.NextFunction) =>
passport.authenticate(
"local-email",
{ session: false },
(err, user, info) => {
console.log(err, user, info);
next(err);
},
)(req, res, next),
(req, res, next) => {
res.status(200).json({});
},
);
appRouter.use("/auth", authRoutes);
};