89 lines
2.3 KiB
TypeScript
89 lines
2.3 KiB
TypeScript
|
|
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);
|
||
|
|
};
|