| | import axios from "axios"; |
| | import { API_BASE_URL, DEBUG } from "./config"; |
| |
|
| | function debugLog(message, data = null) { |
| | if (DEBUG) { |
| | console.log(`[DEBUG] ${message}`); |
| | if (data) { |
| | console.log(data); |
| | } |
| | } |
| | } |
| |
|
| | const NexusAuthApi = { |
| | async signup(username, password, email = null) { |
| | debugLog("Attempting signup", { username, email }); |
| |
|
| | try { |
| | |
| | const payload = { username, password }; |
| | if (email) { |
| | payload.email = email; |
| | } |
| |
|
| | const response = await axios.post(`${API_BASE_URL}/auth/signup`, payload); |
| | debugLog("Signup successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Signup failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async login(username, password) { |
| | debugLog("Attempting login", { username }); |
| | try { |
| | const response = await axios.post( |
| | `${API_BASE_URL}/auth/login`, |
| | { username, password } |
| | ); |
| | debugLog("Login successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Login failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async logout(userId, token) { |
| | debugLog("Attempting logout", { userId }); |
| | try { |
| | const response = await axios.post( |
| | `${API_BASE_URL}/auth/logout?user_id=${encodeURIComponent(userId)}&token=${encodeURIComponent(token)}` |
| | ); |
| | debugLog("Logout successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Logout failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| |
|
| | async validateToken(userId, token) { |
| | debugLog("Validating token", { userId, token }); |
| | try { |
| | const response = await axios.get( |
| | `${API_BASE_URL}/auth/validate?user_id=${encodeURIComponent(userId)}&token=${encodeURIComponent(token)}` |
| | ); |
| | debugLog("Token validation successful", response); |
| | return response; |
| | } catch (error) { |
| | debugLog("Token validation failed", error.response?.data || error); |
| | return error; |
| | } |
| | }, |
| |
|
| |
|
| | async searchUsers(query) { |
| | debugLog("Searching users", { query }); |
| | try { |
| | const response = await axios.get(`${API_BASE_URL}/auth/search-users`, { |
| | params: { query }, |
| | }); |
| | debugLog("User search successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("User search failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async isUsernameAvailable(query) { |
| | debugLog("Searching users", { query }); |
| | try { |
| | const response = await axios.get(`${API_BASE_URL}/auth/is-username-available`, { |
| | params: { query }, |
| | }); |
| | debugLog("User search successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("User search failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async getUserId(username) { |
| | debugLog("Fetching user ID", { username }); |
| | try { |
| | const response = await axios.get(`${API_BASE_URL}/auth/get-user-id`, { |
| | params: { username }, |
| | }); |
| | debugLog("User ID fetch successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("User ID fetch failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async updateOwnData(userId, updateData, token) { |
| | debugLog("Updating own data", { userId, updateData }); |
| | try { |
| | const response = await axios.put(`${API_BASE_URL}/auth/user/update`, updateData, { |
| | params: { user_id: userId, token }, |
| | }); |
| | debugLog("Update own data successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Update own data failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | |
| | async getAllUsers(adminId, token) { |
| | debugLog("Fetching all users", { adminId }); |
| | try { |
| | const response = await axios.get(`${API_BASE_URL}/admin/users`, { |
| | params: { user_id: adminId, token } |
| | }); |
| | debugLog("Fetch all users successful", response.data); |
| | return response; |
| | } catch (error) { |
| | debugLog("Fetch all users failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async getUser(adminId, token, userId) { |
| | debugLog("Fetching user details", { adminId, userId }); |
| | try { |
| | const response = await axios.get(`${API_BASE_URL}/admin/user/${userId}`, { |
| | params: { admin_id: adminId, token }, |
| | }); |
| | debugLog("Fetch user details successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Fetch user details failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async updateUser(adminId, token, userId, updateData) { |
| | debugLog("Updating user", { adminId, userId, updateData }); |
| | try { |
| | const response = await axios.put(`${API_BASE_URL}/admin/user/${userId}`, updateData, { |
| | params: { admin_id: adminId, token } |
| | }); |
| | debugLog("Update user successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Update user failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| |
|
| | async updateAccessLevel(adminId, token, userId, accessLevel) { |
| | debugLog("Updating access level", { adminId, userId, accessLevel }); |
| | try { |
| | const response = await axios.put( |
| | `${API_BASE_URL}/admin/user/${userId}/access-level`, |
| | { access_level: accessLevel }, |
| | { |
| | params: { admin_id: adminId, token } |
| | } |
| | ); |
| | debugLog("Update access level successful", response.data); |
| | return response.data; |
| | } catch (error) { |
| | debugLog("Update access level failed", error.response?.data || error.message); |
| | throw error.response?.data || error.message; |
| | } |
| | }, |
| | }; |
| |
|
| | export default NexusAuthApi; |