|
@@ -14,12 +14,29 @@ const config = require('config'),
|
|
|
|
|
|
|
|
|
const global = require('./global'),
|
|
|
+ passport = global.passport,
|
|
|
+ localStrategy = global.localStrategy,
|
|
|
stations = require('./stations');
|
|
|
|
|
|
var eventEmitter = new events.EventEmitter();
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ passport.serializeUser(function(user, cb) {
|
|
|
+ done(null, user.id);
|
|
|
+ });
|
|
|
+
|
|
|
+ passport.deserializeUser(function(id, cb) {
|
|
|
+ r.table('users').filter({id}).run(rc, (err, cursor) => {
|
|
|
+ done(err, cursor.toArray().result);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ app.use(passport.initialize());
|
|
|
+ app.use(passport.session());
|
|
|
+
|
|
|
|
|
|
|
|
|
on: function (name, cb) {
|
|
@@ -32,40 +49,40 @@ module.exports = {
|
|
|
|
|
|
|
|
|
|
|
|
- '/users/login': function (user, cb) {
|
|
|
-
|
|
|
- if (!user.username || !user.password) {
|
|
|
- return cb({ status: 'error', message: 'Invalid login request' });
|
|
|
- }
|
|
|
-
|
|
|
- r.table('users').filter({
|
|
|
- username: user.username,
|
|
|
- password: crypto.createHash('md5').update(user.password).digest("hex")
|
|
|
- }).run(rc, (err, cursor) => {
|
|
|
- if (err) {
|
|
|
- return cb({ status: 'failure', message: 'Error while fetching the user' });
|
|
|
- }
|
|
|
- else {
|
|
|
- cursor.toArray((err, result) => {
|
|
|
- if (err) {
|
|
|
- return cb({ status: 'failure', message: 'Error while fetching the user' });
|
|
|
- }
|
|
|
- else {
|
|
|
- return cb({ status: 'success', user: result });
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
+ '/users/login': function (user, cb) {},
|
|
|
|
|
|
'/users/register': function (user, cb) {
|
|
|
-
|
|
|
- if (!user.email || !user.username || !user.password) {
|
|
|
- return cb({ status: 'error', message: 'Invalid register request' });
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- },
|
|
|
+ passport.use('local-signup', new localStrategy({
|
|
|
+ usernameField : user.email,
|
|
|
+ passwordField : user.password,
|
|
|
+ passReqToCallback : true
|
|
|
+ }, (req, email, password, done) => {
|
|
|
+ process.nextTick(() => {
|
|
|
+ r.table('users').filter({
|
|
|
+ email: user.email
|
|
|
+ }).run(rc, (err, cursor) => {
|
|
|
+ if (err) return done(err);
|
|
|
+ else {
|
|
|
+ cursor.toArray((err, result) => {
|
|
|
+ if (result) {
|
|
|
+ return done(null, false);
|
|
|
+ } else {
|
|
|
+ r.table('authors').insert([{
|
|
|
+ email,
|
|
|
+ password: crypto.createHash('md5').update(password).digest("hex")
|
|
|
+ }]).run(connection, function(err, result) {
|
|
|
+ if (err) throw err;
|
|
|
+ return done(null, result);
|
|
|
+ console.log(result);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }));
|
|
|
+
|
|
|
+ },
|
|
|
|
|
|
'/stations': function (cb) {
|
|
|
cb(stations.getStations().map(function (result) {
|