Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions config/passport.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
const LocalStrategy = require('passport-local');
const userDb = require("../controllers/promise").UserDb;
const schoolDb = require("../controllers/promise").SchoolDb;

module.exports = function (passport) {
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(username, password, done) {
userDb.findOne({ email: username })
schoolDb.findOne({ email: username })
.then(user => {
if (!user)
return done(null, false, { message: 'Incorrect username or password' });
Expand All @@ -29,7 +29,7 @@ module.exports = function (passport) {
});

passport.deserializeUser(function(id, done) {
userDb.findOne({ _id: id })
schoolDb.findOne({ _id: id })
.then(user => {
done(null, user.toJSON());
});
Expand Down
70 changes: 17 additions & 53 deletions controllers/auth.js
Original file line number Diff line number Diff line change
@@ -1,72 +1,36 @@
const bcrypt = require('bcrypt');
const schoolDb = require("./promise").SchoolDb;
const userDb = require("./promise").UserDb;
const passport = require("passport");
const validateSchool = require("../validation/school");
const validateUser = require("../validation/user");

const Auth = {
async register(req, res, next) {
var schoolId = null;
try {
const { school_name, school_address, school_currency, first_name, last_name, email, password } = req.body;
const { name, email, password } = req.body;

// Validate and create the administrator's school
const newSchool = {
name: school_name,
address: school_address,
currency: school_currency
};
const { isValid, errors } = validateSchool(newSchool);
if (!isValid)
res.status(400).send({ errors });
const existingSchool = await schoolDb.findOne({ email: email });

if (existingSchool) {
res.status(400).send({
errors: [
"A school with this email address already exists"
]
});
}
else {
var school = await schoolDb.create(newSchool);
schoolId = school._id;

const newUser = {
first_name: first_name,
last_name: last_name,
var hash = bcrypt.hashSync(password, 10);

const newSchool = {
name: name,
email: email,
school: schoolId,
password: password
password: hash
};

const { isValid, errors } = validateUser(newUser);
if (!isValid) {
schoolDb.findOneAndDelete({ _id: schoolId });
res.status(400).send({ errors: errors });
}
else {
const existingUser = await userDb.findOne({ email: email });

if (existingUser) {
schoolDb.findOneAndDelete({ _id: schoolId });
res.status(400).send({
errors: {
email: "Email address already exists"
}
});
}
else {
//Hash password
var hash = bcrypt.hashSync(password, 10);
newUser.password = hash;

const user = await userDb.create(newUser); //Create user and return user
user.school.name = school_name;
user.school.address = school_address;
user.school.currency = school_currency;
user.school.id = schoolId;
res.status(201).send(user.toJSON());
}
}
const school = await schoolDb.create(newSchool);
res.status(201).send(school.toJSON());
}
}
catch(error) {
console.log(error);
if (schoolId != null)
schoolDb.findOneAndDelete({ _id: schoolId });
res.status(500).json({ errors: error.message });
}
},
Expand Down
14 changes: 7 additions & 7 deletions controllers/class.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const Class = {
async create(req, res) {
try {
const queryText = _.omit(req.body, ['school_id']);
queryText.school_id = req.user.school.id;
queryText.school_id = req.user.id;
const createdClass = await classDb.create(queryText);
return res.status(201).send({
message: 'Class successfully created',
Expand All @@ -17,7 +17,7 @@ const Class = {
},
async get_all_classes(req, res) {
try {
const queryText = { school_id: req.user.school.id };
const queryText = { school_id: req.user.id };
const foundClasses = await classDb.find(queryText);
return res.status(200).send({
message: 'Classes retrieved successfully',
Expand All @@ -31,7 +31,7 @@ const Class = {
try {
const queryText = {
parent_id: null,
school_id: req.user.school.id,
school_id: req.user.id,
};
const foundClasses = await classDb.find(queryText);
return res.status(200).json(foundClasses);
Expand All @@ -43,7 +43,7 @@ const Class = {
try {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
const foundClass = await classDb.findOne(queryText);
if (!foundClass) return res.status(404).send({ message: 'Class not found' });
Expand All @@ -60,7 +60,7 @@ const Class = {
const queryText = {
isArm: true,
parent_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
const foundArms = await classDb.findOne(queryText);
return res.status(200).json(foundArms);
Expand All @@ -72,7 +72,7 @@ const Class = {
try {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
const updateData = _.omit(req.body, ['school_id']);
const updatedClass = await classDb.findOneAndUpdate(queryText, updateData);
Expand All @@ -89,7 +89,7 @@ const Class = {
try {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
const deletedClass = await classDb.findOneAndDelete(queryText);
if (!deletedClass) return res.status(404).send({ message: 'Class not found' });
Expand Down
10 changes: 5 additions & 5 deletions controllers/fee.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const feeDb = require('./promise').FeeDb;
const Fee = {
async create(req, res) {
const queryText = _.omit(req.body, ['school_id']);
queryText.school_id = req.user.school.id;
queryText.school_id = req.user.id;
try {
const createdFee = await feeDb.create(queryText);
return res.status(201).send({
Expand All @@ -16,7 +16,7 @@ const Fee = {
}
},
async get_all_fees(req, res) {
const queryText = { school_id: req.user.school.id };
const queryText = { school_id: req.user.id };
try {
const foundFees = await feeDb.find(queryText);
return res.status(200).send({
Expand All @@ -30,7 +30,7 @@ const Fee = {
async get_one_fee(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id
school_id: req.user.id
};
try {
const foundFee = await feeDb.findOne(queryText);
Expand All @@ -46,7 +46,7 @@ const Fee = {
async update_fee(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id
school_id: req.user.id
};
const updateData = _.omit(req.body, ['school_id']);
try {
Expand All @@ -63,7 +63,7 @@ const Fee = {
async delete_fee(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id
school_id: req.user.id
};
try {
const deletedFee = await feeDb.findOneAndDelete(queryText);
Expand Down
72 changes: 1 addition & 71 deletions controllers/promise.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ const Class = require('../models/class');
const Fee = require('../models/fee');
const School = require('../models/school');
const Student = require('../models/student');
const User = require('../models/user');
/**
* @param {string} text
* @returns {object} return all
Expand Down Expand Up @@ -347,78 +346,9 @@ class StudentDb {
}
}

// user promise
//user promise
class UserDb {
static find(param){
return new Promise((resolve, reject) => {
User.find(param).populate('school')
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
})
});
}

static create(param){
return new Promise((resolve, reject) => {
User.create(param)
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}

static findOne(param){
return new Promise((resolve, reject) => {
User.findOne(param).populate('school')
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}

/**
* @param {string} param
* @param {string} text
* @return {object} returns updated object
*/
static findOneAndUpdate(param, text){
return new Promise((resolve, reject) => {
User.findOneAndUpdate(param, text, { new: true }).populate('school')
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}

static findOneAndDelete(param){
return new Promise((resolve, reject) => {
User.findOneAndDelete(param).populate('school')
.then((res) => {
resolve(res);
})
.catch((err) => {
reject(err);
});
});
}
}
module.exports = {
ClassDb,
FeeDb,
SchoolDb,
StudentDb,
UserDb
StudentDb
};
12 changes: 6 additions & 6 deletions controllers/student.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const Student = {
console.log(req);
try {
const queryText = _.omit(req.body, ['school_id']);
queryText.school_id = req.user.school.id;
queryText.school_id = req.user.id;
console.log(queryText);
const createdStudent = await studentDb.create(queryText);
return res.status(201).send({
Expand All @@ -18,7 +18,7 @@ const Student = {
}
},
async get_all_students(req, res) {
const queryText = { school_id: req.user.school.id };
const queryText = { school_id: req.user.id };
try {
const foundStudents = await studentDb.find(queryText);
return res.status(200).send({
Expand All @@ -30,7 +30,7 @@ const Student = {
}
},
async get_all_students_json(req, res) {
const queryText = { school_id: req.user.school.id };
const queryText = { school_id: req.user.id };
try {
const foundStudents = await studentDb.find(queryText);
return res.status(200).json({
Expand All @@ -44,7 +44,7 @@ const Student = {
async get_one_student(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
try {
const foundStudent = await studentDb.findOne(queryText);
Expand All @@ -60,7 +60,7 @@ const Student = {
async update_student(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id,
school_id: req.user.id,
};
const updateData = _.omit(req.body, ['school_id']);
try {
Expand All @@ -77,7 +77,7 @@ const Student = {
async delete_student(req, res) {
const queryText = {
_id: req.params.id,
school_id: req.user.school.id
school_id: req.user.id
};
try {
const deletedStudent = await studentDb.findOneAndDelete(queryText);
Expand Down
Loading