mirror of
https://github.com/PretendoNetwork/website.git
synced 2026-09-07 16:36:55 -05:00
admin loggin in works.
This commit is contained in:
@@ -1,11 +1,19 @@
|
||||
const common = require('../helpers/common');
|
||||
|
||||
function adminUserAuthenticationMiddleware(req, res, next) {
|
||||
function authenticationRequired(req, res, next) {
|
||||
if (req.isAuthenticated()) {
|
||||
return next();
|
||||
} else {
|
||||
console.log('sending auth error');
|
||||
common.sendApiAuthError(req, res);
|
||||
}
|
||||
|
||||
common.sendApiAuthError(req, res);
|
||||
}
|
||||
|
||||
module.exports = adminUserAuthenticationMiddleware;
|
||||
function authenticationOptional(req, res, next) {
|
||||
return next();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
authenticationRequired,
|
||||
authenticationOptional
|
||||
};
|
||||
877
package-lock.json
generated
877
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,7 @@
|
||||
"bcrypt": "^3.0.1",
|
||||
"body-parser": "^1.18.3",
|
||||
"colors": "^1.1.2",
|
||||
"connect-mongo": "^2.0.1",
|
||||
"express": "^4.16.2",
|
||||
"express-handlebars": "^3.0.0",
|
||||
"express-session": "^1.15.6",
|
||||
|
||||
@@ -9,6 +9,7 @@ file for handling admin panel routes
|
||||
const router = require('express').Router();
|
||||
|
||||
// import dependencies
|
||||
const passport = require('passport');
|
||||
const common = require('../helpers/common');
|
||||
const adminUserMiddleware = require('../middleware/admin-authentication');
|
||||
const adminUser = require('../models/admin-user');
|
||||
@@ -18,15 +19,45 @@ router.get('/admin', (req, res) => {
|
||||
res.render('admin');
|
||||
});
|
||||
|
||||
// admin login
|
||||
router.post('/admin/login', (req, res) => {
|
||||
common.sendApi404(req, res);
|
||||
/*
|
||||
* /admin/api/v1/login
|
||||
*
|
||||
* signs admin user in
|
||||
*
|
||||
* post {
|
||||
* username - username of admin account
|
||||
* password - password of admin account
|
||||
* }
|
||||
* return {
|
||||
* code: http code
|
||||
* success: boolean - true if login succesfull
|
||||
* errors: Strings[messages]
|
||||
* }
|
||||
*/
|
||||
router.post('/admin/api/v1/login', passport.authenticate('adminUserStrategy'), function (req, res) {
|
||||
res.json({
|
||||
message: 'sucessfull I guess',
|
||||
isAuthed: req.isAuthenticated()
|
||||
});
|
||||
});
|
||||
|
||||
// endpoints
|
||||
router.use('/admin/api/v1', adminUserMiddleware);
|
||||
|
||||
router.post('/admin/register', (req, res) => {
|
||||
/*
|
||||
* /admin/api/v1/register
|
||||
* - requires admin auth
|
||||
*
|
||||
* registers a new admin user
|
||||
*
|
||||
* post {
|
||||
* username - username of new admin account
|
||||
* password - password of new admin account
|
||||
* }
|
||||
* return {
|
||||
* code: httpcode,
|
||||
* success: boolean,
|
||||
* errors: Strings[messages]
|
||||
* }
|
||||
*/
|
||||
router.post('/admin/api/v1/register', adminUserMiddleware.authenticationRequired, (req, res) => {
|
||||
if (!req.body || !req.body.username || !req.body.password) {
|
||||
// no/wrong post body
|
||||
common.sendApiGenericError(req, res);
|
||||
@@ -51,13 +82,23 @@ router.post('/admin/register', (req, res) => {
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/admin/api/v1/ping', (req, res) => {
|
||||
res.json({
|
||||
success: true,
|
||||
messsage: 'pong!'
|
||||
/*
|
||||
* /admin/api/v1/check
|
||||
*
|
||||
* checks if admin logged in
|
||||
*
|
||||
* return {
|
||||
* code: httpcode
|
||||
* success: boolean - true if admin logged in
|
||||
* errors: Strings[messages]
|
||||
* }
|
||||
*/
|
||||
router.get('/admin/api/v1/check', adminUserMiddleware.authenticationOptional, (req, res) => {
|
||||
res.status(200).json({
|
||||
code: 200,
|
||||
success: req.isAuthenticated()
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// export the router
|
||||
module.exports = router;
|
||||
|
||||
27
server.js
27
server.js
@@ -10,8 +10,9 @@ the file that contains the code to run the server
|
||||
const express = require('express');
|
||||
const handlebars = require('express-handlebars');
|
||||
const session = require('express-session');
|
||||
const mongoStore = require('connect-mongo')(session);
|
||||
const passport = require('passport');
|
||||
const LocalStrategy = require('passport').Strategy;
|
||||
const LocalStrategy = require('passport-local').Strategy;
|
||||
const bcrypt = require('bcrypt');
|
||||
const mongoose = require('mongoose');
|
||||
const bodyParser = require('body-parser');
|
||||
@@ -41,7 +42,18 @@ connection.on('error', console.error.bind(console, 'connection error:'));
|
||||
// setup session
|
||||
app.use(session({
|
||||
secret: config.secrets.session,
|
||||
//cookie: { secure: true } // use when https is enabled
|
||||
saveUninitialized: true,
|
||||
resave: true,
|
||||
cookie: {
|
||||
maxAge: 3600000,
|
||||
httpOnly: true//, // remove on production
|
||||
/*secure: true*/
|
||||
},
|
||||
// using store session on MongoDB using express-session + connect
|
||||
store: new mongoStore({
|
||||
mongooseConnection: connection,
|
||||
collection: 'sessions'
|
||||
})
|
||||
}));
|
||||
|
||||
// setup authentication
|
||||
@@ -62,6 +74,7 @@ passport.use('adminUserStrategy', new LocalStrategy(
|
||||
return done(null, false);
|
||||
}
|
||||
|
||||
console.log('info correct');
|
||||
// password is correct, return user
|
||||
return done(null, user);
|
||||
|
||||
@@ -74,6 +87,16 @@ passport.use('adminUserStrategy', new LocalStrategy(
|
||||
});
|
||||
}
|
||||
));
|
||||
//Configuring app to have sessions
|
||||
passport.serializeUser(function(user, done) {
|
||||
done(null, user.id);
|
||||
});
|
||||
|
||||
passport.deserializeUser(function(id, done) {
|
||||
adminUserModel.findById(id, function(err, user) {
|
||||
done(err, user);
|
||||
});
|
||||
});
|
||||
|
||||
// load the handlebars module
|
||||
app.engine('.hbs', handlebars({
|
||||
|
||||
Reference in New Issue
Block a user