Skip to content

Commit 505d7af

Browse files
committed
Merge pull request #201 from jysperm/disable-current-user
Disable current user
2 parents 687b2f0 + 53ab65d commit 505d7af

File tree

12 files changed

+198
-81
lines changed

12 files changed

+198
-81
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"gulp-sourcemaps": "^1.6.0",
3939
"gulp-tar": "^1.3.2",
4040
"gulp-uglify": "^1.0.2",
41-
"mocha": "1.9.0",
41+
"mocha": "2.4.5",
4242
"vinyl-source-stream": "^1.1.0"
4343
},
4444
"license": "MIT",

src/browserify-wrapper/ajax-browser.js

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,6 @@ const ajax = (method, url, data, success, error) => {
3232
const appKey = AV.applicationKey;
3333
const masterKey = AV.masterKey;
3434

35-
// 清理原来多余的数据(如果不清理,会污染数据表)
36-
if (data) {
37-
delete data._ApplicationId;
38-
delete data._ApplicationKey;
39-
delete data._ApplicationProduction;
40-
delete data._MasterKey;
41-
delete data._ClientVersion;
42-
delete data._InstallationId;
43-
}
44-
4535
let handled = false;
4636
const xhr = new global.XMLHttpRequest();
4737
xhr.onreadystatechange = () => {
@@ -82,19 +72,39 @@ const ajax = (method, url, data, success, error) => {
8272
}
8373
}
8474

85-
xhr.open(method, url, true);
86-
xhr.setRequestHeader('X-LC-Id', appId);
75+
let headers = {
76+
'X-LC-Id': appId,
77+
'X-LC-UA': 'LC-Web-' + AV.version,
78+
'Content-Type': 'application/json;charset=UTF-8'
79+
};
80+
81+
// 清理原来多余的数据(如果不清理,会污染数据表)
82+
if (data) {
83+
delete data._ApplicationId;
84+
delete data._ApplicationKey;
85+
delete data._ApplicationProduction;
86+
delete data._MasterKey;
87+
delete data._ClientVersion;
88+
delete data._InstallationId;
8789

88-
let signature;
89-
if (masterKey) {
90-
signature = sign(masterKey, true);
90+
if (data._SessionToken) {
91+
headers['X-LC-Session'] = data._SessionToken;
92+
delete data._SessionToken;
93+
}
94+
}
95+
96+
if (masterKey && AV._useMasterKey) {
97+
headers['X-LC-Sign'] = sign(masterKey, true);
9198
} else {
92-
signature = sign(appKey);
99+
headers['X-LC-Sign'] = sign(appKey);
100+
}
101+
102+
xhr.open(method, url, true);
103+
104+
for (let name in headers) {
105+
xhr.setRequestHeader(name, headers[name]);
93106
}
94107

95-
xhr.setRequestHeader('X-LC-Sign', signature);
96-
xhr.setRequestHeader('X-LC-UA', 'LC-Web-' + AV.version);
97-
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
98108
xhr.send(JSON.stringify(data));
99109
return promise._thenRunCallbacks(options);
100110
};

src/cloudfunction.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ module.exports = function(AV) {
3131
* of the function.
3232
*/
3333
run: function(name, data, options) {
34-
var request = AV._request("functions", name, null, 'POST',
35-
AV._encode(data, null, true));
34+
var request = AV._request('functions', name, null, 'POST',
35+
AV._encode(data, null, true), options && options.sessionToken);
3636

3737
return request.then(function(resp) {
3838
return AV._decode(null, resp).result;

src/file.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -342,15 +342,20 @@ module.exports = function(AV) {
342342
// 用来存储转换后要上传的 base64 String
343343
this._base64 = '';
344344

345-
var currentUser;
346-
try {
347-
currentUser = AV.User.current();
348-
}
349-
catch (e) {
350-
console.warn('Get current user failed. It seems this runtime use an async storage system, please new AV.File in the callback of AV.User.currentAsync().');
345+
let owner;
346+
347+
if (data && data.owner) {
348+
owner = data.owner;
349+
} else {
350+
try {
351+
owner = AV.User.current();
352+
} catch (e) {
353+
console.warn('Get current user failed. It seems this runtime use an async storage system, please new AV.File in the callback of AV.User.currentAsync().');
354+
}
351355
}
356+
352357
this._metaData = {
353-
owner: (currentUser ? currentUser.id : 'unknown')
358+
owner: (owner ? owner.id : 'unknown')
354359
};
355360

356361
// Guess the content type from the extension if we need to.
@@ -539,7 +544,7 @@ module.exports = function(AV) {
539544
destroy: function(options){
540545
if(!this.id)
541546
return AV.Promise.error('The file id is not eixsts.')._thenRunCallbacks(options);
542-
var request = AV._request("files", null, this.id, 'DELETE');
547+
var request = AV._request("files", null, this.id, 'DELETE', options && options.sessionToken);
543548
return request._thenRunCallbacks(options);
544549
},
545550

src/object.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ module.exports = function(AV) {
111111
* @param {Object} options A Backbone-style callback object.
112112
*/
113113
AV.Object.saveAll = function(list, options) {
114-
return AV.Object._deepSaveAsync(list)._thenRunCallbacks(options);
114+
return AV.Object._deepSaveAsync(list, null, options)._thenRunCallbacks(options);
115115
};
116116

117117
// Attach all inheritable methods to the AV.Object prototype.
@@ -791,8 +791,8 @@ module.exports = function(AV) {
791791
}
792792

793793
var self = this;
794-
var request = AV._request("classes", this.className, this.id, 'GET',
795-
fetchOptions);
794+
var request = AV._request('classes', this.className, this.id, 'GET',
795+
fetchOptions, options.sessionToken);
796796
return request.then(function(response) {
797797
self._finishFetch(self.parse(response), true);
798798
return self;
@@ -891,15 +891,13 @@ module.exports = function(AV) {
891891
// If there is any unsaved child, save it first.
892892
model._refreshCache();
893893

894-
895-
896894
var unsavedChildren = [];
897895
var unsavedFiles = [];
898896
AV.Object._findUnsavedChildren(model.attributes,
899897
unsavedChildren,
900898
unsavedFiles);
901899
if (unsavedChildren.length + unsavedFiles.length > 0) {
902-
return AV.Object._deepSaveAsync(this.attributes, model).then(function() {
900+
return AV.Object._deepSaveAsync(this.attributes, model, options).then(function() {
903901
return model.save(null, options);
904902
}, function(error) {
905903
return AV.Promise.error(error)._thenRunCallbacks(options, model);
@@ -929,7 +927,7 @@ module.exports = function(AV) {
929927
}
930928
//hook makeRequest in options.
931929
var makeRequest = options._makeRequest || AV._request;
932-
var request = makeRequest(route, className, model.id, method, json);
930+
var request = makeRequest(route, className, model.id, method, json, options.sessionToken);
933931

934932
request = request.then(function(resp) {
935933
var serverAttrs = model.parse(resp);
@@ -979,7 +977,7 @@ module.exports = function(AV) {
979977
}
980978

981979
var request =
982-
AV._request("classes", this.className, this.id, 'DELETE');
980+
AV._request('classes', this.className, this.id, 'DELETE', null, options.sessionToken);
983981
return request.then(function() {
984982
if (options.wait) {
985983
triggerDestroy();
@@ -1229,6 +1227,7 @@ module.exports = function(AV) {
12291227
* completes.
12301228
*/
12311229
AV.Object.destroyAll = function(objects, options){
1230+
options = options || {}
12321231
if(objects == null || objects.length == 0){
12331232
return AV.Promise.as()._thenRunCallbacks(options);
12341233
}
@@ -1248,7 +1247,7 @@ module.exports = function(AV) {
12481247
}
12491248
});
12501249
var request =
1251-
AV._request("classes", className, id, 'DELETE');
1250+
AV._request('classes', className, id, 'DELETE', null, options.sessionToken);
12521251
return request._thenRunCallbacks(options);
12531252
};
12541253

@@ -1415,7 +1414,7 @@ module.exports = function(AV) {
14151414
return canBeSerializedAsValue;
14161415
};
14171416

1418-
AV.Object._deepSaveAsync = function(object, model) {
1417+
AV.Object._deepSaveAsync = function(object, model, options) {
14191418
var unsavedChildren = [];
14201419
var unsavedFiles = [];
14211420
AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);
@@ -1496,7 +1495,7 @@ module.exports = function(AV) {
14961495
};
14971496
})
14981497

1499-
}).then(function(response) {
1498+
}, options && options.sessionToken).then(function(response) {
15001499
var error;
15011500
AV._arrayEach(batch, function(object, i) {
15021501
if (response[i].success) {

src/query.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ module.exports = function(AV) {
155155
options = pvalues;
156156
}
157157

158-
var request = AV._request("cloudQuery", null, null, 'GET', params);
158+
var request = AV._request('cloudQuery', null, null, 'GET', params, options && options.sessionToken);
159159
return request.then(function(response) {
160160
//query to process results.
161161
var query = new AV.Query(response.className);
@@ -251,9 +251,9 @@ module.exports = function(AV) {
251251
}
252252
return obj;
253253
},
254-
_createRequest: function(params){
255-
return AV._request("classes", this.className, null, "GET",
256-
params || this.toJSON());
254+
_createRequest: function(params, options){
255+
return AV._request('classes', this.className, null, "GET",
256+
params || this.toJSON(), options && options.sessionToken);
257257
},
258258

259259
/**
@@ -268,7 +268,7 @@ module.exports = function(AV) {
268268
find: function(options) {
269269
var self = this;
270270

271-
var request = this._createRequest();
271+
var request = this._createRequest(null, options);
272272

273273
return request.then(function(response) {
274274
return _.map(response.results, function(json) {
@@ -306,7 +306,7 @@ module.exports = function(AV) {
306306
var params = this.toJSON();
307307
params.limit = 0;
308308
params.count = 1;
309-
var request = this._createRequest(params);
309+
var request = this._createRequest(params, options);
310310

311311
return request.then(function(response) {
312312
return response.count;
@@ -328,7 +328,7 @@ module.exports = function(AV) {
328328

329329
var params = this.toJSON();
330330
params.limit = 1;
331-
var request = this._createRequest(params);
331+
var request = this._createRequest(params, options);
332332

333333
return request.then(function(response) {
334334
return _.map(response.results, function(json) {

src/search.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ module.exports = function(AV) {
124124
_queryString: null,
125125
_highlights: null,
126126
_sortBuilder: null,
127-
_createRequest: function(params){
128-
return AV._request("search/select", null, null, "GET",
129-
params || this.toJSON());
127+
_createRequest: function(params, options){
128+
return AV._request('search/select', null, null, 'GET',
129+
params || this.toJSON(), options && options.sessionToken);
130130
},
131131

132132
/**

src/status.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ module.exports = function(AV) {
5858
destroy: function(options){
5959
if(!this.id)
6060
return AV.Promise.error('The status id is not exists.')._thenRunCallbacks(options);
61-
var request = AV._request("statuses", null, this.id, 'DELETE');
61+
var request = AV._request('statuses', null, this.id, 'DELETE', options && options.sessionToken);
6262
return request._thenRunCallbacks(options);
6363
},
6464
/**
@@ -112,7 +112,7 @@ module.exports = function(AV) {
112112
data.data = this._getDataJSON();
113113
data.inboxType = this.inboxType || 'default';
114114

115-
var request = AV._request('statuses', null, null, 'POST', data);
115+
var request = AV._request('statuses', null, null, 'POST', data, options && options.sessionToken);
116116
var self = this;
117117
return request.then(function(response){
118118
self.id = response.objectId;
@@ -169,7 +169,7 @@ module.exports = function(AV) {
169169
data.data = status._getDataJSON();
170170
data.inboxType = status.inboxType || 'default';
171171

172-
var request = AV._request('statuses', null, null, 'POST', data);
172+
var request = AV._request('statuses', null, null, 'POST', data, options && options.sessionToken);
173173
return request.then(function(response){
174174
status.id = response.objectId;
175175
status.createdAt = AV._parseDate(response.createdAt);
@@ -222,7 +222,7 @@ module.exports = function(AV) {
222222
data.inboxType = 'private';
223223
status.inboxType = 'private';
224224

225-
var request = AV._request('statuses', null, null, 'POST', data);
225+
var request = AV._request('statuses', null, null, 'POST', data, options && options.sessionToken);
226226
return request.then(function(response){
227227
status.id = response.objectId;
228228
status.createdAt = AV._parseDate(response.createdAt);
@@ -254,7 +254,7 @@ module.exports = function(AV) {
254254
var params = {};
255255
params.inboxType = AV._encode(inboxType);
256256
params.owner = AV._encode(owner);
257-
var request = AV._request('subscribe/statuses/count', null, null, 'GET', params);
257+
var request = AV._request('subscribe/statuses/count', null, null, 'GET', params, options && options.sessionToken);
258258
return request._thenRunCallbacks(options);
259259
};
260260

@@ -293,9 +293,9 @@ module.exports = function(AV) {
293293
_newObject: function(){
294294
return new AV.Status();
295295
},
296-
_createRequest: function(params){
297-
return AV._request("subscribe/statuses", null, null, "GET",
298-
params || this.toJSON());
296+
_createRequest: function(params, options){
297+
return AV._request('subscribe/statuses', null, null, 'GET',
298+
params || this.toJSON(), options && options.sessionToken);
299299
},
300300

301301

0 commit comments

Comments
 (0)