auth.ts 865 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. 'use server';
  2. import { fetchJson, getAccessToken, getRefreshToken } from '@/lib/utils/server';
  3. // RefreshToken으로 AccessToken 갱신
  4. export async function refreshAccessToken(): Promise<boolean>
  5. {
  6. const refreshToken = await getRefreshToken();
  7. if (!refreshToken) {
  8. return false;
  9. }
  10. return await fetchJson('/api/auth/refresh-token', {
  11. method: 'POST',
  12. body: JSON.stringify({ RefreshToken: refreshToken })
  13. }).then(res => res.success);
  14. }
  15. // 로그인 확인
  16. export async function checkAuthServer(): Promise<boolean>
  17. {
  18. const accessToken = await getAccessToken();
  19. if (accessToken) {
  20. try {
  21. const payload = JSON.parse(
  22. Buffer.from(accessToken.split('.')[1], 'base64').toString()
  23. );
  24. if (payload.exp * 1000 > Date.now()) {
  25. return true;
  26. }
  27. } catch {
  28. }
  29. }
  30. return await refreshAccessToken();
  31. }