32 lines
859 B

  1. import Users from "../models/userModel.js";
  2. import jwt from "jsonwebtoken";
  3. export const refreshToken = async (req, res) => {
  4. try {
  5. const refreshToken = req.cookies.refreshToken;
  6. if (!refreshToken) return res.sendStatus(401);
  7. const user = await Users.findOne({
  8. where: { refresh_token: refreshToken },
  9. });
  10. if (!user) return res.sendStatus(403);
  11. jwt.verify(
  12. refreshToken,
  13. process.env.REFRESH_TOKEN_SECRET,
  14. (err, decoded) => {
  15. if (err) return res.sendStatus(403);
  16. const accessToken = jwt.sign(
  17. { userId: user.id, name: user.name, email: user.email },
  18. process.env.ACCESS_TOKEN_SECRET,
  19. { expiresIn: "20s" }
  20. );
  21. res.json({ accessToken });
  22. }
  23. );
  24. } catch (error) {
  25. res.status(500).json({ msg: "Terjadi kesalahan pada server" });
  26. }
  27. };