login.post.ts 995 B

123456789101112131415161718192021222324252627282930313233343536
  1. import {
  2. clearRefreshTokenCookie,
  3. setRefreshTokenCookie,
  4. } from '~/utils/cookie-utils';
  5. import { generateAccessToken, generateRefreshToken } from '~/utils/jwt-utils';
  6. import { forbiddenResponse } from '~/utils/response';
  7. export default defineEventHandler(async (event) => {
  8. const { password, username } = await readBody(event);
  9. if (!password || !username) {
  10. setResponseStatus(event, 400);
  11. return useResponseError(
  12. 'BadRequestException',
  13. 'Username and password are required',
  14. );
  15. }
  16. const findUser = MOCK_USERS.find(
  17. (item) => item.username === username && item.password === password,
  18. );
  19. if (!findUser) {
  20. clearRefreshTokenCookie(event);
  21. return forbiddenResponse(event, 'Username or password is incorrect.');
  22. }
  23. const accessToken = generateAccessToken(findUser);
  24. const refreshToken = generateRefreshToken(findUser);
  25. setRefreshTokenCookie(event, refreshToken);
  26. return useResponseSuccess({
  27. ...findUser,
  28. accessToken,
  29. });
  30. });