refresh.post.ts 945 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { defineEventHandler } from 'h3';
  2. import {
  3. clearRefreshTokenCookie,
  4. getRefreshTokenFromCookie,
  5. setRefreshTokenCookie,
  6. } from '~/utils/cookie-utils';
  7. import { generateAccessToken, verifyRefreshToken } from '~/utils/jwt-utils';
  8. import { MOCK_USERS } from '~/utils/mock-data';
  9. import { forbiddenResponse } from '~/utils/response';
  10. export default defineEventHandler(async (event) => {
  11. const refreshToken = getRefreshTokenFromCookie(event);
  12. if (!refreshToken) {
  13. return forbiddenResponse(event);
  14. }
  15. clearRefreshTokenCookie(event);
  16. const userinfo = verifyRefreshToken(refreshToken);
  17. if (!userinfo) {
  18. return forbiddenResponse(event);
  19. }
  20. const findUser = MOCK_USERS.find(
  21. (item) => item.username === userinfo.username,
  22. );
  23. if (!findUser) {
  24. return forbiddenResponse(event);
  25. }
  26. const accessToken = generateAccessToken(findUser);
  27. setRefreshTokenCookie(event, refreshToken);
  28. return accessToken;
  29. });