user settings update completeness including password

master
rob 2 years ago
parent 8762a72f4b
commit c0e838091a

@ -261,26 +261,38 @@ class UserService extends SiteService {
} }
async updateSettings (user, userDefinition) { async updateSettings (user, userDefinition) {
const { crypto: cryptoService } = this.dtp.services;
const updateOp = { $set: { }, $unset: { } };
// strip characters we don't want to allow in username // strip characters we don't want to allow in username
userDefinition.username = striptags(userDefinition.username.trim().replace(/[^A-Za-z0-9\-_]/gi, '')); updateOp.$set.username = striptags(userDefinition.username.trim().replace(/[^A-Za-z0-9\-_]/gi, ''));
const username_lc = userDefinition.username.toLowerCase(); if (!updateOp.$set.username || (updateOp.$set.username.length === 0)) {
throw new SiteError(400, 'Must include a username');
}
updateOp.$set.username_lc = updateOp.$set.username.toLowerCase();
userDefinition.displayName = striptags(userDefinition.displayName.trim()); if (userDefinition.displayName && (userDefinition.displayName.length > 0)) {
userDefinition.bio = striptags(userDefinition.bio.trim()); updateOp.$set.displayName = striptags(userDefinition.displayName.trim());
} else {
updateOp.$unset.displayName = 1;
}
this.log.info('updating user settings', { userDefinition }); if (userDefinition.bio && (userDefinition.bio.length > 0)) {
await User.updateOne( updateOp.$set.bio = striptags(userDefinition.bio.trim());
{ _id: user._id }, } else {
{ updateOp.$unset.bio = 1;
$set: { }
username: userDefinition.username,
username_lc, if (userDefinition.password && userDefinition.password.length > 0) {
displayName: userDefinition.displayName, updateOp.$set.passwordSalt = uuidv4();
bio: userDefinition.bio, updateOp.$set.password = cryptoService.maskPassword(updateOp.$set.passwordSalt, userDefinition.password);
theme: userDefinition.theme || 'dtp-light', }
},
}, updateOp.$set.theme = userDefinition.theme || 'dtp-light',
);
this.log.info('updating user settings', { userId: user._id });
await User.updateOne({ _id: user._id }, updateOp);
} }
async authenticate (account, options) { async authenticate (account, options) {

Loading…
Cancel
Save