Skip to content

Commit c64e446

Browse files
leojpoddynamiccast
authored andcommitted
Feature - Add new response for Unauthorized (401) responses (#54)
* Feature - Add new response for Unautorized (401) status * fix typo
1 parent a5d0c26 commit c64e446

File tree

5 files changed

+7329
-0
lines changed

5 files changed

+7329
-0
lines changed

lib/api/responses/unauthorized.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* 401 (Unauthorized) Handler
3+
*
4+
* Usage:
5+
* return res.unauthorized();
6+
* return res.unauthorized(err);
7+
* return res.unauthorized(err, 'some/specific/unauthorized/view');
8+
*
9+
* e.g.:
10+
* ```
11+
* return res.unauthorized('Access denied.');
12+
* ```
13+
*/
14+
15+
module.exports = function unauthorized (data, options) {
16+
17+
// Get access to `req`, `res`, & `sails`
18+
var req = this.req;
19+
var res = this.res;
20+
var sails = req._sails;
21+
22+
// Set status code
23+
res.status(401);
24+
sails.log.debug('we are in the unauthorized section!');
25+
26+
// Log error to console
27+
if (data !== undefined) {
28+
sails.log.verbose('Sending 401 ("Unauthorized") response: \n',data);
29+
}
30+
else sails.log.verbose('Sending 401 ("Unauthorized") response');
31+
32+
return res.json({
33+
'errors': [
34+
{
35+
status: "401",
36+
title: 'Unauthorized',
37+
detail: data
38+
}
39+
]
40+
});
41+
42+
};

lib/hook.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var responseOk = require('./api/responses/ok');
1919
var responseCreated = require('./api/responses/created');
2020
var responseNotFound = require('./api/responses/notFound');
2121
var responseBadRequest = require('./api/responses/badRequest');
22+
var responseUnauthorized = require('./api/responses/unauthorized');
2223
var responseForbidden = require('./api/responses/forbidden');
2324
var responseServerError = require('./api/responses/serverError');
2425
var responseNegotiate = require('./api/responses/negotiate');
@@ -116,6 +117,7 @@ module.exports = function(sails) {
116117
sails.hooks.responses.middleware.created = responseCreated;
117118
sails.hooks.responses.middleware.notFound = responseNotFound;
118119
sails.hooks.responses.middleware.badRequest = responseBadRequest;
120+
sails.hooks.responses.middleware.unauthorized = responseUnauthorized;
119121
sails.hooks.responses.middleware.forbidden = responseForbidden;
120122
sails.hooks.responses.middleware.serverError = responseServerError;
121123
sails.hooks.responses.middleware.negotiate = responseNegotiate;

tests/dummy/api/controllers/CategoryController.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ module.exports = {
2424
return res.badRequest("Something is rotten in the state of denmark");
2525
}
2626

27+
if (req.allParams()['unauthorized'] === "true") {
28+
sails.log.debug('hello this is not autorized');
29+
return res.unauthorized("You don't wanna do that");
30+
}
31+
2732
if (req.allParams()['forbidden'] === "true") {
2833
return res.forbidden("You don't wanna do that");
2934
}

0 commit comments

Comments
 (0)