Skip to content

Commit 8cac7f5

Browse files
committed
Add enforceMasterKeyAccess middleware.
1 parent e6ef0ae commit 8cac7f5

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-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).toEqual('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).toEqual('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: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,22 @@ var handleParseErrors = function(err, req, res, next) {
178178
}
179179
};
180180

181+
function enforceMasterKeyAccess(req, res, next) {
182+
if (!req.auth.isMaster) {
183+
return invalidRequest(req, res);
184+
}
185+
next();
186+
}
187+
181188
function invalidRequest(req, res) {
182189
res.status(403);
183190
res.end('{"error":"unauthorized"}');
184191
}
185192

186-
187193
module.exports = {
188194
allowCrossDomain: allowCrossDomain,
189195
allowMethodOverride: allowMethodOverride,
190196
handleParseErrors: handleParseErrors,
191-
handleParseHeaders: handleParseHeaders
197+
handleParseHeaders: handleParseHeaders,
198+
enforceMasterKeyAccess: enforceMasterKeyAccess
192199
};

0 commit comments

Comments
 (0)