summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-07-09 16:59:22 -0400
committerJules Laplace <jules@okfoc.us>2014-07-09 16:59:22 -0400
commitc251396987dcffa38d421303162661b68443314f (patch)
treea854c7cc80a78cbd37bdc044cf9d57f9b2e50fd0
parente31dfa7c071b04733b2a586efb5f456dbd1fd130 (diff)
got some datamodels
-rw-r--r--.gitignore2
-rw-r--r--README.md4
-rw-r--r--config.json6
-rw-r--r--package.json12
-rw-r--r--server/api/index.js4
-rw-r--r--server/api/party.js10
-rw-r--r--server/api/user.js13
-rw-r--r--server/auth/index.js70
-rw-r--r--server/db.js11
-rw-r--r--server/index.js14
-rw-r--r--server/models/Party.js13
-rw-r--r--server/models/User.js21
-rw-r--r--server/models/UserParty.js11
-rw-r--r--server/models/index.js3
14 files changed, 174 insertions, 20 deletions
diff --git a/.gitignore b/.gitignore
index c0f4c0c..54e537b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,5 +29,3 @@ tmp/
*.mp4
*.db
-config.json
-
diff --git a/README.md b/README.md
index d360d94..8c0b9d2 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
-postgres/node testbed
-=====================
+protocols
+========= \ No newline at end of file
diff --git a/config.json b/config.json
new file mode 100644
index 0000000..6d6c27d
--- /dev/null
+++ b/config.json
@@ -0,0 +1,6 @@
+{
+ "name": "protocols",
+ "secret": "ummagumma",
+ "host": "localhost",
+ "port": 3000
+}
diff --git a/package.json b/package.json
index 7ca5610..0861dc4 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
- "name": "postgres-test",
+ "name": "protocols",
"version": "0.0.0",
- "description": "postgres/heroku testbed",
+ "description": "protocols",
"main": "lib/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
@@ -12,15 +12,17 @@
"express": "~4.5.1",
"express-session": "~1.6.4",
"passport": "~0.2.0",
- "csurf": "~1.3.0",
+ "passport-local": "~1.0.0",
+ "csurf": "~1.3.0",
"lodash": "~2.4.1",
- "pg": "~3.3.0",
"ejs": "^0.8.8",
"multer": "~0.1.0",
"body-parser": "~1.3.0",
"cookie-parser": "~1.3.2",
"method-override": "~2.1.0",
"errorhandler": "~1.1.1",
- "morgan": "~1.1.1"
+ "morgan": "~1.1.1",
+ "pg": "~3.3.0",
+ "sequelize": "~1.7.9"
}
}
diff --git a/server/api/index.js b/server/api/index.js
index 3b02ec9..9139a28 100644
--- a/server/api/index.js
+++ b/server/api/index.js
@@ -1,2 +1,4 @@
module.exports = {
-} \ No newline at end of file
+ party: require('./party'),
+ user: require('./user'),
+}
diff --git a/server/api/party.js b/server/api/party.js
new file mode 100644
index 0000000..e0a9a22
--- /dev/null
+++ b/server/api/party.js
@@ -0,0 +1,10 @@
+module.exports = {
+ list: function (req, res) {
+ },
+
+ view: function (req, res) {
+ },
+
+ edit: function (req, res) {
+ }
+}
diff --git a/server/api/user.js b/server/api/user.js
new file mode 100644
index 0000000..099521a
--- /dev/null
+++ b/server/api/user.js
@@ -0,0 +1,13 @@
+module.exports = {
+ all: function (req, res) {
+ },
+
+ view: function (req, res) {
+ },
+
+ edit: function (req, res) {
+ },
+
+ destroy: function (req, res) {
+ }
+} \ No newline at end of file
diff --git a/server/auth/index.js b/server/auth/index.js
index 3b02ec9..709fd0d 100644
--- a/server/auth/index.js
+++ b/server/auth/index.js
@@ -1,2 +1,68 @@
-module.exports = {
-} \ No newline at end of file
+/* jshint node: true */
+
+var passport = require('passport'),
+ LocalStrategy = require('passport-local').Strategy,
+ _ = require('lodash'),
+ util = require('../util'),
+ config = require('../../../config.json'),
+ User = require('../models/User');
+
+var auth = {
+
+ init: function () {
+ passport.serializeUser(auth.serializeUser);
+ passport.deserializeUser(auth.deserializeUser);
+
+ passport.use(new LocalStrategy(auth.verifyLocalUser))
+ },
+
+ loggedInLocal: function (req, res, next) {
+ passport.authenticate("local", function(err, user, info){
+ if (err) {
+ return res.json({ error: err });
+ }
+ if (! user) {
+ return info ? res.json(info) : res.redirect("/login");
+ }
+
+ user.last_ip = util.ip2num( req.ip )
+ user.save(function(err, data){ if (err) console.err('error setting ip for user') })
+
+ req.logIn(user, function(err) {
+ if (err) { return next(err); }
+ var returnTo = req.session.returnTo
+ delete req.session.returnTo
+ return res.json({ status: "OK", returnTo: returnTo || "/profile" })
+ });
+ })(req, res, next);
+ },
+
+ logout: function (req, res) {
+ req.logout();
+ res.redirect('/');
+ },
+
+ serializeUser: function (user, done) {
+ done(null, user.id);
+ },
+
+ deserializeUser: function (id, done) {
+ User.find({ id: id }, function (err, user) {
+ done(err, user)
+ });
+ },
+
+ verifyLocalUser: function (username, password, done) {
+ User.findByUsername(username, function(err, user){
+ if (err) { return done(err); }
+ if (! user) {
+ return done(null, false, { error: { errors: { username: { message: 'No such username.' } }}})
+ }
+ if (! user.validPassword(password)) {
+ return done(null, false, { error: { errors: { password: { message: 'Incorrect password.' } }}})
+ }
+ return done(null, user);
+ });
+ }
+
+}
diff --git a/server/db.js b/server/db.js
new file mode 100644
index 0000000..a56c163
--- /dev/null
+++ b/server/db.js
@@ -0,0 +1,11 @@
+var Sequelize = require("sequelize"),
+ pg = require('pg');
+
+var db = module.exports = {}
+
+var DATABASE_URL = process.env.DATABASE_URL || ('postgres://postgres@localhost/' + config.name)
+
+db.sequelize = new Sequelize(DATABASE_URL, {
+ dialect: 'postgres',
+ protocol: null,
+})
diff --git a/server/index.js b/server/index.js
index 2f786ec..36a84f7 100644
--- a/server/index.js
+++ b/server/index.js
@@ -21,23 +21,24 @@ var http = require('http'),
multer = require('multer'),
morgan = require('morgan'),
csurf = require('csurf'),
- path = require('path'),
- pg = require('pg');
+ path = require('path');
var app = express()
var server
-var DATABASE_URI = process.env.DATABASE_URL || ('postgres://postgres@localhost/' + config.name)
+
+var auth = require('./auth')
+var api = require('./api')
//
var site = {}
site.init = function(){
- pg.connect(DATABASE_URI, site.ready);
+ site.ready()
}
site.ready = function(){
- // auth.init()
+ auth.init()
site.setup()
site.route()
}
@@ -82,6 +83,9 @@ site.setup = function(){
site.route = function(){
app.get('/', views.home)
+ app.post('/auth/signin', auth.loggedInLocal);
+ app.get('/logout', auth.logout);
+
}
site.init()
diff --git a/server/models/Party.js b/server/models/Party.js
new file mode 100644
index 0000000..f48fde1
--- /dev/null
+++ b/server/models/Party.js
@@ -0,0 +1,13 @@
+
+// 0 id 1 date
+// 0 id 1 date 2 location
+
+var db = require("../db"),
+ Sequelize = require("sequelize");
+
+var Party = db.sequelize.define('Party', {
+ date: Sequelize.INTEGER,
+ location: Sequelize.STRING,
+})
+
+module.exports = Party
diff --git a/server/models/User.js b/server/models/User.js
new file mode 100644
index 0000000..c379653
--- /dev/null
+++ b/server/models/User.js
@@ -0,0 +1,21 @@
+// 0 id 1 group 2 name 3 email 4 blurb
+// 0 id 1 name 2 email 3 access 4 emailhidden 5 hostid 6 blurb
+// 0 id 1 name 2 firstname 3 email 4 access
+
+var db = require("../db"),
+ Sequelize = require("sequelize");
+
+var User = db.sequelize.define('User', {
+ email: Sequelize.STRING,
+ password: Sequelize.STRING,
+
+ name: Sequelize.STRING,
+
+ access: Sequelize.INTEGER,
+ emailhidden: Sequelize.BOOLEAN,
+ hostid: Sequelize.INTEGER,
+ blurb: Sequelize.BLOB,
+})
+
+module.exports = User
+
diff --git a/server/models/UserParty.js b/server/models/UserParty.js
new file mode 100644
index 0000000..626135c
--- /dev/null
+++ b/server/models/UserParty.js
@@ -0,0 +1,11 @@
+
+var db = require("../db"),
+ Sequelize = require("sequelize");
+
+var UserParty = db.sequelize.define('UserParty', {
+ user_id: Sequelize.INTEGER,
+ host_id: Sequelize.INTEGER,
+ party_id: Sequelize.INTEGER,
+})
+
+module.exports = UserParty
diff --git a/server/models/index.js b/server/models/index.js
deleted file mode 100644
index 7acaac2..0000000
--- a/server/models/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
-
-}