yet-another-blog/backend/core/internal_api.js

61 lines
2.6 KiB
JavaScript

const validate = require("./form_validation");
const core = require("./core");
const settings = require("../settings");
async function registerUser(username, password) {
// Get current and relevant settings
const active_settings = settings.getSettings();
const form_valid = await validate.userRegistration(username, password); // Check form for errors
// Set variables for easy reading
const registration_allowed = active_settings.ACCOUNT_REGISTRATION;
const setup_complete = active_settings.SETUP_COMPLETE;
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
// 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" };
// Register the user in the database
const role = setup_complete ? undefined : "ADMIN";
const registration_status = await core.registerUser(username, password, { role: role });
if (registration_status.success) return registration_status;
else return registration_status;
}
async function loginUser(username, password) {
// Get the user by username
const existing_user = await core.getUser({ username: username });
// 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 } };
}
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 };