Skip to content

Commit 653e797

Browse files
add local api folder to git
1 parent 10b8c39 commit 653e797

File tree

3 files changed

+235
-0
lines changed

3 files changed

+235
-0
lines changed

api/controllers/userController.js

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
'use strict';
2+
3+
var mongoose = require('mongoose'),
4+
jwt = require('jsonwebtoken'),
5+
bcrypt = require('bcrypt'),
6+
Balanced = mongoose.model('Balanced'),
7+
User = mongoose.model('User');
8+
9+
exports.register = function (req, res) {
10+
var newUser = new User(req.body);
11+
newUser.password = bcrypt.hashSync(req.body.password, 10);
12+
newUser.save(function (err, user) {
13+
if (err) {
14+
return res.status(400).send({
15+
message: err
16+
});
17+
} else {
18+
user.password = undefined; // to hide password response
19+
return res.json(user);
20+
}
21+
});
22+
};
23+
exports.login = function (req, res) {
24+
User.findOne({
25+
email: req.body.email
26+
}, function (err, user) {
27+
// console.log("User details");
28+
// console.log(user);
29+
if (err) throw err;
30+
if (!user) {
31+
res.status(401).json({ message: 'User not found.' });
32+
} else if (user) {
33+
if (!user.comparePassword(req.body.password)) {
34+
res.status(401).json({ message: 'Please enter valid password' });
35+
} else {
36+
console.log("Login User details");
37+
console.log(user);
38+
return res.json({ token: jwt.sign({ _id: user._id, role: user.role, userName: user.userName }, 'schoolcom'), message: "success" });
39+
}
40+
}
41+
});
42+
};
43+
44+
exports.loginRequired = function (req, res, next) {
45+
if (req.user) {
46+
next();
47+
} else {
48+
return res.status(401).json({ message: 'You are not authorised' });
49+
}
50+
};
51+
52+
exports.createUser = function (req, res) {
53+
var newUser = new User(req.body);
54+
newUser.save(function (err, user) {
55+
if (err)
56+
res.send(err);
57+
res.json(user);
58+
});
59+
};
60+
61+
exports.getUserDetails = function (req, res) {
62+
console.log(req.query.email);
63+
User.findOne({ email: req.query.email }, function (err, user) {
64+
if (err)
65+
res.send(err);
66+
res.json(user);
67+
});
68+
};
69+
70+
exports.updateUser = function (req, res) {
71+
User.findOneAndUpdate(req.body.email, req.body, function (err, user) {
72+
if (err)
73+
res.send(err);
74+
res.json(user);
75+
});
76+
};
77+
78+
exports.deleteUser = function (req, res) {
79+
if (req.user.role == "admin") {
80+
User.remove({
81+
}, function (err, user) {
82+
if (err)
83+
res.send(err);
84+
res.json({ message: 'Customer record successfully deleted' });
85+
});
86+
} else {
87+
res.json({ message: "Unauthorised access" });
88+
}
89+
90+
};
91+
92+
exports.getCustomerList = function (req, res) {
93+
if (req.user.role == "admin") {
94+
User.find({}, function (err, userList) {
95+
if (err)
96+
res.send(err);
97+
res.json(userList);
98+
});
99+
} else {
100+
res.json({ message: "Unauthorised access" });
101+
}
102+
}
103+
104+
exports.balanced = function (req, res) {
105+
let input = req.body.input
106+
let checkBalanced = isBalanced(input);
107+
if (checkBalanced) {
108+
109+
Balanced.findOne({userName:req.user.userName}, function (err, data) {
110+
if (err)
111+
res.send(err);
112+
if (data != null) {
113+
data.attempts = data.attempts + 1;
114+
data.save(function (err, updateData) {
115+
if (err)
116+
res.send(err);
117+
res.json(updateData);
118+
});
119+
} else {
120+
let balancedString = new Balanced({ userName: req.user.userName, message: "balanced", attempts: 1 });
121+
balancedString.save(function (err, user) {
122+
if (err)
123+
res.send(err);
124+
res.json(user);
125+
});
126+
}
127+
});
128+
} else {
129+
let balancedString = new Balanced({ userName: req.user.userName, message: "Unbalanced", attempts: 1 });
130+
balancedString.save(function (err, user) {
131+
if (err)
132+
res.send(err);
133+
res.json(user);
134+
});
135+
}
136+
}
137+
138+
function isBalanced(str) {
139+
if (str.length == 0) {
140+
return false;
141+
}
142+
let stack = [], ch;
143+
let openingBraces = ['[', '{', '('];
144+
let closingBraces = [']', '}', ')'];
145+
146+
for (let i = 0; i < str.length; i++) {
147+
ch = str[i];
148+
if (closingBraces.indexOf(ch) > -1) {
149+
if (stack.length == 0 || (stack.pop() != openingBraces[closingBraces.indexOf(ch)])) {
150+
return false
151+
}
152+
} else {
153+
stack.push(ch);
154+
}
155+
}
156+
return (stack.length == 0);
157+
}

api/models/userModel.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
'use strict'
2+
3+
var mongoose = require('mongoose'),
4+
bcrypt = require('bcrypt'),
5+
Schema = mongoose.Schema;
6+
7+
var UserSchema = new Schema({
8+
email:{
9+
type: String,
10+
unique: true,
11+
lowercase: true,
12+
trim: true,
13+
required: true
14+
},
15+
password: {
16+
type: String,
17+
required: true
18+
},
19+
dob:{
20+
type: Date,
21+
required: true
22+
},
23+
userName: {
24+
type: String,
25+
required: true
26+
},
27+
role:{
28+
type: String,
29+
required: true
30+
}
31+
});
32+
33+
UserSchema.methods.comparePassword = function (password) {
34+
return bcrypt.compareSync(password, this.password);
35+
};
36+
37+
mongoose.model('User',UserSchema);
38+
39+
var BalancedSchema = new Schema({
40+
userName:{
41+
type:String,
42+
required: true
43+
},
44+
message:{
45+
type: String,
46+
required: true
47+
},
48+
attempts:{
49+
type: Number,
50+
default: 0
51+
}
52+
});
53+
54+
mongoose.model('Balanced',BalancedSchema);

api/routes/schoolcomRoutes.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
module.exports = function (app) {
3+
4+
var userHandlers = require('../controllers/userController.js');
5+
6+
app.route('/userlist')
7+
.get(userHandlers.loginRequired, userHandlers.getCustomerList);
8+
app.route('/createUser') // Create user from database
9+
.put(userHandlers.loginRequired, userHandlers.createUser);
10+
app.route('/getUserDetails') // Read user's details from database
11+
.get(userHandlers.loginRequired, userHandlers.getUserDetails);
12+
app.route('/updateUser') // update existing user's details from database
13+
.post(userHandlers.loginRequired, userHandlers.updateUser);
14+
app.route('/deleteUser') // delete user's details from database
15+
.delete(userHandlers.loginRequired, userHandlers.deleteUser);
16+
app.route('/auth/login') // Login user
17+
.post(userHandlers.login);
18+
app.route('/auth/register') // Register user
19+
.put(userHandlers.register);
20+
21+
app.route('/balanced')
22+
.post(userHandlers.loginRequired,userHandlers.balanced);
23+
24+
};

0 commit comments

Comments
 (0)