2
2
// that writes to the database.
3
3
// This could be either a "create" or an "update".
4
4
5
- var crypto = require ( 'crypto' ) ;
6
5
var deepcopy = require ( 'deepcopy' ) ;
7
- var rack = require ( 'hat' ) . rack ( ) ;
8
6
9
7
var Auth = require ( './Auth' ) ;
10
8
var cache = require ( './cache' ) ;
11
9
var Config = require ( './Config' ) ;
10
+ var cryptoUtils = require ( './cryptoUtils' ) ;
12
11
var passwordCrypto = require ( './password' ) ;
13
12
var facebook = require ( './facebook' ) ;
14
13
var Parse = require ( 'parse/node' ) ;
@@ -56,7 +55,7 @@ function RestWrite(config, auth, className, query, data, originalData) {
56
55
this . data . updatedAt = this . updatedAt ;
57
56
if ( ! this . query ) {
58
57
this . data . createdAt = this . updatedAt ;
59
- this . data . objectId = newStringId ( 10 ) ;
58
+ this . data . objectId = cryptoUtils . newObjectId ( ) ;
60
59
}
61
60
}
62
61
}
@@ -252,7 +251,7 @@ RestWrite.prototype.handleFacebookAuthData = function() {
252
251
throw new Parse . Error ( Parse . Error . ACCOUNT_ALREADY_LINKED ,
253
252
'this auth is already used' ) ;
254
253
} else {
255
- this . data . username = rack ( ) ;
254
+ this . data . username = cryptoUtils . newToken ( ) ;
256
255
}
257
256
258
257
// This FB auth does not already exist, so transform it to a
@@ -273,7 +272,7 @@ RestWrite.prototype.transformUser = function() {
273
272
var promise = Promise . resolve ( ) ;
274
273
275
274
if ( ! this . query ) {
276
- var token = 'r:' + rack ( ) ;
275
+ var token = 'r:' + cryptoUtils . newToken ( ) ;
277
276
this . storage [ 'token' ] = token ;
278
277
promise = promise . then ( ( ) => {
279
278
var expiresAt = new Date ( ) ;
@@ -319,7 +318,7 @@ RestWrite.prototype.transformUser = function() {
319
318
// Check for username uniqueness
320
319
if ( ! this . data . username ) {
321
320
if ( ! this . query ) {
322
- this . data . username = newStringId ( 25 ) ;
321
+ this . data . username = cryptoUtils . randomString ( 25 ) ;
323
322
}
324
323
return ;
325
324
}
@@ -412,7 +411,7 @@ RestWrite.prototype.handleSession = function() {
412
411
}
413
412
414
413
if ( ! this . query && ! this . auth . isMaster ) {
415
- var token = 'r:' + rack ( ) ;
414
+ var token = 'r:' + cryptoUtils . newToken ( ) ;
416
415
var expiresAt = new Date ( ) ;
417
416
expiresAt . setFullYear ( expiresAt . getFullYear ( ) + 1 ) ;
418
417
var sessionData = {
@@ -713,20 +712,4 @@ RestWrite.prototype.objectId = function() {
713
712
return this . data . objectId || this . query . objectId ;
714
713
} ;
715
714
716
- // Returns a unique string that's usable as an object or other id.
717
- function newStringId ( size ) {
718
- var chars = ( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
719
- 'abcdefghijklmnopqrstuvwxyz' +
720
- '0123456789' ) ;
721
- var objectId = '' ;
722
- var bytes = crypto . randomBytes ( size ) ;
723
- for ( var i = 0 ; i < bytes . length ; ++ i ) {
724
- // Note: there is a slight modulo bias, because chars length
725
- // of 62 doesn't divide the number of all bytes (256) evenly.
726
- // It is acceptable for our purposes.
727
- objectId += chars [ bytes . readUInt8 ( i ) % chars . length ] ;
728
- }
729
- return objectId ;
730
- }
731
-
732
715
module . exports = RestWrite ;
0 commit comments