2023-09-13 19:56:58 +00:00
|
|
|
const validate = require("./form_validation");
|
|
|
|
const core = require("./core");
|
2023-09-21 00:41:57 +00:00
|
|
|
const settings = require("../settings");
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
async function registerUser(username, password) {
|
2023-09-21 00:41:57 +00:00
|
|
|
const registration_allowed = await settings.userRegistrationAllowed(); // Check if user registration is allowed
|
2023-09-13 19:56:58 +00:00
|
|
|
const form_valid = await validate.userRegistration(username, password); // Check form for errors
|
|
|
|
|
2023-09-21 00:41:57 +00:00
|
|
|
const is_setup_complete = await settings.setupComplete();
|
|
|
|
let role = is_setup_complete ? "ADMIN" : null;
|
|
|
|
|
2023-09-13 19:56:58 +00:00
|
|
|
// Register the user in the database
|
2023-09-21 00:41:57 +00:00
|
|
|
if (registration_allowed && form_valid.success) return await core.registerUser(username, password, { role: role });
|
2023-09-13 19:56:58 +00:00
|
|
|
|
|
|
|
// Something went wrong!
|
|
|
|
return { success: false, message: form_valid.message };
|
|
|
|
}
|
|
|
|
|
|
|
|
async function loginUser(username, password) {
|
|
|
|
const user = await validate.userLogin(username);
|
|
|
|
if (!user.success) return user;
|
|
|
|
|
|
|
|
return { success: true, data: { username: user.data.username, id: user.data.id, password: user.data.password } };
|
|
|
|
}
|
|
|
|
|
2023-09-21 00:41:57 +00:00
|
|
|
async function getUser({ id, username } = {}) {
|
|
|
|
let user;
|
|
|
|
if (id) user = await core.getUser({ id: id });
|
|
|
|
else if (username) user = await core.getUser({ username: username });
|
|
|
|
|
|
|
|
// Make sure we only get important identifier and nothing sensitive!
|
|
|
|
if (user.success) return { success: true, data: { username: user.data.username, id: user.data.id, role: user.data.role } };
|
|
|
|
|
|
|
|
return { success: false, message: "No user found" };
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = { registerUser, loginUser, getUser };
|