+const allowedTags = [
+ 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'li', 'b',
+ 'i', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table',
+ 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre'
+];
+function sanitizeHtml(text) {
+ return sanitizeHtml_pkg(text, { allowedTags: allowedTags });
+}
+
+router.get("/userbio", access.ajax, (req,res) => {
+ const uid = req.query["id"];
+ if (!!(uid.toString().match(/^[0-9]+$/))) {
+ UserModel.getBio(uid, (err, bio) => {
+ res.json(bio);
+ });
+ }
+});
+
+router.put('/userbio', access.logged, access.ajax, (req,res) => {
+ const bio = sanitizeHtml(req.body.bio);
+ UserModel.setBio(req.userId, bio);
+ res.json({});
+});
+
+router.post('/register', access.unlogged, access.ajax, (req,res) => {
+ const name = req.body.name;
+ const email = req.body.email;
+ const notify = !!req.body.notify;
+ if (UserModel.checkNameEmail({ name: name, email: email })) {
+ UserModel.create(name, email, notify, (err, ret) => {
+ if (!!err) {
+ const msg = err.code == "SQLITE_CONSTRAINT"
+ ? "User name or email already in use"
+ : "User creation failed. Try again";
+ res.json({ errmsg: msg });
+ }
+ else {
+ const user = {
+ id: ret.id,
+ name: name,
+ email: email
+ };
+ setAndSendLoginToken("Welcome to " + params.siteURL, user);
+ res.json({});
+ }
+ });
+ }
+});