first commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminAssignments = (params) => http.get(endpoints.getAssignmentsList, { params })
|
||||
|
||||
export const apiShowAdminAssignment = (id) => http.get(buildUrl(endpoints.showAssignment, { id }))
|
||||
|
||||
export const apiAddAdminAssignment = (payload) => http.post(endpoints.addNewAssignment, payload)
|
||||
|
||||
export const apiUpdateAdminAssignment = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateAssignment, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminAssignment = (id) =>
|
||||
http.delete(buildUrl(endpoints.deleteAssignment, { id }))
|
||||
|
||||
export const apiGetAdminAssignmentSubmissions = (assignmentId, params) =>
|
||||
http.get(buildUrl(endpoints.getAssignmentSubmissions, { assignmentId }), { params })
|
||||
|
||||
export const apiShowAdminAssignmentSubmission = (assignmentId, submissionId) =>
|
||||
http.get(buildUrl(endpoints.showAssignmentSubmission, { assignmentId, submissionId }))
|
||||
|
||||
export const apiReviewAdminAssignmentSubmission = (assignmentId, submissionId, payload) =>
|
||||
http.post(buildUrl(endpoints.reviewAssignmentSubmission, { assignmentId, submissionId }), payload)
|
||||
@@ -0,0 +1,14 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminConsultations = (params) =>
|
||||
http.get(endpoints.getConsultationsList, { params })
|
||||
|
||||
export const apiShowAdminConsultation = (id) =>
|
||||
http.get(buildUrl(endpoints.showConsultation, { id }))
|
||||
|
||||
export const apiSendAdminConsultationMessage = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.sendConsultationMessage, { id }), payload)
|
||||
|
||||
export const apiChangeAdminConsultationStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeConsultationStatus, { id }), payload)
|
||||
@@ -0,0 +1,38 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminCourseTemplates = (params) =>
|
||||
http.get(endpoints.getCourseTemplatesList, { params })
|
||||
|
||||
export const apiShowAdminCourseTemplate = (id) =>
|
||||
http.get(buildUrl(endpoints.showCourseTemplate, { id }))
|
||||
|
||||
export const apiAddAdminCourseTemplate = (payload) =>
|
||||
http.post(endpoints.addNewCourseTemplate, payload)
|
||||
|
||||
export const apiUpdateAdminCourseTemplate = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateCourseTemplate, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminCourseTemplate = (id) =>
|
||||
http.delete(buildUrl(endpoints.deleteCourseTemplate, { id }))
|
||||
|
||||
export const apiChangeAdminCourseTemplateStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeStatusCourseTemplate, { id }), payload)
|
||||
|
||||
export const apiGetAdminTemplateStudents = (templateId, params) =>
|
||||
http.get(buildUrl(endpoints.listTemplateStudents, { templateId }), { params })
|
||||
|
||||
export const apiAddAdminTemplateStudent = (templateId, payload) =>
|
||||
http.post(buildUrl(endpoints.addTemplateStudent, { templateId }), payload)
|
||||
|
||||
export const apiRemoveAdminTemplateStudent = (templateId, userId) =>
|
||||
http.delete(buildUrl(endpoints.removeTemplateStudent, { templateId, userId }))
|
||||
|
||||
export const apiGetAdminTemplateSessions = (templateId, params) =>
|
||||
http.get(buildUrl(endpoints.listTemplateSessions, { templateId }), { params })
|
||||
|
||||
export const apiAttachAdminTemplateSession = (templateId, payload) =>
|
||||
http.post(buildUrl(endpoints.attachTemplateSession, { templateId }), payload)
|
||||
|
||||
export const apiDetachAdminTemplateSession = (templateId, sessionId) =>
|
||||
http.delete(buildUrl(endpoints.detachTemplateSession, { templateId, sessionId }))
|
||||
@@ -0,0 +1,16 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminCourses = (params) => http.get(endpoints.getCoursesList, { params })
|
||||
|
||||
export const apiShowAdminCourse = (id) => http.get(buildUrl(endpoints.showCourse, { id }))
|
||||
|
||||
export const apiAddAdminCourse = (payload) => http.post(endpoints.addNewCourse, payload)
|
||||
|
||||
export const apiUpdateAdminCourse = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateCourse, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminCourse = (id) => http.delete(buildUrl(endpoints.deleteCourse, { id }))
|
||||
|
||||
export const apiChangeAdminCourseStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeStatusCourse, { id }), payload)
|
||||
@@ -0,0 +1,19 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminExams = (params) => http.get(endpoints.getExamsList, { params })
|
||||
|
||||
export const apiShowAdminExam = (id) => http.get(buildUrl(endpoints.showExam, { id }))
|
||||
|
||||
export const apiAddAdminExam = (payload) => http.post(endpoints.addNewExam, payload)
|
||||
|
||||
export const apiUpdateAdminExam = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateExam, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminExam = (id) => http.delete(buildUrl(endpoints.deleteExam, { id }))
|
||||
|
||||
export const apiGetAdminExamParticipants = (examId, params) =>
|
||||
http.get(buildUrl(endpoints.getExamParticipants, { examId }), { params })
|
||||
|
||||
export const apiShowAdminExamParticipant = (examId, participantId) =>
|
||||
http.get(buildUrl(endpoints.showExamParticipant, { examId, participantId }))
|
||||
@@ -0,0 +1,13 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetPendingStudents = (params) => http.get(endpoints.getPendingStudents, { params })
|
||||
|
||||
export const apiShowPendingStudent = (id) =>
|
||||
http.get(buildUrl(endpoints.showPendingStudent, { id }))
|
||||
|
||||
export const apiChangePendingStudentStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeStatusPendingStudent, { id }), payload)
|
||||
|
||||
export const apiDownloadPendingStudentPdf = (id) =>
|
||||
http.get(buildUrl(endpoints.downloadPdfPendingStudentInfo, { id }))
|
||||
@@ -0,0 +1,19 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminSessions = (params) => http.get(endpoints.getSessionsList, { params })
|
||||
|
||||
export const apiShowAdminSession = (id) => http.get(buildUrl(endpoints.showSession, { id }))
|
||||
|
||||
export const apiAddAdminSession = (payload) => http.post(endpoints.addNewSession, payload)
|
||||
|
||||
export const apiUpdateAdminSession = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateSession, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminSession = (id) => http.delete(buildUrl(endpoints.deleteSession, { id }))
|
||||
|
||||
export const apiChangeAdminSessionStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeStatusSession, { id }), payload)
|
||||
|
||||
export const apiGetSessionAttendance = (sessionId, params) =>
|
||||
http.get(buildUrl(endpoints.getSessionsAttendance, { sessionId }), { params })
|
||||
@@ -0,0 +1,39 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminTerms = (params) => http.get(endpoints.getTermsList, { params })
|
||||
|
||||
export const apiShowAdminTerm = (id) => http.get(buildUrl(endpoints.showTerm, { id }))
|
||||
|
||||
export const apiAddAdminTerm = (payload) => http.post(endpoints.addNewTerm, payload)
|
||||
|
||||
export const apiUpdateAdminTerm = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateTerm, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminTerm = (id) => http.delete(buildUrl(endpoints.deleteTerm, { id }))
|
||||
|
||||
export const apiCloneAdminTerm = (id) => http.post(buildUrl(endpoints.cloneTerm, { id }))
|
||||
|
||||
export const apiChangeAdminTermStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeStatusTerm, { id }), payload)
|
||||
|
||||
export const apiGetAdminTermStudents = (termId, params) =>
|
||||
http.get(buildUrl(endpoints.listUserTerm, { termId }), { params })
|
||||
|
||||
export const apiAddAdminTermStudents = (termId, payload) =>
|
||||
http.post(buildUrl(endpoints.addUserTerm, { termId }), payload)
|
||||
|
||||
export const apiRemoveAdminTermStudent = (termId, userId) =>
|
||||
http.delete(buildUrl(endpoints.removeUserTerm, { termId, userId }))
|
||||
|
||||
export const apiToggleAdminTermStudentLeave = (termId, userId, payload) =>
|
||||
http.post(buildUrl(endpoints.changeLeaveStatus, { termId, userId }), payload)
|
||||
|
||||
export const apiGetAdminTermCourses = (termId, params) =>
|
||||
http.get(buildUrl(endpoints.listCourseTerm, { termId }), { params })
|
||||
|
||||
export const apiAddAdminTermCourses = (termId, payload) =>
|
||||
http.post(buildUrl(endpoints.addCourseTerm, { termId }), payload)
|
||||
|
||||
export const apiRemoveAdminTermCourse = (termId, courseId) =>
|
||||
http.delete(buildUrl(endpoints.removeCourseTerm, { termId, courseId }))
|
||||
@@ -0,0 +1,12 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminTickets = (params) => http.get(endpoints.getTicketsList, { params })
|
||||
|
||||
export const apiShowAdminTicket = (id) => http.get(buildUrl(endpoints.showTicket, { id }))
|
||||
|
||||
export const apiSendAdminTicketMessage = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.sendTicketMessage, { id }), payload)
|
||||
|
||||
export const apiChangeAdminTicketStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeTicketStatus, { id }), payload)
|
||||
@@ -0,0 +1,21 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetAdminUsers = (params) => http.get(endpoints.getApprovedUsers, { params })
|
||||
|
||||
export const apiShowAdminUser = (id) => http.get(buildUrl(endpoints.showUserDetails, { id }))
|
||||
|
||||
export const apiAddAdminUser = (payload) => http.post(endpoints.addNewUser, payload)
|
||||
|
||||
export const apiUpdateAdminUser = (id, payload) =>
|
||||
http.put(buildUrl(endpoints.updateUser, { id }), payload)
|
||||
|
||||
export const apiUpdateAdminUserRole = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.updateUserRole, { id }), payload)
|
||||
|
||||
export const apiChangeAdminUserStatus = (id, payload) =>
|
||||
http.post(buildUrl(endpoints.changeUserStatus, { id }), payload)
|
||||
|
||||
export const apiDeleteAdminUser = (id) => http.delete(buildUrl(endpoints.deleteUser, { id }))
|
||||
|
||||
export const apiGetAdminRoles = () => http.get(endpoints.getRolesList)
|
||||
@@ -0,0 +1,33 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiLogin = (payload) => http.post(endpoints.login, payload)
|
||||
|
||||
export const apiLoginWithCode = (payload) => http.post(endpoints.loginWithCode2Step, payload)
|
||||
|
||||
export const apiRegister = (payload) => http.post(endpoints.register, payload)
|
||||
|
||||
export const apiVerifyCode = (payload) => http.post(endpoints.verifyCode, payload)
|
||||
|
||||
export const apiResendVerificationCode = (payload) =>
|
||||
http.post(endpoints.resendVerificationCodeForRegister, payload)
|
||||
|
||||
export const apiForgotPassword = (payload) => http.post(endpoints.forgotPassword, payload)
|
||||
|
||||
export const apiVerifyForgotPasswordCode = (payload) =>
|
||||
http.post(endpoints.verifyForgotPasswordCode, payload)
|
||||
|
||||
export const apiResetPassword = (payload) => http.post(endpoints.resetPassword, payload)
|
||||
|
||||
export const apiLogout = () => http.post(endpoints.logout)
|
||||
|
||||
export const apiGetProfile = () => http.get(endpoints.getProfile)
|
||||
|
||||
export const apiCompleteProfile = (payload) => http.post(endpoints.completeProfile, payload)
|
||||
|
||||
export const apiUpdateProfile = (payload) => http.put(endpoints.updateProfile, payload)
|
||||
|
||||
export const apiGetRegistrationQuestionVideo = () =>
|
||||
http.get(endpoints.getRegistrationQuestionVideo)
|
||||
|
||||
export const apiUploadTemporary = (formData) => http.post(endpoints.uploadMediaTemporary, formData)
|
||||
@@ -0,0 +1,7 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetProvinces = () => http.get(endpoints.provinceList)
|
||||
|
||||
export const apiGetCitiesOfProvince = (provinceId) =>
|
||||
http.get(buildUrl(endpoints.citiesList, { provinceId }))
|
||||
@@ -0,0 +1,117 @@
|
||||
export const endpoints = {
|
||||
register: '/register',
|
||||
resendVerificationCodeForRegister: '/resend-verification-code',
|
||||
verifyCode: '/verify-code',
|
||||
completeProfile: '/complete-profile',
|
||||
getRegistrationQuestionVideo: '/verification-registration-media',
|
||||
login: '/login',
|
||||
loginWithCode2Step: '/login-with-code',
|
||||
forgotPassword: '/forgot-password',
|
||||
verifyForgotPasswordCode: '/verify-forgot-password-code',
|
||||
resetPassword: '/reset-password',
|
||||
logout: '/logout',
|
||||
uploadMediaTemporary: '/upload-temp',
|
||||
|
||||
provinceList: '/provinces',
|
||||
citiesList: '/provinces/:provinceId/cities',
|
||||
|
||||
getProfile: '/profile',
|
||||
updateProfile: '/profile',
|
||||
getStudentCourses: '/student/courses',
|
||||
showStudentCourse: '/student/courses/:id',
|
||||
|
||||
getPendingStudents: '/admin/pending-students',
|
||||
showPendingStudent: '/admin/pending-students/:id',
|
||||
changeStatusPendingStudent: '/admin/pending-students/:id/status',
|
||||
downloadPdfPendingStudentInfo: '/admin/pending-students/:id/pdf',
|
||||
getApprovedUsers: '/admin/users',
|
||||
|
||||
showUserDetails: '/admin/users/:id',
|
||||
addNewUser: '/admin/users',
|
||||
updateUser: '/admin/users/:id',
|
||||
updateUserRole: '/admin/users/:id/role',
|
||||
getRolesList: '/admin/roles',
|
||||
changeUserStatus: '/admin/users/:id/status',
|
||||
deleteUser: '/admin/users/:id',
|
||||
|
||||
getTermsList: '/admin/terms',
|
||||
addNewTerm: '/admin/terms',
|
||||
showTerm: '/admin/terms/:id',
|
||||
updateTerm: '/admin/terms/:id',
|
||||
deleteTerm: '/admin/terms/:id',
|
||||
cloneTerm: '/admin/terms/:id/clone',
|
||||
changeStatusTerm: '/admin/terms/:id/status',
|
||||
|
||||
listUserTerm: '/admin/terms/:termId/students',
|
||||
addUserTerm: '/admin/terms/:termId/students',
|
||||
removeUserTerm: '/admin/terms/:termId/students/:userId',
|
||||
changeLeaveStatus: '/admin/terms/:termId/students/:userId/toggle-leave',
|
||||
|
||||
listCourseTerm: '/admin/terms/:termId/courses',
|
||||
addCourseTerm: '/admin/terms/:termId/courses',
|
||||
removeCourseTerm: '/admin/terms/:termId/courses/:courseId',
|
||||
|
||||
getCoursesList: '/admin/courses',
|
||||
addNewCourse: '/admin/courses',
|
||||
showCourse: '/admin/courses/:id',
|
||||
updateCourse: '/admin/courses/:id',
|
||||
deleteCourse: '/admin/courses/:id',
|
||||
changeStatusCourse: '/admin/courses/:id/toggle-status',
|
||||
|
||||
getCourseTemplatesList: '/admin/course-templates',
|
||||
addNewCourseTemplate: '/admin/course-templates',
|
||||
showCourseTemplate: '/admin/course-templates/:id',
|
||||
updateCourseTemplate: '/admin/course-templates/:id',
|
||||
deleteCourseTemplate: '/admin/course-templates/:id',
|
||||
changeStatusCourseTemplate: '/admin/course-templates/:id/status',
|
||||
|
||||
listTemplateStudents: '/admin/course-templates/:templateId/students',
|
||||
addTemplateStudent: '/admin/course-templates/:templateId/students',
|
||||
removeTemplateStudent: '/admin/course-templates/:templateId/students/:userId',
|
||||
|
||||
listTemplateSessions: '/admin/course-templates/:templateId/sessions',
|
||||
attachTemplateSession: '/admin/course-templates/:templateId/sessions',
|
||||
detachTemplateSession: '/admin/course-templates/:templateId/sessions/:sessionId',
|
||||
|
||||
getSessionsList: '/admin/sessions',
|
||||
addNewSession: '/admin/sessions',
|
||||
showSession: '/admin/sessions/:id',
|
||||
updateSession: '/admin/sessions/:id',
|
||||
deleteSession: '/admin/sessions/:id',
|
||||
changeStatusSession: '/admin/sessions/:id/toggle-status',
|
||||
|
||||
getSessionsAttendance: '/admin/sessions/:sessionId/attendances',
|
||||
|
||||
getAssignmentsList: '/admin/assignments',
|
||||
addNewAssignment: '/admin/assignments',
|
||||
showAssignment: '/admin/assignments/:id',
|
||||
updateAssignment: '/admin/assignments/:id',
|
||||
deleteAssignment: '/admin/assignments/:id',
|
||||
getAssignmentSubmissions: '/admin/assignments/:assignmentId/submissions',
|
||||
showAssignmentSubmission: '/admin/assignments/:assignmentId/submissions/:submissionId',
|
||||
reviewAssignmentSubmission: '/admin/assignments/:assignmentId/submissions/:submissionId/review',
|
||||
|
||||
getTicketsList: '/admin/tickets',
|
||||
showTicket: '/admin/tickets/:id',
|
||||
sendTicketMessage: '/admin/tickets/:id/messages',
|
||||
changeTicketStatus: '/admin/tickets/:id/status',
|
||||
|
||||
getConsultationsList: '/admin/consultations',
|
||||
showConsultation: '/admin/consultations/:id',
|
||||
sendConsultationMessage: '/admin/consultations/:id/messages',
|
||||
changeConsultationStatus: '/admin/consultations/:id/status',
|
||||
|
||||
getExamsList: '/admin/exams',
|
||||
addNewExam: '/admin/exams',
|
||||
showExam: '/admin/exams/:id',
|
||||
updateExam: '/admin/exams/:id',
|
||||
deleteExam: '/admin/exams/:id',
|
||||
getExamParticipants: '/admin/exams/:examId/participants',
|
||||
showExamParticipant: '/admin/exams/:examId/participants/:participantId',
|
||||
}
|
||||
|
||||
export const buildUrl = (template, params = {}) =>
|
||||
Object.entries(params).reduce(
|
||||
(url, [key, value]) => url.replace(`:${key}`, encodeURIComponent(value)),
|
||||
template
|
||||
)
|
||||
@@ -0,0 +1,99 @@
|
||||
import axios from 'axios'
|
||||
import { toast } from 'vue3-toastify'
|
||||
|
||||
import { camelize, snakize } from '@/utils/convert-to-camel-snake'
|
||||
import { tokenService } from '@/services/api/token-service'
|
||||
|
||||
const defaultHeaders = {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
}
|
||||
|
||||
const addAuthTokenInterceptor = (instance) => {
|
||||
instance.interceptors.request.use(
|
||||
(config) => {
|
||||
const token = tokenService.getToken()
|
||||
const headers = {
|
||||
...config.headers,
|
||||
Authorization: token ? `Bearer ${token}` : '',
|
||||
}
|
||||
if (config.data instanceof FormData) {
|
||||
delete headers['Content-Type']
|
||||
}
|
||||
return { ...config, headers }
|
||||
},
|
||||
null,
|
||||
{ synchronous: true }
|
||||
)
|
||||
}
|
||||
|
||||
const addSnakizeInterceptor = (instance) => {
|
||||
instance.interceptors.request.use(
|
||||
(config) => {
|
||||
if (config.data instanceof FormData || config.noSnakize) {
|
||||
return config
|
||||
}
|
||||
return {
|
||||
...config,
|
||||
params: config.params ? snakize(config.params) : {},
|
||||
data: config.data ? snakize(config.data) : undefined,
|
||||
}
|
||||
},
|
||||
(e) => Promise.reject(e)
|
||||
)
|
||||
}
|
||||
|
||||
const addResponseUnwrapInterceptor = (instance) => {
|
||||
instance.interceptors.response.use(
|
||||
(res) => {
|
||||
if (typeof res?.data === 'number' || typeof res?.data === 'boolean') {
|
||||
return { data: res.data }
|
||||
}
|
||||
return res?.data || res
|
||||
},
|
||||
(e) => Promise.reject(e)
|
||||
)
|
||||
}
|
||||
|
||||
const addCamelizeInterceptor = (instance) => {
|
||||
instance.interceptors.response.use(
|
||||
(res) => camelize(res),
|
||||
(e) => Promise.reject(e)
|
||||
)
|
||||
}
|
||||
|
||||
const addUnauthorizeInterceptor = (instance) => {
|
||||
instance.interceptors.response.use(
|
||||
(res) => res,
|
||||
async (e) => {
|
||||
if (e?.response?.status === 401) {
|
||||
tokenService.clearAll()
|
||||
toast('نشست شما تایید نشد، لطفا مجدد وارد شوید')
|
||||
try {
|
||||
const { default: router } = await import('@/router')
|
||||
router.push('/login').catch(() => {})
|
||||
} catch {}
|
||||
}
|
||||
throw e
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
const createInstance = (baseUrl, { headers = {}, ...configs } = {}) => {
|
||||
const instance = axios.create({
|
||||
timeout: 15_000,
|
||||
baseURL: baseUrl,
|
||||
headers: { ...defaultHeaders, ...headers },
|
||||
...configs,
|
||||
})
|
||||
addAuthTokenInterceptor(instance)
|
||||
addResponseUnwrapInterceptor(instance)
|
||||
addCamelizeInterceptor(instance)
|
||||
addSnakizeInterceptor(instance)
|
||||
addUnauthorizeInterceptor(instance)
|
||||
return instance
|
||||
}
|
||||
|
||||
export const http = createInstance(import.meta.env.VITE_API_BASE_URL || '')
|
||||
|
||||
export { createInstance }
|
||||
@@ -0,0 +1,3 @@
|
||||
export { http, createInstance } from '@/services/api/http'
|
||||
export { endpoints, buildUrl } from '@/services/api/endpoints'
|
||||
export { tokenService } from '@/services/api/token-service'
|
||||
@@ -0,0 +1,6 @@
|
||||
import { http } from '@/services/api/http'
|
||||
import { buildUrl, endpoints } from '@/services/api/endpoints'
|
||||
|
||||
export const apiGetStudentCourses = (params) => http.get(endpoints.getStudentCourses, { params })
|
||||
|
||||
export const apiShowStudentCourse = (id) => http.get(buildUrl(endpoints.showStudentCourse, { id }))
|
||||
@@ -0,0 +1,48 @@
|
||||
const TOKEN = 'user_token'
|
||||
const REFRESH_TOKEN = 'refresh_user_token'
|
||||
const USER_INFO = 'user_info'
|
||||
const STUDENT_REGISTRATION_INFO = 'StudentRegistration'
|
||||
|
||||
export const tokenService = {
|
||||
getToken() {
|
||||
return localStorage.getItem(TOKEN)
|
||||
},
|
||||
saveToken(token) {
|
||||
if (token) localStorage.setItem(TOKEN, token)
|
||||
},
|
||||
removeToken() {
|
||||
localStorage.removeItem(TOKEN)
|
||||
},
|
||||
|
||||
getRefreshToken() {
|
||||
return localStorage.getItem(REFRESH_TOKEN)
|
||||
},
|
||||
saveRefreshToken(newToken) {
|
||||
if (newToken) localStorage.setItem(REFRESH_TOKEN, newToken)
|
||||
},
|
||||
removeRefreshToken() {
|
||||
localStorage.removeItem(REFRESH_TOKEN)
|
||||
},
|
||||
|
||||
getUserInfo() {
|
||||
const info = localStorage.getItem(USER_INFO)
|
||||
return info ? JSON.parse(info) : null
|
||||
},
|
||||
saveUserInfo(info) {
|
||||
if (info) localStorage.setItem(USER_INFO, JSON.stringify(info))
|
||||
},
|
||||
removeUserInfo() {
|
||||
localStorage.removeItem(USER_INFO)
|
||||
localStorage.removeItem(STUDENT_REGISTRATION_INFO)
|
||||
},
|
||||
|
||||
hasToken() {
|
||||
return !!this.getToken()
|
||||
},
|
||||
|
||||
clearAll() {
|
||||
this.removeToken()
|
||||
this.removeRefreshToken()
|
||||
this.removeUserInfo()
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user