-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathuber.js
More file actions
115 lines (90 loc) · 3.3 KB
/
uber.js
File metadata and controls
115 lines (90 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//Global modules
var express = require('express');
var http = require('http');
var path = require('path');
var colors = require('colors');
var logger = require('express-logger');
var config = require('./config');
var bodyParser = require('body-parser')
var passport = require('passport');
var uberStrategy = require('passport-uber');
var util = require('util');
var session = require('express-session');
var User = require('./models').User;
var app = express();
app.listen(config.port,function(){
console.log("ubervoice starting up".yellow);
console.log("Hostname: ".bold+config.hostname+ " port: "+config.port);
console.log("Public directory: ".bold+config.public);
console.log('Logfile: '.bold+config.logging.file);
console.log('Uber callback:'.bold+config.uberCallbackUri);
console.log('Uber secret: '.bold+config.uberSecret);
console.log('Uber client ID:'.bold+config.uberClientId);
console.log("Google API key: ".bold+config.googleAPIKey);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, config.public)));
app.use(logger({path: config.logging.file}));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
app.use(session({ secret: 'anything' }));
//Configure passport middleware
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(id, done) {
console.log("Getting user: "+id+" from DB for session");
User.findById(id, function(err, user) {
if(err) console.log("Could not find user with id: "+id);
done(err, user);
});
});
passport.use(new uberStrategy({
clientID: config.uberClientId,
clientSecret: config.uberSecret,
callbackURL: config.uberCallbackUri,
scope: 'request profile'
},
function(accessToken, refreshToken, profile, done) {
console.log("Access Token: "+accessToken);
console.log("Refresh Token: "+refreshToken);
console.log("Profile: "+util.inspect(profile));
//Find an existing user, and if found update the access token
User.findOneAndUpdate({ 'email': profile.email }, {accessToken:accessToken}, {new:true}, function (err, user) {
if(!user){
//if user is not found:
var user = new User({
uber_id: profile.id,
accessToken: accessToken,
refreshToken: refreshToken,
first_name:profile.first_name,
last_name:profile.last_name,
promo_code:profile.promo_code,
uber_id:profile.uuid,
provider:profile.provider,
email:profile.email
});
user.save(function(err,user){
console.log('Created new user: '+user);
return done(err, user._id);
});
}
else if(user){
console.log('Existing user found. Updated access token:'+user);
return done(err, user._id);
}
else{
console.log('Error occurred:'+err);
return done(err,undefined);
}
});
}
));
//Configure routes
require('./routes')(app);
console.log("ubervoice: ready to accept requests".green);
});