You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
import { User } from "../../lib/models.js";
|
|
import logging from '../../lib/logging.js';
|
|
import assert from 'assert';
|
|
import { API } from '../../lib/api.js';
|
|
|
|
const log = logging.create("/api/user/profile.js");
|
|
|
|
const rules = User.validation({
|
|
password: "",
|
|
full_name: "",
|
|
email: 'required|email',
|
|
initials: 'required|alpha|max:3',
|
|
password_repeat: 'required_with:password|same:password',
|
|
});
|
|
|
|
export const post = async (req, res) => {
|
|
const api = new API(req, res);
|
|
let user = api.validate(rules);
|
|
|
|
try {
|
|
if(!user._valid) {
|
|
return api.validation_error(res, user);
|
|
} else {
|
|
api.clean_form(user, rules, ["password_repeat"]);
|
|
|
|
user.password = User.encrypt_password(user.password);
|
|
|
|
let result = await User.update({id: req.user.id}, user);
|
|
assert(result !== undefined, "Severe database error.");
|
|
|
|
return api.reply(200, { message: "OK" });
|
|
}
|
|
} catch (error) {
|
|
log.error(error);
|
|
return api.error(500, "Internal Server Error");
|
|
}
|
|
}
|
|
|
|
post.authenticated = true;
|
|
|