Skip to content

Commit fe5ea7e

Browse files
Restyled by prettier
1 parent 6940dee commit fe5ea7e

File tree

9 files changed

+840
-785
lines changed

9 files changed

+840
-785
lines changed

Utils/utils.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
const crypto = require("crypto");
22

3-
const genRandomString = function(length) {
4-
return crypto.randomBytes(Math.ceil(length / 2))
5-
.toString("hex") /** convert to hexadecimal format */
6-
.slice(0, length); /** return required number of characters */
3+
const genRandomString = function (length) {
4+
return crypto
5+
.randomBytes(Math.ceil(length / 2))
6+
.toString("hex") /** convert to hexadecimal format */
7+
.slice(0, length); /** return required number of characters */
78
};
89

910
const hashPassword = async (password, salt) => {
1011
let config = {
11-
iterations : 1000,
12+
iterations: 1000,
1213
};
1314
return new Promise((resolve, reject) => {
14-
crypto.pbkdf2(password, salt, config.iterations, 32, "sha512",
15-
(err, derivedKey) =>
16-
err ? reject(err) : resolve(derivedKey.toString("hex")));
15+
crypto.pbkdf2(
16+
password,
17+
salt,
18+
config.iterations,
19+
32,
20+
"sha512",
21+
(err, derivedKey) =>
22+
err ? reject(err) : resolve(derivedKey.toString("hex"))
23+
);
1724
});
1825
};
1926

app.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@ const mongoose = require("mongoose");
2626

2727
const connectDB = async () => {
2828
const con = await mongoose.connect(process.env.mongoUrl, {
29-
useNewUrlParser : true,
30-
useCreateIndex : true,
31-
useFindAndModify : false,
32-
useUnifiedTopology : true,
33-
autoIndex : true,
29+
useNewUrlParser: true,
30+
useCreateIndex: true,
31+
useFindAndModify: false,
32+
useUnifiedTopology: true,
33+
autoIndex: true,
3434
});
3535
console.log(
36-
chalk.bgGreen.black(`MongoDB Connected: ${con.connection.host}.`));
36+
chalk.bgGreen.black(`MongoDB Connected: ${con.connection.host}.`)
37+
);
3738
};
3839

3940
connectDB();
@@ -43,8 +44,8 @@ var app = express();
4344
app.enable("trust proxy");
4445

4546
// Set Body parser, reading data from body into req.body
46-
app.use(express.json({limit : "10kb"}));
47-
app.use(express.urlencoded({extended : true, limit : "10kb"}));
47+
app.use(express.json({ limit: "10kb" }));
48+
app.use(express.urlencoded({ extended: true, limit: "10kb" }));
4849

4950
// Set security HTTP headers
5051
app.use(helmet());
@@ -53,13 +54,13 @@ app.use(helmet());
5354
app.set("views", path.join(__dirname, "views"));
5455
app.set("view engine", "jade");
5556

56-
app.use(morgan("combined", {stream : winston.stream}));
57+
app.use(morgan("combined", { stream: winston.stream }));
5758

5859
// Limit requests from the same API
5960
const limiter = rateLimit({
60-
max : 100,
61-
windowMs : 60 * 60 * 1000,
62-
messege : "Too many requests from this IP, Please try again in an hour!",
61+
max: 100,
62+
windowMs: 60 * 60 * 1000,
63+
messege: "Too many requests from this IP, Please try again in an hour!",
6364
});
6465
app.use("/", limiter);
6566

@@ -88,19 +89,24 @@ app.use("/users", usersRouter);
8889
app.use("/quizes", quizRouter);
8990

9091
// catch 404 and forward to error handler
91-
app.use(function(req, res, next) { next(createError(404)); });
92+
app.use(function (req, res, next) {
93+
next(createError(404));
94+
});
9295

