auth.js edit
This commit is contained in:
parent
9f64f93ed8
commit
dc87099df7
@ -16,19 +16,26 @@ class AuthService {
|
|||||||
async login(credentials) {
|
async login(credentials) {
|
||||||
try {
|
try {
|
||||||
const response = await authApi.post('/login', {
|
const response = await authApi.post('/login', {
|
||||||
userId: credentials.userId,
|
userId: credentials.username || credentials.userId, // 기존 코드 호환성
|
||||||
password: credentials.password,
|
password: credentials.password,
|
||||||
})
|
})
|
||||||
|
|
||||||
const { accessToken, refreshToken, expiresIn } = response.data.data
|
const { accessToken, refreshToken, expiresIn, userInfo } = response.data.data
|
||||||
|
|
||||||
// 토큰 저장
|
// 토큰 및 사용자 정보 저장
|
||||||
localStorage.setItem('accessToken', accessToken)
|
localStorage.setItem('accessToken', accessToken)
|
||||||
localStorage.setItem('refreshToken', refreshToken)
|
localStorage.setItem('refreshToken', refreshToken)
|
||||||
localStorage.setItem('tokenExpiresIn', expiresIn.toString())
|
localStorage.setItem('tokenExpiresIn', expiresIn.toString())
|
||||||
localStorage.setItem('userId', credentials.userId)
|
localStorage.setItem('userInfo', JSON.stringify(userInfo))
|
||||||
|
|
||||||
return formatSuccessResponse(response.data.data, '로그인되었습니다.')
|
return formatSuccessResponse({
|
||||||
|
token: accessToken,
|
||||||
|
user: {
|
||||||
|
id: userInfo.userId,
|
||||||
|
nickname: userInfo.name,
|
||||||
|
email: userInfo.email
|
||||||
|
}
|
||||||
|
}, '로그인되었습니다.')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return handleApiError(error)
|
return handleApiError(error)
|
||||||
}
|
}
|
||||||
@ -50,7 +57,7 @@ class AuthService {
|
|||||||
localStorage.removeItem('accessToken')
|
localStorage.removeItem('accessToken')
|
||||||
localStorage.removeItem('refreshToken')
|
localStorage.removeItem('refreshToken')
|
||||||
localStorage.removeItem('tokenExpiresIn')
|
localStorage.removeItem('tokenExpiresIn')
|
||||||
localStorage.removeItem('userId')
|
localStorage.removeItem('userInfo')
|
||||||
|
|
||||||
return formatSuccessResponse(null, '로그아웃되었습니다.')
|
return formatSuccessResponse(null, '로그아웃되었습니다.')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -58,14 +65,14 @@ class AuthService {
|
|||||||
localStorage.removeItem('accessToken')
|
localStorage.removeItem('accessToken')
|
||||||
localStorage.removeItem('refreshToken')
|
localStorage.removeItem('refreshToken')
|
||||||
localStorage.removeItem('tokenExpiresIn')
|
localStorage.removeItem('tokenExpiresIn')
|
||||||
localStorage.removeItem('userId')
|
localStorage.removeItem('userInfo')
|
||||||
|
|
||||||
return handleApiError(error)
|
return formatSuccessResponse(null, '로그아웃되었습니다.')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 토큰 갱신
|
* 토큰 갱신 (USR-050: 인증 자동 연장)
|
||||||
* @returns {Promise<Object>} 토큰 갱신 결과
|
* @returns {Promise<Object>} 토큰 갱신 결과
|
||||||
*/
|
*/
|
||||||
async refreshToken() {
|
async refreshToken() {
|
||||||
@ -84,7 +91,7 @@ class AuthService {
|
|||||||
localStorage.setItem('refreshToken', newRefreshToken)
|
localStorage.setItem('refreshToken', newRefreshToken)
|
||||||
localStorage.setItem('tokenExpiresIn', expiresIn.toString())
|
localStorage.setItem('tokenExpiresIn', expiresIn.toString())
|
||||||
|
|
||||||
return formatSuccessResponse(response.data.data, '토큰이 갱신되었습니다.')
|
return formatSuccessResponse({ token: accessToken }, '토큰이 갱신되었습니다.')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return handleApiError(error)
|
return handleApiError(error)
|
||||||
}
|
}
|
||||||
@ -92,22 +99,17 @@ class AuthService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 회원가입 (USR-030: 회원등록)
|
* 회원가입 (USR-030: 회원등록)
|
||||||
* @param {Object} memberData - 회원가입 정보
|
* @param {Object} userData - 회원 정보
|
||||||
* @param {string} memberData.userId - 사용자 ID
|
|
||||||
* @param {string} memberData.password - 비밀번호
|
|
||||||
* @param {string} memberData.name - 이름
|
|
||||||
* @param {string} memberData.businessNumber - 사업자 번호
|
|
||||||
* @param {string} memberData.email - 이메일
|
|
||||||
* @returns {Promise<Object>} 회원가입 결과
|
* @returns {Promise<Object>} 회원가입 결과
|
||||||
*/
|
*/
|
||||||
async register(memberData) {
|
async register(userData) {
|
||||||
try {
|
try {
|
||||||
const response = await memberApi.post('/register', {
|
const response = await memberApi.post('/register', {
|
||||||
userId: memberData.userId,
|
userId: userData.userId,
|
||||||
password: memberData.password,
|
password: userData.password,
|
||||||
name: memberData.name,
|
name: userData.name,
|
||||||
businessNumber: memberData.businessNumber,
|
businessNumber: userData.businessNumber,
|
||||||
email: memberData.email,
|
email: userData.email
|
||||||
})
|
})
|
||||||
|
|
||||||
return formatSuccessResponse(response.data.data, '회원가입이 완료되었습니다.')
|
return formatSuccessResponse(response.data.data, '회원가입이 완료되었습니다.')
|
||||||
@ -123,83 +125,32 @@ class AuthService {
|
|||||||
*/
|
*/
|
||||||
async checkDuplicate(userId) {
|
async checkDuplicate(userId) {
|
||||||
try {
|
try {
|
||||||
const response = await memberApi.get(`/check-duplicate?userId=${userId}`)
|
const response = await memberApi.get('/check-duplicate', {
|
||||||
|
params: { userId }
|
||||||
|
})
|
||||||
|
|
||||||
const { isDuplicate } = response.data.data
|
return formatSuccessResponse(response.data.data, response.data.data.message)
|
||||||
|
|
||||||
if (isDuplicate) {
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
message: '이미 사용 중인 ID입니다.',
|
|
||||||
data: { isDuplicate: true },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return formatSuccessResponse({ isDuplicate: false }, '사용 가능한 ID입니다.')
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return handleApiError(error)
|
return handleApiError(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 비밀번호 유효성 검증 (USR-040: 암호유효성 검사)
|
* 암호 유효성 검증 (USR-040: 암호유효성 검사)
|
||||||
* @param {string} password - 검증할 비밀번호
|
* @param {string} password - 검증할 암호
|
||||||
* @returns {Promise<Object>} 유효성 검증 결과
|
* @returns {Promise<Object>} 유효성 검증 결과
|
||||||
*/
|
*/
|
||||||
async validatePassword(password) {
|
async validatePassword(password) {
|
||||||
try {
|
try {
|
||||||
const response = await memberApi.post('/validate-password', { password })
|
const response = await memberApi.post('/validate-password', { password })
|
||||||
|
|
||||||
const { isValid, errors } = response.data.data
|
return formatSuccessResponse(response.data.data, response.data.data.message)
|
||||||
|
|
||||||
if (!isValid) {
|
|
||||||
return {
|
|
||||||
success: false,
|
|
||||||
message: '비밀번호가 규칙에 맞지 않습니다.',
|
|
||||||
data: { isValid: false, errors },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return formatSuccessResponse({ isValid: true, errors: [] }, '사용 가능한 비밀번호입니다.')
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return handleApiError(error)
|
return handleApiError(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 현재 로그인 상태 확인
|
|
||||||
* @returns {boolean} 로그인 여부
|
|
||||||
*/
|
|
||||||
isAuthenticated() {
|
|
||||||
const token = localStorage.getItem('accessToken')
|
|
||||||
const expiresIn = localStorage.getItem('tokenExpiresIn')
|
|
||||||
|
|
||||||
if (!token || !expiresIn) {
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 토큰 만료 시간 확인 (여유를 두고 5분 전에 만료로 처리)
|
|
||||||
const now = Date.now()
|
|
||||||
const expiryTime = parseInt(expiresIn) - 5 * 60 * 1000
|
|
||||||
|
|
||||||
return now < expiryTime
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 현재 사용자 정보 가져오기
|
|
||||||
* @returns {Object|null} 사용자 정보
|
|
||||||
*/
|
|
||||||
getCurrentUser() {
|
|
||||||
const userId = localStorage.getItem('userId')
|
|
||||||
const token = localStorage.getItem('accessToken')
|
|
||||||
|
|
||||||
if (!userId || !token || !this.isAuthenticated()) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
return { userId }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const authService = new AuthService()
|
export const authService = new AuthService()
|
||||||
export default authService
|
export default authService
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user