71 lines
1.7 KiB
JavaScript
Executable File
71 lines
1.7 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
const Sequelize = require('sequelize'),
|
|
config = require('config');
|
|
|
|
function init() {
|
|
const db = {
|
|
sequelize: new Sequelize(config.get("db.users")),
|
|
Sequelize: Sequelize
|
|
};
|
|
|
|
return db.sequelize.authenticate().then(function () {
|
|
const User = db.sequelize.define('users', {
|
|
id: {
|
|
type: Sequelize.INTEGER,
|
|
primaryKey: true,
|
|
autoIncrement: true
|
|
},
|
|
displayName: Sequelize.STRING,
|
|
notes: Sequelize.STRING,
|
|
uid: Sequelize.STRING,
|
|
authToken: Sequelize.STRING,
|
|
authDate: Sequelize.DATE,
|
|
authenticated: Sequelize.BOOLEAN,
|
|
mailVerified: Sequelize.BOOLEAN,
|
|
mail: Sequelize.STRING,
|
|
memberSince: Sequelize.DATE,
|
|
password: Sequelize.STRING, /* SHA hash of user supplied password */
|
|
passwordExpires: Sequelize.DATE
|
|
}, {
|
|
timestamps: false
|
|
});
|
|
|
|
const Authentication = db.sequelize.define('authentication', {
|
|
key: {
|
|
type: Sequelize.STRING,
|
|
primaryKey: true,
|
|
allowNull: false
|
|
},
|
|
issued: Sequelize.DATE,
|
|
type: {
|
|
type: Sequelize.ENUM,
|
|
values: [ 'account-setup', 'password-reset' ]
|
|
},
|
|
userId: {
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
references: {
|
|
model: User,
|
|
key: 'id',
|
|
}
|
|
}
|
|
}, {
|
|
timestamps: false
|
|
});
|
|
|
|
return db.sequelize.sync({
|
|
force: false
|
|
}).then(function () {
|
|
return db;
|
|
});
|
|
}).catch(function (error) {
|
|
console.log("ERROR: Failed to authenticate with USER DB");
|
|
console.log("ERROR: " + JSON.stringify(config.get("db"), null, 2));
|
|
console.log(error);
|
|
throw error;
|
|
});
|
|
}
|
|
|
|
module.exports = init();
|