-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.js
More file actions
74 lines (68 loc) · 2.46 KB
/
app.js
File metadata and controls
74 lines (68 loc) · 2.46 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
var express = require('express'),
i18n = require("i18n"),
everyauth = require('everyauth'),
util = require('util'),
persistency = require('./persistency'),
config = require('./config'),
route = require('./route'),
MongoStore = require('connect-mongo'),
sessionStore = new MongoStore(config.mongo),
realtime = require('./realtime');
everyauth.google
.appId(config.app.google_client_id)
.appSecret(config.app.google_client_secret)
.scope('https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email')
.moduleTimeout(-1)
.findOrCreateUser( function (session, accessToken, accessTokenExtra, googleUserMetadata) {
promise = new this.Promise();
persistency.getAcceptedUserCount(function(err, count) {
if (count == 0) {
// accept first person to login so he can handle user moderation from then on
console.log('Autoaccepting first logged in user');
googleUserMetadata.acceptedBy = googleUserMetadata.id;
}
persistency.saveUser(googleUserMetadata, function(err, savedUser, isFirstTimeUser) {
if (err) promise.fail(err);
else {
promise.fulfill(savedUser);
if (isFirstTimeUser && count > 0) {
realtime.pushSystemMessage('FFC125', savedUser.name + ' (' + savedUser.email + ') is requesting permission to join the group chat. Use the whitelist page to grant of revoke permission.')
}
}
});
});
return promise;
})
.redirectPath('/');
i18n.configure({
locales: config.app.supported_languages
});
i18n.setLocale(config.app.language);
var app = express.createServer();
app.configure(function() {
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
store: sessionStore,
secret: config.app.google_client_secret,
key: 'express.sid'
}));
app.use(everyauth.middleware());
app.use(app.router);
app.set('view engine', 'jade');
app.set('view options', {layout: false});
app.use('/public', express.static(__dirname + '/public'));
app.use(express.favicon(__dirname + '/public/servustalk_favicon.png'));
app.use(express.errorHandler({ showStack: true, dumpExceptions: true }));
app.use(i18n.init);
app.helpers({
__i: i18n.__,
__n: i18n.__n
});
});
everyauth.helpExpress(app);
realtime.init(app, sessionStore);
persistency.init();
route.addRoutes(app);
route.setRealtimeEngine(realtime);
app.listen(config.server.port, config.server.ip);