| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 'use server';
- import { cookies } from 'next/headers';
- import { ResultDto } from '@/dtos/response/common';
- import { LoginRequest, RegisterRequest, VerifyEmailRequest, ResendEmailRequest, ForgotPasswordRequest, ResetPasswordRequest } from '@/dtos/request/auth';
- import { fetchJson, getAccessToken, getRefreshToken } from '@/lib/utils/server';
- // 로그인
- export async function fetchLogin(request: LoginRequest): Promise<ResultDto> {
- return await fetchJson('/api/auth/login', {
- method: 'POST',
- body: JSON.stringify(request)
- });
- }
- // 회원가입 요청
- export async function fetchRegister(request: RegisterRequest): Promise<ResultDto> {
- return await fetchJson('/api/auth/register', {
- method: 'POST',
- body: JSON.stringify(request)
- });
- }
- // 회원가입 완료
- export async function Registration(email: string|null): Promise<ResultDto> {
- const cookie = (await cookies()).get('isVerified-Registration');
- return await fetchJson(`/api/auth/registration/${email}`, {
- method: 'GET',
- headers: {
- 'Cookie': `isVerified-Registration=${cookie?.value || ""}`
- }
- });
- }
- // 비밀번호 찾기
- export async function fetchForgotPassword(request: ForgotPasswordRequest): Promise<ResultDto> {
- return await fetchJson(`/api/auth/forgot-password`, {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- data: request
- });
- }
- // 인증번호 확인
- export async function fetchVerifyEmail(request: VerifyEmailRequest): Promise<ResultDto> {
- return await fetchJson('/api/auth/verify-email', {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- data: request
- });
- }
- // 인증번호 다시 받기
- export async function fetchResendEmail(params: ResendEmailRequest): Promise<ResultDto> {
- return await fetchJson('/api/auth/resend-email', {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- data: params
- });
- }
- // 비밀번호 변경
- export async function fetchResetPassword(params: ResetPasswordRequest): Promise<ResultDto> {
- const cookie = (await cookies()).get('isVerified-ForgotPassword');
- return await fetchJson('/api/auth/reset-password', {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Cookie': `isVerified-ForgotPassword=${cookie?.value || ""}`
- },
- data: params
- });
- }
- // AccessToken 인증
- export async function verifyAccessToken(): Promise<boolean>
- {
- const accessToken = await getAccessToken();
- if (!accessToken) {
- return false;
- }
- return await fetchJson('/api/auth/verify-token', {
- method: 'GET'
- }).then(res => res.ok);
- }
- // RefreshToken으로 AccessToken 갱신
- export async function refreshAccessToken(): Promise<boolean>
- {
- const refreshToken = await getRefreshToken();
- if (!refreshToken) {
- return false;
- }
- return await fetchJson('/api/auth/refresh-token', {
- method: 'GET'
- }).then(res => res.ok);
- }
- // 로그인 확인
- export async function isAuthenticated(): Promise<boolean> {
- let ret = await verifyAccessToken();
- if (!ret) {
- ret = await refreshAccessToken();
- }
- return ret;
- }
|