##Authorization
Authorization Setup
-
take passport_app -
touch app.js -
npm init -y -
npm i -S express jade knex pg passport passport-local body-parser method-override cookie-session morgan locus dotenv bcrypt flash -
npm install -g generate-secret -
touch .env -
echo node_modules > .gitignore -
echo .env >> .gitignore -
generate-secret -y -
gaa -
git commit -m "initial" -
createdb passport_app -
knex init -
mkdir views routes public db helpers -
touch routes/index.js -
cd routes -
touch {users, auth}.js -
cd ../views -
touch {layout,error}.jade -
mkdir auth users -
cd users -
touch {index, new, edit, show}.jade -
cd ../auth -
touch login.jade -
touch db/knex.js -
Configure knexfile.js
- Switch from sqlite3 to pg
- Change filename to 'database_name'
- Configure pool + debug:true
-
Configure knex.js:
var environment = process.env.NODE_ENV || 'development';
var config = require('../knexfile.js')[environment];
module.exports = require('knex')(config);- Create a migration
- Configure migration
- Optional: create a snippet for
exports.up = function(knex, Promise) {
return knex.schema.createTable('users', (t)=> {
t.increments();
t.text('email').unique().notNullable();
t.text('password').notNullable()
});
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('users');
};- Run migration
- Set up app.js
- require all middleware
- use middleware
- listen
require("dotenv").load()
//
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const methodOverride = require("method-override");
const session = require("cookie-session");
const morgan = require("morgan");
const routes = require("./routes");
//
app.set("view engine", "jade");
//
app.use(express.static(__dirname + "/public"));
//
app.use(bodyParser.urlencoded({extended: true));
app.use(methodOverride("_method"));
app.use(session({
secret: process.env.SECRET
}))
app.use(flash())
//
app.get("/", function(req,res){
res.redirect("/auth/login");
})
//
app.use("/users", routes.users)
app.use("/auth", routes.auth)
// Catch all errors
app.get("*", function(req,res){
res.render("error")
})
//
app.listen(3000, ( => {
console.log("Server starting on port 3000")
}))- Create index, auth, and users routes