Skip to content

Commit 3840d51

Browse files
committed
settle authentication
1 parent 0b7db56 commit 3840d51

File tree

5 files changed

+41
-48
lines changed

5 files changed

+41
-48
lines changed

Diff for: app/controllers/articleController.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,23 @@ var
66
_ = require('lodash'),
77
Q = require('q'),
88
Article = require('mongoose').model('Article'),
9-
BaseController = require('./baseController')
9+
BaseController = require('./base.server.controller')
1010
;
1111

1212
var ArticleController = BaseController.extend({
1313
ModelClass: Article,
1414
path: '/api/articles',
1515
fields: ['title', 'content', 'user', 'created'],
1616
qFields: ['title'],
17-
defaultOptions: {
17+
defaultOptions: _.defaults({
1818
queryPipe: function (query, req, res, callback) {
1919
return query.populate('user', 'displayName', callback);
2020
}
21-
},
21+
}, BaseController.prototype.defaultOptions),
2222
prepareData: function (req, res, callback) {
2323
callback(null, {user: req.user});
2424
}
2525
});
26+
2627
module.exports = ArticleController;
2728

Diff for: app/controllers/baseController.js renamed to app/controllers/base.server.controller.js

+15-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,23 @@ var BaseController = Restifizer.Controller.extend({
1414
},
1515
defaultOptions: {
1616
enabled: true,
17-
auth: 'bearer'
17+
auth: ['bearer', 'session']
1818
},
1919
getAuth: function (options) {
20-
return options.auth ? passport.authenticate(options.auth, { session: false }) : this._emptyPre;
20+
var auths = [
21+
passport.authenticate(options.auth, { session: false }),
22+
function (req, res, next) {
23+
if (!req.isAuthenticated()) {
24+
//options
25+
return res.status(401).send({
26+
message: 'User is not logged in'
27+
});
28+
}
29+
30+
next();
31+
}
32+
];
33+
return options.auth ? auths : this._emptyPre;
2134
}
2235
});
2336

Diff for: app/controllers/userController.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var
66
_ = require('lodash'),
77
Q = require('q'),
88
User = require('mongoose').model('User'),
9-
BaseController = require('./baseController'),
9+
BaseController = require('./base.server.controller'),
1010
HTTP_STATUSES = require('http-statuses')
1111
;
1212

Diff for: config/authDelegate.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ AuthDelegate.prototype.findUserByToken = function(context, callback) {
8282
.ninvoke(AccessToken, 'findOne', { token: context.accessToken})
8383
.then(function (token) {
8484
// if it's expired
85-
if (token && Math.round((Date.now() - token.createdAt) / 1000) > _this.tokenLife) {
85+
if (token && Math.round((Date.now() - token.created) / 1000) > _this.tokenLife) {
8686
return Q
8787
.ninvoke(AccessToken, 'remove', { token: token })
8888
.then(function () {

Diff for: config/express.js

+20-41
Original file line numberDiff line numberDiff line change
@@ -95,40 +95,6 @@ module.exports = function(db) {
9595
app.locals.cache = 'memory';
9696
}
9797

98-
99-
//app.use(express.logger({format: function (tokens, req, res) {
100-
// var
101-
// status = res.statusCode,
102-
// len = parseInt(res.getHeader('Content-Length'), 10),
103-
// color = 32;
104-
//
105-
// if (status >= 500) color = 31;
106-
// else if (status >= 400) color = 33;
107-
// else if (status >= 300) color = 36;
108-
//
109-
// len = isNaN(len) ? '' : ' - ' + bytes(len);
110-
//
111-
// var str = '\x1b[90m' + req._startTime.toISOString().replace(/T/, ' ').replace(/\..+/, '') +
112-
// ' ' + req.method +
113-
// ' ' + req.originalUrl + ' ' +
114-
// '\x1b[' + color + 'm' + res.statusCode +
115-
// ' \x1b[90m' +
116-
// (new Date() - req._startTime) +
117-
// 'ms' + len +
118-
// '\x1b[0m';
119-
//
120-
// if (res.statusCode !== 404 && // NOT_FOUND
121-
// log.levels[log.transports.console.level] <= log.levels.debug) {
122-
//
123-
// str += '\x1b[' + color + 'm\n\treq->\x1b[90m' + (req.body ? ('\n' + JSON.stringify(req.body, null, 2)) : '') +
124-
// '\x1b[' + color + 'm\n\tres<-\x1b[90m' + (res.restfulResult ? ('\n' + JSON.stringify(res.restfulResult, null, 2)) : '') + '\x1b[0m';
125-
// }
126-
// return str;
127-
//}}));
128-
//
129-
//
130-
131-
13298
// Request body parsing middleware should be above methodOverride
13399
app.use(bodyParser.urlencoded({
134100
extended: true
@@ -198,17 +164,30 @@ module.exports = function(db) {
198164
console.error(err.stack);
199165

200166
// Error page
201-
res.status(500).render('500', {
202-
error: err.stack
203-
});
167+
res.status(err.status || 500);
168+
if (req.accepts('html')) {
169+
res.render('500', {
170+
error: err.stack
171+
});
172+
} else {
173+
res.send({ error: err.message })
174+
}
204175
});
205176

206177
// Assume 404 since no middleware responded
207178
app.use(function(req, res) {
208-
res.status(404).render('404', {
209-
url: req.originalUrl,
210-
error: 'Not Found'
211-
});
179+
res.status(404);
180+
if (req.accepts('html')) {
181+
res.render('404', {
182+
url: req.originalUrl,
183+
error: 'Not Found'
184+
});
185+
} else {
186+
res.send({
187+
url: req.originalUrl,
188+
error: 'Not Found'
189+
})
190+
}
212191
});
213192

214193
return app;

0 commit comments

Comments
 (0)