Changeset View
Changeset View
Standalone View
Standalone View
lib/app/base-chips/field-types/username.js
"use strict"; | |||||
const locreq = require("locreq")(__dirname); | const locreq = require("locreq")(__dirname); | ||||
const me_synonyms = locreq("lib/misc/me-synonyms.json"); | const me_synonyms = locreq("lib/misc/me-synonyms.json"); | ||||
const SuperContext = locreq("lib/super-context.js"); | const SuperContext = locreq("lib/super-context.js"); | ||||
module.exports = function(app) { | module.exports = function(app) { | ||||
return { | return { | ||||
name: "username", | name: "username", | ||||
extends: "text", | extends: "text", | ||||
is_proper_value: async function(context, params, new_value, old_value) { | async is_proper_value(context, params, new_value, old_value) { | ||||
if (old_value === new_value) { | if (old_value === new_value) { | ||||
return; | return; | ||||
} | } | ||||
if (me_synonyms.indexOf(new_value) !== -1) { | if (me_synonyms.includes(new_value)) { | ||||
throw new Error( | throw new Error( | ||||
`'${new_value}'' is a reserved keyword. Please pick another username.` | `'${new_value}'' is a reserved keyword. Please pick another username.` | ||||
); | ); | ||||
} | } | ||||
return app | return app | ||||
.run_action( | .run_action( | ||||
new SuperContext(context), | new SuperContext(context), | ||||
["collections", "users"], | ["collections", "users"], | ||||
"show", | "show", | ||||
{ filter: { username: new_value } } | { filter: { username: new_value } } | ||||
) | ) | ||||
.then(function({ items }) { | .then(({ items }) => { | ||||
if (items.length > 0) { | if (items.length > 0) { | ||||
throw new Error("Username already taken"); | throw new Error("Username already taken"); | ||||
} | } | ||||
}); | }); | ||||
}, | }, | ||||
}; | }; | ||||
}; | }; |