2c8c1137e0510aa47c714df27a23c434fb3f8442
[motion.git] / server / auth / local / index.js
1 'use strict';
2
3 var express = require('express');
4 var passport = require('passport');
5 var async = require('async');
6
7 var auth = require('../auth.service');
8 var User = require('../../models').User;
9
10 var router = express.Router();
11
12 router
13   .post('/', function(req, res, next) {
14     passport.authenticate('local-login', function(err, user, info) {
15       var error = err || info;
16       if (error) return res.status(401).json(error);
17       if (!user) return res.status(404).json({
18         message: 'Something went wrong, please try again.'
19       });
20
21       var token = auth.signToken(user.id, user.role, req.body.remember || false);
22
23       User
24         .findById(user.id)
25         .then(function(user) {
26           user
27             .getVoiceQueues({
28               attributes: ['name']
29             })
30             .then(function(voiceQueues) {
31               async.eachSeries(voiceQueues, function iterator(voiceQueue, callback) {
32                 require('./local.ami').login(user.id, user.name, voiceQueue.name, callback);
33               }, function done() {
34                 return res.json({
35                   token: token,
36                   userId: user.id
37                 });
38               });
39             })
40             .catch(function(err) {
41               return next(err);
42             });
43         })
44         .catch(function(err) {
45           return next(err);
46         });
47
48     })(req, res, next)
49   });
50
51 router
52   .get('/logout', auth.isAuthenticated(), function(req, res, next) {
53     User
54       .findById(req.user.id)
55       .then(function(user) {
56         user
57           .getVoiceQueues({
58             attributes: ['name']
59           })
60           .then(function(voiceQueues) {
61             async.eachSeries(voiceQueues, function iterator(voiceQueue, callback) {
62               require('./local.ami').logout(req.user.id, req.user.name, voiceQueue.name, callback);
63             }, function done() {
64               req.logout();
65               res.redirect('/');
66             });
67           })
68           .catch(function(err) {
69             return next(err);
70           });
71       })
72       .catch(function(err) {
73         return next(err);
74       });
75
76     // passport.authenticate('local-logout', function(err, user, info) {
77     //   var error = err || info;
78     //   if (error) return res.status(401).json(error);
79     //   if (!user) return res.status(404).json({
80     //     message: 'Something went wrong, please try again.'
81     //   });
82     //
83     //   var token = auth.signToken(user.id, user.role);
84     //   res.json({
85     //     token: token,
86     //     userId: user.id
87     //   });
88     //
89     // })(req, res, next)
90   });
91
92 module.exports = router;