- Rid roles and get auth working
This commit is contained in:
@@ -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 }
|
||||
};
|
||||
@@ -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) => {
|
||||
|
||||
153
models/role.js
153
models/role.js
@@ -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);
|
||||
});
|
||||
}
|
||||
};
|
||||
117
models/user.js
117
models/user.js
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user