Integration systems
2 min readMay 16, 2022
Passport
"passport": "0.3.2",
"passport-local": "1.0.0",var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = mongoose.model('User');
var Student = mongoose.model('Student');
var Teacher = mongoose.model('Teacher');passport.use(new LocalStrategy({
usernameField: 'user[email]',
passwordField: 'user[password]'
}, function(email, password, done) {
User.findOne({email: email}).then(function(user){
if(!user || !user.validPassword(password)){
return done(null, false, {errors: {'email or password': 'is invalid'}});
}return done(null, user);
}).catch(done);
}));passport.use("student",new LocalStrategy({
usernameField: 'student[email]',
passwordField: 'student[password]'
}, function(email, password, done) {
Student.findOne({email: email}).then(function(student){
if(!student || !student.validPassword(password)){
return done(null, false, {errors: {'email or password': 'is invalid'}});
}return done(null, student);
}).catch(done);
}));passport.use("student-phone",new LocalStrategy({
usernameField: 'student[phoneNumber]',
passwordField: 'student[phoneNumber]'
}, function(phone, password, done) {
Student.findOne({phone: phone}).then(function(student){
if(!student || !student.validPassword(password)){
return done(null, false, {errors: {'Otp is invalid': 'is invalid'}});
}return done(null, student);
}).catch(done);
}));
JWT
npm i jsonwebtokenvar jwt = require('express-jwt');
var secret = require('../config').secret;function getTokenFromHeader(req){
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Token' ||
req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
}return null;
}var auth = {
required: jwt({
secret: secret,
userProperty: 'payload',
getToken: getTokenFromHeader
}),
optional: jwt({
secret: secret,
userProperty: 'payload',
credentialsRequired: false,
getToken: getTokenFromHeader
})
};module.exports = auth;
Mongodb
npm i mongoosemongoose = require('mongoose');require('dotenv').config();if(isProduction){
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true });
} else {
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true });
mongoose.set('debug', true);
}
Express form/file upload
var express = require("express");
var app = express();
let fs = require('fs');
var bodyParser = require('body-parser');
var multer = require('multer');const fileUpload = require('express-fileupload');app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: true }));app.use(fileUpload());app.post("/upload-file", function (req, res) { console.log(req.files.myfile.name);
console.log(req.body); var file = req.files.myfile; var jsonData = file.data.toString();
res.send(jsonData);
});app.post("/read-file", function (req, res) { var editPageData = fs.readFileSync('json_editor/editing_page.html',
{encoding:'utf8', flag:'r'});
editPageData = editPageData.replace("[json-data]",jsonData);
res.send(editPageData);
});app.get("/get-file", function (req, res) {
res.sendFile(__dirname + "/file_page.html");
});
var server = app.listen(8081, function () {
var host = server.address().address;
var port = server.address().port;console.log("Example app listening at http://%s:%s", host, port);
});