mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
77 lines
No EOL
2.4 KiB
JavaScript
77 lines
No EOL
2.4 KiB
JavaScript
import axios from "axios";
|
|
|
|
// Logs in a user.
|
|
async function login(baseUrl, email, password) {
|
|
if (!email || !password) throw new Error("Email and password are required.");
|
|
|
|
try {
|
|
const res = await axios.post(`${baseUrl}/api/user/login`, { email, password }, {
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
|
|
if (res.status === 200 && res.data.token) {
|
|
console.log(`Login successful for ${email}`);
|
|
return res.data.token;
|
|
}
|
|
throw new Error(`Login failed. Status: ${res.status}`);
|
|
} catch (error) {
|
|
console.error(`Login error for ${email}:`, error.message);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
// Registers a new user.
|
|
async function register(baseUrl, email, password) {
|
|
if (!email || !password) throw new Error("Email and password are required.");
|
|
|
|
try {
|
|
const res = await axios.post(`${baseUrl}/api/user/register`, { email, password }, {
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
|
|
if (res.status === 200) {
|
|
console.log(`Registration successful for ${email}`);
|
|
return res.data.message || "Registration completed successfully.";
|
|
}
|
|
throw new Error(`Registration failed. Status: ${res.status}`);
|
|
} catch (error) {
|
|
console.error(`Registration error for ${email}:`, error.message);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
// Attempts to log in a user, or registers and logs in if the login fails.
|
|
export async function attemptLoginOrRegister(baseUrl, username, password) {
|
|
try {
|
|
return await login(baseUrl, username, password);
|
|
} catch (loginError) {
|
|
console.log(`Login failed for ${username}. Attempting registration...`);
|
|
try {
|
|
await register(baseUrl, username, password);
|
|
return await login(baseUrl, username, password);
|
|
} catch (registerError) {
|
|
console.error(`Registration and login failed for ${username}:`, registerError.message);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Creates a new room
|
|
export async function createRoomContainer(baseUrl, token) {
|
|
if (!token) throw new Error("Authorization token is required.");
|
|
|
|
try {
|
|
const res = await axios.post(`${baseUrl}/api/room`, {}, {
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
});
|
|
|
|
if (res.status === 200) return res.data;
|
|
throw new Error(`Room creation failed. Status: ${res.status}`);
|
|
} catch (error) {
|
|
console.error("Room creation error:", error.message);
|
|
throw error;
|
|
}
|
|
} |