Add fallbackEmail to user data model
This commit is contained in:
@@ -23,6 +23,8 @@ CREATE TABLE IF NOT EXISTS users(
|
||||
modifiedAt VARCHAR(512) NOT NULL,
|
||||
admin INTEGER NOT NULL,
|
||||
displayName VARCHAR(512) DEFAULT '',
|
||||
fallbackEmail VARCHAR(512) DEFAULT ""
|
||||
|
||||
PRIMARY KEY(id));
|
||||
|
||||
CREATE TABLE IF NOT EXISTS groups(
|
||||
|
||||
+4
-1
@@ -55,6 +55,7 @@ function create(req, res, next) {
|
||||
username: user.username,
|
||||
displayName: user.displayName,
|
||||
email: user.email,
|
||||
fallbackEmail: user.fallbackEmail,
|
||||
alternateEmail: user.alternateEmail,
|
||||
admin: user.admin,
|
||||
groupIds: [ ],
|
||||
@@ -71,6 +72,7 @@ function update(req, res, next) {
|
||||
assert.strictEqual(typeof req.body, 'object');
|
||||
|
||||
if ('email' in req.body && typeof req.body.email !== 'string') return next(new HttpError(400, 'email must be string'));
|
||||
if ('fallbackEmail' in req.body && typeof req.body.fallbackEmail !== 'string') return next(new HttpError(400, 'fallbackEmail must be string'));
|
||||
if ('displayName' in req.body && typeof req.body.displayName !== 'string') return next(new HttpError(400, 'displayName must be string'));
|
||||
if ('username' in req.body && typeof req.body.username !== 'string') return next(new HttpError(400, 'username must be a string'));
|
||||
|
||||
@@ -91,7 +93,7 @@ function list(req, res, next) {
|
||||
if (error) return next(new HttpError(500, error));
|
||||
|
||||
var users = results.map(function (result) {
|
||||
return _.pick(result, 'id', 'username', 'email', 'alternateEmail', 'displayName', 'groupIds', 'admin');
|
||||
return _.pick(result, 'id', 'username', 'email', 'fallbackEmail', 'alternateEmail', 'displayName', 'groupIds', 'admin');
|
||||
});
|
||||
|
||||
next(new HttpSuccess(200, { users: users }));
|
||||
@@ -113,6 +115,7 @@ function get(req, res, next) {
|
||||
username: result.username,
|
||||
displayName: result.displayName,
|
||||
email: result.email,
|
||||
fallbackEmail: result.fallbackEmail,
|
||||
alternateEmail: result.alternateEmail,
|
||||
admin: result.admin,
|
||||
groupIds: result.groupIds
|
||||
|
||||
@@ -166,6 +166,7 @@ function createUser(username, password, email, displayName, auditSource, options
|
||||
id: 'uid-' + uuid.v4(),
|
||||
username: username,
|
||||
email: email,
|
||||
fallbackEmail: email, // for new users the fallbackEmail is also the default email
|
||||
password: new Buffer(derivedKey, 'binary').toString('hex'),
|
||||
salt: salt.toString('hex'),
|
||||
createdAt: now,
|
||||
@@ -399,6 +400,12 @@ function updateUser(userId, data, auditSource, callback) {
|
||||
if (error) return callback(error);
|
||||
}
|
||||
|
||||
if (data.fallbackEmail) {
|
||||
data.fallbackEmail = data.fallbackEmail.toLowerCase();
|
||||
error = validateEmail(data.fallbackEmail);
|
||||
if (error) return callback(error);
|
||||
}
|
||||
|
||||
userdb.get(userId, function (error) {
|
||||
if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND));
|
||||
if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error));
|
||||
|
||||
+7
-3
@@ -25,7 +25,7 @@ var assert = require('assert'),
|
||||
DatabaseError = require('./databaseerror'),
|
||||
mailboxdb = require('./mailboxdb.js');
|
||||
|
||||
var USERS_FIELDS = [ 'id', 'username', 'email', 'password', 'salt', 'createdAt', 'modifiedAt', 'resetToken', 'displayName' ].join(',');
|
||||
var USERS_FIELDS = [ 'id', 'username', 'email', 'fallbackEmail', 'password', 'salt', 'createdAt', 'modifiedAt', 'resetToken', 'displayName' ].join(',');
|
||||
|
||||
function postProcess(result) {
|
||||
assert.strictEqual(typeof result, 'object');
|
||||
@@ -132,6 +132,7 @@ function add(userId, user, callback) {
|
||||
assert(user.username === null || typeof user.username === 'string');
|
||||
assert.strictEqual(typeof user.password, 'string');
|
||||
assert.strictEqual(typeof user.email, 'string');
|
||||
assert.strictEqual(typeof user.fallbackEmail, 'string');
|
||||
assert.strictEqual(typeof user.salt, 'string');
|
||||
assert.strictEqual(typeof user.createdAt, 'string');
|
||||
assert.strictEqual(typeof user.modifiedAt, 'string');
|
||||
@@ -141,8 +142,8 @@ function add(userId, user, callback) {
|
||||
|
||||
var queries = [];
|
||||
queries.push({
|
||||
query: 'INSERT INTO users (id, username, password, email, salt, createdAt, modifiedAt, resetToken, displayName) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
||||
args: [ userId, user.username, user.password, user.email, user.salt, user.createdAt, user.modifiedAt, user.resetToken, user.displayName ]
|
||||
query: 'INSERT INTO users (id, username, password, email, fallbackEmail, salt, createdAt, modifiedAt, resetToken, displayName) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
|
||||
args: [ userId, user.username, user.password, user.email, user.fallbackEmail, user.salt, user.createdAt, user.modifiedAt, user.resetToken, user.displayName ]
|
||||
});
|
||||
if (user.username) {
|
||||
queries.push({
|
||||
@@ -227,6 +228,9 @@ function update(userId, user, callback) {
|
||||
} else if (k === 'email') {
|
||||
assert.strictEqual(typeof user.email, 'string');
|
||||
args.push(user.email);
|
||||
} else if (k === 'fallbackEmail') {
|
||||
assert.strictEqual(typeof user.fallbackEmail, 'string');
|
||||
args.push(user.fallbackEmail);
|
||||
} else {
|
||||
args.push(user[k]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user