9396
// error handler
94-
app.use(function(err, req, res, next) {
97+
app.use(function (err, req, res, next) {
9598
// set locals, only providing error in development
9699
res.locals.message = err.message;
97100
res.locals.error = req.app.get("env") === "development" ? err : {};
98101

99-
winston.error(`${err.status || 500} - ${err.message} - ${req.originalUrl} - ${
100-
req.method} - ${req.ip}`);
102+
winston.error(
103+
`${err.status || 500} - ${err.message} - ${req.originalUrl} - ${
104+
req.method
105+
} - ${req.ip}`
106+
);
101107
// render the error page
102108
res.status(err.status || 500);
103-
res.json({err, message : err.message});
109+
res.json({ err, message: err.message });
104110
// res.render("error");
105111
});
106112

authenticate.js

Lines changed: 50 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,55 +6,69 @@ const jwt = require("jsonwebtoken");
66

77
const User = require("./models/Users");
88

9-
const {comparePassword} = require("./Utils/utils");
9+
const { comparePassword } = require("./Utils/utils");
1010

11-
passport.use(new LocalStrategy(function(username, password, done) {
12-
User.findOne({username : username},
13-
"username isAdmin passwordHash passwordSalt",
14-
async function(err, user) {
15-
if (err) {
16-
return done(err);
17-
}
11+
passport.use(
12+
new LocalStrategy(function (username, password, done) {
13+
User.findOne(
14+
{ username: username },
15+
"username isAdmin passwordHash passwordSalt",
16+
async function (err, user) {
17+
if (err) {
18+
return done(err);
19+
}
1820

19-
if (!user) {
20-
return done(null, false, {message : "Incorrect Username."});
21-
}
22-
const verifyPassword = await comparePassword(
23-
user.passwordHash, user.passwordSalt, password);
24-
if (!verifyPassword) {
25-
return done(null, false, {message : "Incorrect password."});
26-
}
21+
if (!user) {
22+
return done(null, false, { message: "Incorrect Username." });
23+
}
24+
const verifyPassword = await comparePassword(
25+
user.passwordHash,
26+
user.passwordSalt,
27+
password
28+
);
29+
if (!verifyPassword) {
30+
return done(null, false, { message: "Incorrect password." });
31+
}
2732

28-
return done(null, user);
29-
});
30-
}));
33+
return done(null, user);
34+
}
35+
);
36+
})
37+
);
3138

32-
passport.serializeUser(function(user, done) { done(null, user.id); });
39+
passport.serializeUser(function (user, done) {
40+
done(null, user.id);
41+
});
3342

34-
passport.deserializeUser(function(
35-
id, done) { User.findById(id, function(err, user) { done(err, user); }); });
43+
passport.deserializeUser(function (id, done) {
44+
User.findById(id, function (err, user) {
45+
done(err, user);
46+
});
47+
});
3648

37-
exports.generateToken = function(user) {
38-
return jwt.sign(user, process.env.TokenSecret, {expiresIn : 36000});
49+
exports.generateToken = function (user) {
50+
return jwt.sign(user, process.env.TokenSecret, { expiresIn: 36000 });
3951
};
4052

4153
let opts = {};
4254
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
4355
opts.secretOrKey = process.env.TokenSecret;
4456

45-
passport.use(new JwtStrategy(opts, (jwt_payload, done) => {
46-
User.findOne({_id : jwt_payload._id}, "username isAdmin", (err, user) => {
47-
if (err) {
48-
return done(err, false);
49-
} else if (user) {
50-
return done(null, user);
51-
} else {
52-
return done(null, false);
53-
}
54-
});
55-
}));
57+
passport.use(
58+
new JwtStrategy(opts, (jwt_payload, done) => {
59+
User.findOne({ _id: jwt_payload._id }, "username isAdmin", (err, user) => {
60+
if (err) {
61+
return done(err, false);
62+
} else if (user) {
63+
return done(null, user);
64+
} else {
65+
return done(null, false);
66+
}
67+
});
68+
})
69+
);
5670

57-
exports.verifyUser = passport.authenticate("jwt", {session : false});
71+
exports.verifyUser = passport.authenticate("jwt", { session: false });
5872
exports.verifyAdmin = (req, res, next) => {
5973
if (req.user && req.user.isAdmin) {
6074
return next();

config.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = {
2-
'secretKey' : '12345-67890-09876-54321',
3-
'mongoUrl' : 'mongodb://localhost:27017/quiz',
2+
secretKey: "12345-67890-09876-54321",
3+
mongoUrl: "mongodb://localhost:27017/quiz",
44

5-
"start" : "node ./bin/www",
6-
"test" : "mocha --recursive --exit"
7-
}
5+
start: "node ./bin/www",
6+
test: "mocha --recursive --exit",
7+
};

models/Users.js

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,33 @@ const mongoose = require("mongoose");
22

33
const Schema = mongoose.Schema;
44

5-
const UserSchema = new Schema({
6-
username : {
7-
type : String,
8-
trim : true,
9-
required : true,
10-
max : 64,
11-
min : 3,
12-
},
5+
const UserSchema = new Schema(
6+
{
7+
username: {
8+
type: String,
9+
trim: true,
10+
required: true,
11+
max: 64,
12+
min: 3,
13+
},
1314

14-
passwordSalt : {type : String, required : true, max : 16},
15+
passwordSalt: { type: String, required: true, max: 16 },
1516

16-
passwordHash : {
17-
type : String,
18-
required : true,
19-
},
17+
passwordHash: {
18+
type: String,
19+
required: true,
20+
},
2021

21-
isAdmin : {
22-
type : Boolean,
23-
required : true,
24-
default : false,
22+
isAdmin: {
23+
type: Boolean,
24+
required: true,
25+
default: false,
26+
},
2527
},
26-
},
27-
{
28-
timestamps : true,
29-
});
28+
{
29+
timestamps: true,
30+
}
31+
);
3032

3133
const User = mongoose.model("Users", UserSchema);
3234

0 commit comments

Comments
 (0)