- Rid roles and get auth working

This commit is contained in:
2018-03-05 21:30:39 -05:00
parent 0519e4feff
commit b2e91f491e
8 changed files with 63 additions and 485 deletions

View File

@@ -1,20 +0,0 @@
module.exports = {
"about": { type: String },
"age": { type: Number, index: true },
"body": { type: String },
"ethnicity": { type: String },
"gender": { type: String },
"height": { type: String },
"looking": { type: String },
"name": { type: String, index: true },
"pic": {
"detail": { type: String, default: "profile/default_detail.png" },
"thumb": { type: String, default: "profile/default_thumbnail.png" }
},
"position": { type: String },
"pronouns": { type: String },
"weight": { type: Number },
"status": { type: String },
"tested": { type: Date },
"tribe": { type: String }
};

View File

@@ -8,22 +8,22 @@ const ProfileSchema = new Mongoose.Schema({
"details": {
"about": { type: String },
"age": { type: Number, index: true, defaulrt: 0 },
"body": { type: String },
"ethnicity": { type: String },
"body": { type: String, enum: ['slim','toned','average','muscular','large'] },
"ethnicity": [{ type: String }],
"gender": { type: String },
"height": { type: String },
"looking": { type: String },
"looking": [{ type: String, enum: ['chat','friends','networking','dates','relationship','right now'] }],
"name": { type: String, index: true },
"pic": {
"detail": { type: String, default: "profile/default_detail.png" },
"thumb": { type: String, default: "profile/default_thumbnail.png" }
},
"position": { type: String },
"position": [{ type: String, enum: ['bottom','vers bottom','versatile','vers top','top','foreplay only'] }],
"pronouns": { type: String },
"weight": { type: Number },
"status": { type: String },
"status": [{ type: String, enum: ['unknown','negative','negative, on prep','postive','positive, undetectable'] }],
"tested": { type: Date },
"tribe": { type: String }
"tribe": [{ type: String, enum: [] }]
},
"messages" : [ { type: Messages.schema } ]
});
@@ -380,9 +380,9 @@ module.exports = {
});
},
get: (e, id) => {
get: (e, profileId) => {
const promise = new Promise((resolve, reject) => {
ProfileModel.findById(id, (err, result) => {
ProfileModel.findById(profileId, (err, result) => {
if (err) {
reject(err);
}
@@ -423,10 +423,10 @@ module.exports = {
});
},
update: (e, id, profile) => {
update: (e, profileId, profile) => {
const promise = new Promise((resolve, reject) => {
ProfileModel.findOneAndUpdate(
{ _id: id },
{ _id: profileId },
{ $set: profile },
{ new: true },
(err, result) => {

View File

@@ -1,153 +0,0 @@
const Mongoose = require('mongoose');
const RoleSchema = new Mongoose.Schema({
name: { type: String, required: true, unique: true },
description: { type: String },
add: { type: Boolean, default: false },
delete: { type: Boolean, default: false },
edit: { type: Boolean, default: false },
manage: { type: Boolean, default: false },
super: { type: Boolean, default: false },
view: { type: Boolean, default: true },
disabled: { type: Boolean, default: false },
order: { type: Number, default: 1 },
updated_at: { type: Date, default: Date.now }
});
RoleSchema.pre('findOneAndUpdate', function (next) {
this.update({}, { $set: { updated_at: Date.now() } });
next();
});
const RoleModel = Mongoose.model('roles', RoleSchema);
module.exports = {
canRole: (e, roleId, action, callback) => {
var [initial, canElevate = false] = Array.isArray(action) ? action : [action];
RoleModel.findById(roleId, (err, result) => {
if (err) {
callback('There was an error querying roles', null);
}
if (result) {
let permissions = result[initial] && canElevate ? {
hasPermission: result[initial],
canElevate: canElevate ? result[canElevate] : null
} : result[initial];
callback(null, permissions);
}
});
},
createRole: (e, role) => {
const promise = new Promise((resolve, reject) => {
var roleInstance = new RoleModel(role);
roleInstance.save((err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('createRole', null, result);
})
.catch((err) => {
e.emit('createRole', err, null);
});
},
getRoles: (e, query) => {
query = query || {};
const promise = new Promise((resolve, reject) => {
RoleModel
.find(query.find, query.select, query.options)
.exec((err, results) => {
if (err) {
reject(err);
}
if (results) {
resolve(results);
}
});
});
promise.then((results) => {
e.emit('getRoles', null, results);
})
.catch((err) => {
e.emit('getRoles', err, null);
});
},
getRole: (e, id) => {
const promise = new Promise((resolve, reject) => {
RoleModel.find({_id: id}, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('getRole', null, result);
})
.catch((err) => {
e.emit('getRole', err, null);
});
},
updateRole: (e, id, role) => {
const promise = new Promise((resolve, reject) => {
RoleModel.findByIdAndUpdate(id, { $set: role }, { new: true }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('updateRole', null, result);
})
.catch((err) => {
e.emit('updateRole', err, null);
});
},
deleteRole: (e, id) => {
const promise = new Promise((resolve, reject) => {
RoleModel.remove({ _id: id }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('deleteRole', null, result);
})
.catch((err) => {
e.emit('deleteRole', err, null);
});
}
};

View File

@@ -7,8 +7,7 @@ const UserSchema = new Mongoose.Schema({
password: { type: String },
name: { first: { type: String, required: true }, last: { type: String, required: true } },
email: { type: String, required: true, unique: true },
permission: { type: Mongoose.Schema.Types.ObjectId, ref: 'roles', required: false, default: null },
avatar: String,
can: [{ type: String, enum: ['add','edit','delete','manage','super','update','view'], default: ['view'] }],
forceReset: { type: Boolean, default: true },
updated_at: { type: Date, default: Date.now }
});
@@ -138,6 +137,7 @@ function confirmPassword (username, passwordToValidate, callback) {
}
module.exports = {
adminUpdatePassword: (e, username, password) => {
const promise = new Promise((resolve, reject) => {
UserModel.findOneAndUpdate({ userName: username }, { $set: password }, { new: true }, (err, result) => {
@@ -172,8 +172,7 @@ module.exports = {
var loginObject, user;
UserModel
.findOne({ userName: login.userName }, 'userName name title email password permission avatar settings forceReset')
.populate('permission', 'name disabled manageRoles manageUsers manageCategories manageAppPreferences deleteVendor addVendorTag addVendorSample addVendorComment editVendor addNewVendor viewPrivateDetails viewPublicDetails')
.findOne({ userName: login.userName }, 'username name email password can forceReset')
.exec((err, result) => {
if (err) {
loginObject = {
@@ -221,14 +220,10 @@ module.exports = {
if (valid) {
loginObject.user = {
_id: user._id,
uid: user._id,
userName: user.userName,
username: user.username,
name: user.name,
title: user.title,
email: user.email,
permission: user.permission,
settings: user.settings,
avatar: user.avatar
can: user.can
};
loginObject.timestamp = Date.now();
@@ -327,60 +322,6 @@ module.exports = {
});
},
createUserGod: (e, user) => {
const promise = new Promise((resolve, reject) => {
hashPassword(user.password, (err, hashedPassword) => {
if (err) {
reject(err);
}
if (hashedPassword) {
user.password = hashedPassword;
var userInstance = new UserModel(user);
userInstance.save((err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
}
});
});
promise.then((result) => {
e.emit('createUserGod', null, result);
})
.catch((err) => {
e.emit('createUserGod', err, null);
});
},
createUserSetting: (e, userId, data) => {
const promise = new Promise((resolve, reject) => {
UserModel.findByIdAndUpdate(userId, { $push: { settings: data } }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('createUserSetting', null, result);
})
.catch((err) => {
e.emit('createUserSetting', err, null);
});
},
deleteUser: (e, id) => {
const promise = new Promise((resolve, reject) => {
UserModel.remove({ _id: id }, (err, result) => {
@@ -573,54 +514,6 @@ module.exports = {
});
},
updateUserByUserName: (e, username, user) => {
const promise = new Promise((resolve, reject) => {
UserModel.update({ userName: username }, { $set: user }, { new: true }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('updateUserByUserName', null, result);
})
.catch((err) => {
e.emit('updateUserByUserName', err, null);
});
},
updateUserSetting: (e, userId, settingsId, data) => {
const promise = new Promise((resolve, reject) => {
var changed = {};
for (let property in data) {
changed['settings.$.' + property] = data[property];
}
UserModel.update({ _id: userId, 'settings._id': settingsId }, { $set: changed }, { new: true }, (err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('updateUserSetting', null, result);
})
.catch((err) => {
e.emit('updateUserSetting', err, null);
});
},
updatePassword: (e, id, token, data) => {
const promise = new Promise((resolve, reject) => {
Reset.checkReset(null, id, token, (err, validatedId) => {