Skip to content

Commit 6c6021a

Browse files
committed
Merge pull request #378 from ParsePlatform/nlutsenko.middleware.master
Add enforceMasterKeyAccess middleware.
2 parents 04f2a57 + f53cb60 commit 6c6021a

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

spec/ParseFile.spec.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ describe('Parse.File testing', () => {
101101
}, (error, response, body) => {
102102
expect(error).toBe(null);
103103
var del_b = JSON.parse(body);
104-
expect(response.statusCode).toEqual(400);
105-
expect(del_b.code).toEqual(119);
104+
expect(response.statusCode).toEqual(403);
105+
expect(del_b.error).toMatch(/unauthorized/);
106106
// incorrect X-Parse-Master-Key header
107107
request.del({
108108
headers: {
@@ -114,8 +114,8 @@ describe('Parse.File testing', () => {
114114
}, (error, response, body) => {
115115
expect(error).toBe(null);
116116
var del_b2 = JSON.parse(body);
117-
expect(response.statusCode).toEqual(400);
118-
expect(del_b2.code).toEqual(119);
117+
expect(response.statusCode).toEqual(403);
118+
expect(del_b2.error).toMatch(/unauthorized/);
119119
done();
120120
});
121121
});

src/Controllers/FilesController.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,6 @@ export class FilesController {
7676

7777
deleteHandler() {
7878
return (req, res, next) => {
79-
// enforce use of master key for file deletions
80-
if(!req.auth.isMaster){
81-
next(new Parse.Error(Parse.Error.OPERATION_FORBIDDEN,
82-
'Master key required for file deletion.'));
83-
return;
84-
}
85-
8679
this._filesAdapter.deleteFile(req.config, req.params.filename).then(() => {
8780
res.status(200);
8881
// TODO: return useful JSON here?
@@ -142,6 +135,7 @@ export class FilesController {
142135
router.delete('/files/:filename',
143136
Middlewares.allowCrossDomain,
144137
Middlewares.handleParseHeaders,
138+
Middlewares.enforceMasterKeyAccess,
145139
this.deleteHandler()
146140
);
147141

src/middlewares.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,24 @@ var handleParseErrors = function(err, req, res, next) {
178178
}
179179
};
180180

181+
function enforceMasterKeyAccess(req, res, next) {
182+
if (!req.auth.isMaster) {
183+
res.status(403);
184+
res.end('{"error":"unauthorized: master key is required"}');
185+
return;
186+
}
187+
next();
188+
}
189+
181190
function invalidRequest(req, res) {
182191
res.status(403);
183192
res.end('{"error":"unauthorized"}');
184193
}
185194

186-
187195
module.exports = {
188196
allowCrossDomain: allowCrossDomain,
189197
allowMethodOverride: allowMethodOverride,
190198
handleParseErrors: handleParseErrors,
191-
handleParseHeaders: handleParseHeaders
199+
handleParseHeaders: handleParseHeaders,
200+
enforceMasterKeyAccess: enforceMasterKeyAccess
192201
};

0 commit comments

Comments
 (0)