Skip to content

Instantly share code, notes, and snippets.

@krpeacock
Last active December 6, 2019 22:58
Show Gist options
  • Save krpeacock/0ce06ea4231a355202695f161369f5f3 to your computer and use it in GitHub Desktop.
Save krpeacock/0ce06ea4231a355202695f161369f5f3 to your computer and use it in GitHub Desktop.

##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

In app.js

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
<script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script> <script> hljs.initHighlightingOnLoad(); </script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment