move profile icons into the database

This commit is contained in:
Girish Ramakrishnan
2021-04-29 12:49:48 -07:00
parent 7b8fd3596e
commit b8ea9de439
11 changed files with 117 additions and 82 deletions

View File

@@ -13,6 +13,8 @@ exports = module.exports = {
del,
update,
count,
getAvatar,
setAvatar,
addAppPassword,
getAppPasswords,
@@ -25,13 +27,13 @@ exports = module.exports = {
var assert = require('assert'),
BoxError = require('./boxerror.js'),
database = require('./database.js'),
debug = require('debug')('box:userdb'),
mysql = require('mysql');
var USERS_FIELDS = [ 'id', 'username', 'email', 'fallbackEmail', 'password', 'salt', 'createdAt', 'resetToken', 'displayName',
// the avatar field is special and not added here to reduce response sizes
const USERS_FIELDS = [ 'id', 'username', 'email', 'fallbackEmail', 'password', 'salt', 'createdAt', 'resetToken', 'displayName',
'twoFactorAuthenticationEnabled', 'twoFactorAuthenticationSecret', 'active', 'source', 'role', 'resetTokenCreationTime' ].join(',');
var APP_PASSWORD_FIELDS = [ 'id', 'name', 'userId', 'identifier', 'hashedPassword', 'creationTime' ].join(',');
const APP_PASSWORD_FIELDS = [ 'id', 'name', 'userId', 'identifier', 'hashedPassword', 'creationTime' ].join(',');
function postProcess(result) {
assert.strictEqual(typeof result, 'object');
@@ -209,8 +211,6 @@ function getByAccessToken(accessToken, callback) {
assert.strictEqual(typeof accessToken, 'string');
assert.strictEqual(typeof callback, 'function');
debug('getByAccessToken: ' + accessToken);
database.query('SELECT ' + USERS_FIELDS + ' FROM users, tokens WHERE tokens.accessToken = ?', [ accessToken ], function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND, 'User not found'));
@@ -322,3 +322,27 @@ function delAppPassword(id, callback) {
});
}
function getAvatar(id, callback) {
assert.strictEqual(typeof id, 'string');
assert.strictEqual(typeof callback, 'function');
database.query('SELECT avatar FROM users WHERE id = ?', [ id ], function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND, 'User not found'));
callback(null, result[0].avatar);
});
}
function setAvatar(id, avatar, callback) {
assert.strictEqual(typeof id, 'string');
assert(avatar === null || typeof Buffer.isBuffer(avatar));
assert.strictEqual(typeof callback, 'function');
database.query('UPDATE users SET avatar=? WHERE id = ?', [ avatar, id ], function (error, result) {
if (error) return callback(new BoxError(BoxError.DATABASE_ERROR, error));
if (result.length === 0) return callback(new BoxError(BoxError.NOT_FOUND, 'User not found'));
callback(null);
});
}