Repurpose newObjectId as more general id generating function. Set username to random string if missing

This commit is contained in:
steven-supersolid
2016-02-10 17:41:04 +00:00
parent 244febf4a9
commit 38b8b6e2e0

View File

@@ -56,7 +56,7 @@ function RestWrite(config, auth, className, query, data, originalData) {
this.data.updatedAt = this.updatedAt; this.data.updatedAt = this.updatedAt;
if (!this.query) { if (!this.query) {
this.data.createdAt = this.updatedAt; this.data.createdAt = this.updatedAt;
this.data.objectId = newObjectId(); this.data.objectId = newStringId(10);
} }
} }
} }
@@ -319,8 +319,7 @@ RestWrite.prototype.transformUser = function() {
// Check for username uniqueness // Check for username uniqueness
if (!this.data.username) { if (!this.data.username) {
if (!this.query) { if (!this.query) {
// TODO: what's correct behavior here this.data.username = newStringId(25);
this.data.username = '';
} }
return; return;
} }
@@ -714,13 +713,13 @@ RestWrite.prototype.objectId = function() {
return this.data.objectId || this.query.objectId; return this.data.objectId || this.query.objectId;
}; };
// Returns a unique string that's usable as an object id. // Returns a unique string that's usable as an object or other id.
function newObjectId() { function newStringId(size) {
var chars = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' + var chars = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz' + 'abcdefghijklmnopqrstuvwxyz' +
'0123456789'); '0123456789');
var objectId = ''; var objectId = '';
var bytes = crypto.randomBytes(10); var bytes = crypto.randomBytes(size);
for (var i = 0; i < bytes.length; ++i) { for (var i = 0; i < bytes.length; ++i) {
// Note: there is a slight modulo bias, because chars length // Note: there is a slight modulo bias, because chars length
// of 62 doesn't divide the number of all bytes (256) evenly. // of 62 doesn't divide the number of all bytes (256) evenly.