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-10-27 22:26:28 +00:00
|
|
|
// Get current and relevant settings
|
2023-11-08 10:08:40 +00:00
|
|
|
const active_settings = settings.getSettings();
|
2023-09-13 19:56:58 +00:00
|
|
|
const form_valid = await validate.userRegistration(username, password); // Check form for errors
|
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
// Set variables for easy reading
|
2023-11-08 10:08:40 +00:00
|
|
|
const registration_allowed = active_settings.ACCOUNT_REGISTRATION;
|
|
|
|
const setup_complete = active_settings.SETUP_COMPLETE;
|
2023-09-21 00:41:57 +00:00
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
if (!registration_allowed && setup_complete) return { success: false, message: "Registration is disabled" }; // Registration disabled
|
|
|
|
if (!form_valid.success) return form_valid; // Registration details did not validate
|
2023-09-13 19:56:58 +00:00
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
// Does a user using that username exist already?
|
|
|
|
const existing_user = await core.getUser({ username: username });
|
|
|
|
if (existing_user.success) return { success: false, message: "Username is taken" };
|
2023-09-13 19:56:58 +00:00
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
// Register the user in the database
|
|
|
|
const role = setup_complete ? undefined : "ADMIN";
|
|
|
|
const registration_status = await core.registerUser(username, password, { role: role });
|
2023-09-13 19:56:58 +00:00
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
if (registration_status.success) return registration_status;
|
|
|
|
else return registration_status;
|
2023-09-13 19:56:58 +00:00
|
|
|
}
|
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
async function loginUser(username, password) {
|
|
|
|
// Get the user by username
|
|
|
|
const existing_user = await core.getUser({ username: username });
|
2023-09-21 00:41:57 +00:00
|
|
|
|
2023-10-27 22:26:28 +00:00
|
|
|
// Check for errors or problems
|
|
|
|
if (!existing_user.success) return { success: false, message: "User does not exist" };
|
|
|
|
if (existing_user.role === "LOCKED") return { success: false, message: "Account is locked: Contact your administrator" };
|
|
|
|
return { success: true, data: { username: existing_user.data.username, id: existing_user.data.id, password: existing_user.data.password } };
|
2023-09-21 00:41:57 +00:00
|
|
|
}
|
|
|
|
|
2023-11-08 10:08:40 +00:00
|
|
|
async function getBlogList({ id, visibility, owner_id, raw } = {}, { page = 0, limit = 10 } = {}) {
|
|
|
|
const blog_list = await core.getBlogList({ id: id, visibility: visibility, owner_id: owner_id, raw: raw }, { page: page, limit: limit });
|
|
|
|
return blog_list;
|
|
|
|
}
|
|
|
|
|
|
|
|
async function getUser({ id } = {}) {
|
|
|
|
return await core.getUser({ id: id });
|
|
|
|
}
|
|
|
|
|
|
|
|
async function postBlog(blog_post, owner_id) {
|
|
|
|
return await core.postBlog(blog_post, owner_id);
|
|
|
|
}
|
|
|
|
async function deleteBlog(blog_id, owner_id) {
|
|
|
|
return await core.deleteBlog(blog_id, owner_id);
|
|
|
|
}
|
|
|
|
async function updateBlog(blog_post, requester_id) {
|
|
|
|
return await core.updateBlog(blog_post, requester_id);
|
|
|
|
}
|
|
|
|
async function deleteImage(image_data, requester_id) {
|
|
|
|
return await core.deleteImage(image_data, requester_id);
|
|
|
|
}
|
|
|
|
module.exports = { registerUser, loginUser, postBlog, getBlogList, deleteBlog, updateBlog, deleteImage, getUser };
|