120 lines
4.0 KiB
JavaScript
120 lines
4.0 KiB
JavaScript
var connection = require("./connection");
|
|
var connectionAsync = require("./connectionasync");
|
|
var hash = require("../authentication/hash");
|
|
var dbRights = require("./user-rights");
|
|
var async = require("async");
|
|
var dbUsers = this;
|
|
|
|
exports.getUser = function(userIdOrUserName, callback){
|
|
console.log(userIdOrUserName + " -- " + typeof userIdOrUserName);
|
|
var queryString = "SELECT * FROM Users WHERE UserName = ? AND DeletedDate IS NULL;";
|
|
if (typeof userIdOrUserName == "number"){
|
|
queryString = "SELECT * FROM Users WHERE Id = ? AND DeletedDate IS NULL;";
|
|
}
|
|
connection.query(queryString,[userIdOrUserName],function(error,rows,fields){
|
|
if (error){
|
|
console.log(error);
|
|
callback(error);
|
|
return;
|
|
}
|
|
|
|
var user = null;
|
|
if (rows.length > 0){
|
|
user = {};
|
|
user.id = rows[0].Id;
|
|
user.userName = rows[0].UserName;
|
|
user.email = rows[0].Email;
|
|
user.password = rows[0].Password;
|
|
user.deletedDate = rows[0].deletedDate;
|
|
user.verified = rows[0].Verified;
|
|
user.verifiedDate = rows[0].VerifiedDate;
|
|
user.verificationCode = rows[0].VerificationCode;
|
|
user.verificationCodeDate = rows[0].verificationCodeDate;
|
|
}
|
|
console.log(user);
|
|
//console.log(fields);
|
|
callback(null,user);
|
|
});
|
|
}
|
|
|
|
exports.getAll = async function() {
|
|
const queryResult = await connectionAsync.query('SELECT * FROM Users WHERE DeletedDate IS NULL;');
|
|
const users = [];
|
|
if (queryResult && queryResult.rows && queryResult.rows.length > 0) {
|
|
for(var i = 0; i < queryResult.rows.length; i++) {
|
|
users.push(rowToUser(queryResult.rows[i]));
|
|
}
|
|
}
|
|
return users;
|
|
}
|
|
|
|
exports.getUser2 = async function(email) {
|
|
const queryResult = await connectionAsync.query('SELECT * FROM Users WHERE UserName = ? AND DeletedDate IS NULL;', [email]);
|
|
if (queryResult && queryResult.rows && queryResult.rows.length > 0) {
|
|
const row = queryResult.rows[0];
|
|
return rowToUser(row);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function rowToUser(row) {
|
|
const user = {};
|
|
user.id = row.Id;
|
|
user.userName = row.UserName;
|
|
user.password = row.Password;
|
|
user.firstName = row.FirstName;
|
|
user.lastName = row.LastName;
|
|
user.street = row.Street;
|
|
user.city = row.City;
|
|
user.state = row.State;
|
|
user.zip = row.Zip;
|
|
user.country = row.Country;
|
|
user.emailVerified = row.EmailVerified;
|
|
user.emailVerificationCode = row.EmailVerificationCode;
|
|
user.emailVerificationCodeDate = row.EmailVerificationCodeDate;
|
|
user.federated = row.Federated;
|
|
user.federationCode = row.federationCode;
|
|
return user;
|
|
}
|
|
|
|
exports.createUser = async function(firstName, lastName, street, city, state, zip, country) {
|
|
// Check to see if email already exists
|
|
const tempUserName = firstName + " " + lastName;
|
|
const existing = await this.getUser2(tempUserName);
|
|
if (existing) {
|
|
throw `${tempUserName} already exists`;
|
|
}
|
|
const newUser = {
|
|
CreatedDate: new Date(),
|
|
ModifiedDate: new Date(),
|
|
UserName: tempUserName,
|
|
FirstName: firstName,
|
|
LastName: lastName,
|
|
Street: street,
|
|
City: city,
|
|
State: state,
|
|
Zip: zip,
|
|
Country: country,
|
|
EmailVerified: false,
|
|
Federated: false,
|
|
FederationCode: hash.createVerificationCode(),
|
|
Password: ''
|
|
};
|
|
const newUserResult = await connectionAsync.nonQuery('INSERT INTO Users Set ?', newUser);
|
|
return await this.getUser2(tempUserName);
|
|
}
|
|
|
|
exports.deleteUser = function(userIdOrUserObject, callback){
|
|
if (typeof userIdOrUserObject !== "number"){
|
|
userIdOrUserObject = userIdOrUserObject.id;
|
|
}
|
|
connection.query("UPDATE Users SET DeletedDate = CURRENT_TIMESTAMP WHERE Id = ?;",[userIdOrUserObject],function(error,result){
|
|
if (error){
|
|
callback(error);
|
|
return;
|
|
}
|
|
callback(null,result);
|
|
});
|
|
}
|