Skip to content

Commit

Permalink
Merge pull request #2 from hnginternship5/master
Browse files Browse the repository at this point in the history
Recent update
  • Loading branch information
fisayo-rm committed Apr 15, 2019
2 parents 536d46b + 5b7bdec commit c53cded
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 10 deletions.
8 changes: 6 additions & 2 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var cookieParser = require("cookie-parser");
var logger = require("morgan");
var session = require("express-session");
var flash = require("connect-flash");

var MongoStore = require('connect-mongo')(session);
require("dotenv").config();

// The database setup
Expand Down Expand Up @@ -50,9 +50,13 @@ app.use(
session({
secret: "dfgdhhahg15sdff",
saveUninitialized: false,
resave: false
resave: true,
store: new MongoStore({
mongooseConnection: db
})
})
);

app.use(flash());

//locals
Expand Down
4 changes: 4 additions & 0 deletions controllers/home.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ class Home {
static faqs(req, res, next) {
res.render("faqs");
}
//Render Admin page
static admin(req, res, next) {
res.render("admin");
}

// Render job details page
// TODO?
Expand Down
37 changes: 37 additions & 0 deletions models/admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const mongoose = require('mongoose');
const AdminSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: true,
trim: true
},
password: {
type: String,
required: true,
}
});


AdminSchema.statics.authenticate = function (username, password, callback) {
Admin.findOne({ username: username,
password: password
})
.exec(function (err, admin) {
if (err) {
return callback(err)
} else if (!admin) {
var err = new Error('User not found.');
err.status = 401;
return callback(err);
} else {
return callback(null, admin);
}

});
}



var Admin = mongoose.model('Admin', AdminSchema);
module.exports = Admin;
4 changes: 2 additions & 2 deletions models/agent.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ const agentSchema = new Schema({
type: String,
required: true
},
job_role: {
type: String,
number: {
type: Number,
required: true
}
});
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"dependencies": {
"body-parser": "^1.18.3",
"connect-flash": "^0.1.1",
"connect-mongo": "^2.0.3",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"dotenv": "^7.0.0",
Expand All @@ -22,8 +23,8 @@
"flash": "^1.1.0",
"hbs": "~4.0.1",
"http-errors": "~1.6.2",
"mailgun-js": "^0.22.0",
"lodash": "^4.17.11",
"mailgun-js": "^0.22.0",
"mongoose": "^5.5.0",
"morgan": "~1.9.0",
"node-fetch": "^2.3.0",
Expand Down
40 changes: 38 additions & 2 deletions routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var router = express.Router();
const UserController = require("../controllers/user");
const Validation = require("../validation/email");
const Paystack = require("../controllers/paystack");

var Admin = require("../models/admin");
var JobModel = require("../models/jobs");
/* GET home page. */
//router.get("/", Home.index);
Expand All @@ -19,6 +19,43 @@ router.get("/", function(req, res, next) {
// GET About us page
router.get("/about", Home.aboutUs);

//Admin Page
router.get('/admin', Home.admin);

router.post('/admin', function(req, res, next){
if (req.body.username && req.body.password) {
Admin.authenticate(req.body.username, req.body.password, function (error, admin) {
if (error || !admin) {
var err = new Error('Wrong username or password.');
err.status = 401;
return next(err);
} else {
req.session.adminId = admin._id;
return res.redirect('/managejobs');
}
});
}
});

//Authenticate Admin Login to Manage Jobs
router.get('/managejobs', function (req, res, next) {
Admin.findById(req.session.adminId)
.exec(function (error, admin) {
if (error) {
return next(error);
} else {
if (admin === null) {
var err = new Error('Not authorized! Go back!');
err.status = 400;
res.redirect("/admin");
// return next(err);
} else {
return next();
}
}
});
});

// GET Contact us page
router.get("/contact", Home.contactUs);

Expand All @@ -29,7 +66,6 @@ router.get("/faqs", Home.faqs);
router.get("/job_details", Home.job_details);

//Job Routes
router.get("/jobs", Jobs.get_all);
router.get("/jobs_json", Jobs.get_all_json);
router.get("/jobs_json/:job_id", Jobs.get_one_json);
router.get("/jobs_api", Jobs.fetchData);
Expand Down
6 changes: 3 additions & 3 deletions validation/agent.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const validateAgentQueryText = data => {
data.first_name = !isEmpty(data.first_name) ? data.first_name : '';
data.last_name = !isEmpty(data.last_name) ? data.last_name : '';
data.email = !isEmpty(data.email) ? data.email : '';
data.job_role = !isEmpty(data.job_role) ? data.job_role : '';
data.number = !isEmpty(data.number) ? data.number : '';

if (Validator.isEmpty(data.first_name)) {
errors.first_name = 'First name is required';
Expand All @@ -22,8 +22,8 @@ const validateAgentQueryText = data => {
errors.email = 'Email is invalid';
}

if (Validator.isEmpty(data.job_role)) {
errors.job_role = 'Job Role is required';
if (Validator.isEmpty(data.number)) {
errors.number = 'Phone Number is required';
}

return {
Expand Down
20 changes: 20 additions & 0 deletions views/admin.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{{> header }}
<div class="container d-flex">

<div style="text-align: center;">
<div class="form-text" style="display: inline-block;">
<h2 class="text-center">Admin Login</h2>
<p class="text-center">Authorised Personnel Only</p>
</div>
<div style="display: inline-block;">
<form action="/admin" method="POST">
<input style="margin-right: 15px;" type="text" name="username" placeholder="Username" required>
<input style="margin-right: 15px;" type="password" name="password" placeholder="Password" required>
<br/>
<button style="margin-top: 10px; margin-bottom: 10px;" class="btn btn-primary">Login</button>
</form>
</div>
</div>
</div>

<script src="views/dist/js/bootstrap.min.js"></script> {{> footer}}
8 changes: 8 additions & 0 deletions views/partials/header.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,14 @@
<input type="tel" name="phoneNo" class="form-control my-0" placeholder="+234 7036836753" minlength="11" pattern="[+]{0,1}[0-9\s]+"
maxlength="16" required>
</div>
<div class="form-group">
<label for="" class="my-0">Github Profile</label>
<input type="link" name="github" class="form-control my-0" placeholder="github.com/username" required>
</div>
<div class="form-group">
<label for="" class="my-0">LinknIn Profile</label>
<input type="link" name="linkedin" class="form-control my-0" placeholder="Enter Link" required>
</div>
<input value="Pay" type="submit" name="phone" class="btn btn-custom px-5 mt-4"></input>
</form>
</div>
Expand Down

0 comments on commit c53cded

Please sign in to comment.