Skip to content

Commit

Permalink
Merge 78f0465 into 6d23c2e
Browse files Browse the repository at this point in the history
  • Loading branch information
virkt25 committed Aug 8, 2018
2 parents 6d23c2e + 78f0465 commit ba3bbc9
Show file tree
Hide file tree
Showing 33 changed files with 350 additions and 203 deletions.
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package-lock=false
9 changes: 6 additions & 3 deletions common/models/acl.js
Original file line number Diff line number Diff line change
Expand Up @@ -600,19 +600,22 @@ module.exports = function(ACL) {
break;
case ACL.USER:
this.userModel.findOne(
{where: {or: [{username: id}, {email: id}, {id: id}]}}, cb);
{where: {or: [{username: id}, {email: id}, {id: id}]}}, cb
);
break;
case ACL.APP:
this.applicationModel.findOne(
{where: {or: [{name: id}, {email: id}, {id: id}]}}, cb);
{where: {or: [{name: id}, {email: id}, {id: id}]}}, cb
);
break;
default:
// try resolving a user model with a name matching the principalType
var userModel = this.registry.findModel(type);
if (userModel) {
userModel.findOne(
{where: {or: [{username: id}, {email: id}, {id: id}]}},
cb);
cb
);
} else {
process.nextTick(function() {
var err = new Error(g.f('Invalid principal type: %s', type));
Expand Down
12 changes: 8 additions & 4 deletions common/models/change.js
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,8 @@ module.exports = function(Change) {
async.each(
changes,
function(c, next) { c.rectify(next); },
cb);
cb
);
});
};

Expand Down Expand Up @@ -691,8 +692,10 @@ module.exports = function(Change) {
conflict.SourceModel.updateLastChange(
conflict.modelId,
{prev: targetChange.rev},
cb);
});
cb
);
}
);
};

/**
Expand Down Expand Up @@ -724,7 +727,8 @@ module.exports = function(Change) {
}
var inst = new conflict.SourceModel(
target.toObject(),
{persisted: true});
{persisted: true}
);
inst.save(done);
});

Expand Down
3 changes: 2 additions & 1 deletion common/models/key-value-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,8 @@ function throwNotAttached(modelName, methodName) {
'The %s method has not been setup. ' +
'The {{KeyValueModel}} has not been correctly attached ' +
'to a {{DataSource}}!',
modelName, methodName, methodName));
modelName, methodName, methodName
));
}

function convertNullToNotFoundError(ctx, cb) {
Expand Down
3 changes: 2 additions & 1 deletion common/models/scope.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ module.exports = function(Scope) {
if (callback) callback(err);
} else {
aclModel.checkPermission(
aclModel.SCOPE, scope.id, model, property, accessType, callback);
aclModel.SCOPE, scope.id, model, property, accessType, callback
);
}
});
};
Expand Down
11 changes: 7 additions & 4 deletions common/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -744,8 +744,9 @@ module.exports = function(User) {
if (!confirmMethod) {
throw new Error(
'Cannot build user verification URL, ' +
'the default confirm method is not public. ' +
'Please provide the URL in verifyOptions.verifyHref.');
'the default confirm method is not public. ' +
'Please provide the URL in verifyOptions.verifyHref.'
);
}

const urlPath = joinUrlPath(
Expand Down Expand Up @@ -1315,7 +1316,8 @@ module.exports = function(User) {
// This is a programmer's error, use the default status code 500
return next(new Error(
'Invalid use of "options.setPassword". Only "password" can be ' +
'changed when using this option.'));
'changed when using this option.'
));
}

return next();
Expand All @@ -1327,7 +1329,8 @@ module.exports = function(User) {

const err = new Error(
'Changing user password via patch/replace API is not allowed. ' +
'Use changePassword() or setPassword() instead.');
'Use changePassword() or setPassword() instead.'
);
err.statusCode = 401;
err.code = 'PASSWORD_CHANGE_NOT_ALLOWED';
next(err);
Expand Down
21 changes: 14 additions & 7 deletions lib/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,8 @@ app.enableAuth = function(options) {
var Model = app.registry.findModel(m);
if (!Model) {
throw new Error(
g.f('Authentication requires model %s to be defined.', m));
g.f('Authentication requires model %s to be defined.', m)
);
}

if (Model.dataSource || Model.app) return;
Expand Down Expand Up @@ -483,15 +484,17 @@ app._verifyAuthModelRelations = function() {
'custom User subclass, but does not fix AccessToken relations ' +
'to use this new model.\n' +
'Learn more at http://ibm.biz/setup-loopback-auth',
Model.modelName, userName, userName);
Model.modelName, userName, userName
);
return;
}

console.warn(
'The model %j does not have "belongsTo User-like model" relation ' +
'configured.\n' +
'Learn more at http://ibm.biz/setup-loopback-auth',
Model.modelName);
Model.modelName
);
}

function verifyUserRelations(Model) {
Expand All @@ -504,7 +507,8 @@ app._verifyAuthModelRelations = function() {
'The app configuration follows the multiple user models setup ' +
'as described in http://ibm.biz/setup-loopback-auth',
'The built-in role resolver $owner is not currently compatible ' +
'with this configuration and should not be used in production.');
'with this configuration and should not be used in production.'
);
}
return;
}
Expand All @@ -520,21 +524,24 @@ app._verifyAuthModelRelations = function() {
'AccessToken subclass, but does not fix User relations to use this ' +
'new model.\n' +
'Learn more at http://ibm.biz/setup-loopback-auth',
Model.modelName, accessTokenName, accessTokenName);
Model.modelName, accessTokenName, accessTokenName
);
return;
}

console.warn(
'The model %j does not have "hasMany AccessToken-like models" relation ' +
'configured.\n' +
'Learn more at http://ibm.biz/setup-loopback-auth',
Model.modelName);
Model.modelName
);
}
};

app.boot = function(options) {
throw new Error(
g.f('{{`app.boot`}} was removed, use the new module {{loopback-boot}} instead'));
g.f('{{`app.boot`}} was removed, use the new module {{loopback-boot}} instead')
);
};

function dataSourcesFromConfig(name, config, connectorRegistry, registry) {
Expand Down
33 changes: 22 additions & 11 deletions lib/builtin-models.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,58 @@ module.exports = function(registry) {

registry.KeyValueModel = createModel(
require('../common/models/key-value-model.json'),
require('../common/models/key-value-model.js'));
require('../common/models/key-value-model.js')
);

registry.Email = createModel(
require('../common/models/email.json'),
require('../common/models/email.js'));
require('../common/models/email.js')
);

registry.Application = createModel(
require('../common/models/application.json'),
require('../common/models/application.js'));
require('../common/models/application.js')
);

registry.AccessToken = createModel(
require('../common/models/access-token.json'),
require('../common/models/access-token.js'));
require('../common/models/access-token.js')
);

registry.User = createModel(
require('../common/models/user.json'),
require('../common/models/user.js'));
require('../common/models/user.js')
);

registry.RoleMapping = createModel(
require('../common/models/role-mapping.json'),
require('../common/models/role-mapping.js'));
require('../common/models/role-mapping.js')
);

registry.Role = createModel(
require('../common/models/role.json'),
require('../common/models/role.js'));
require('../common/models/role.js')
);

registry.ACL = createModel(
require('../common/models/acl.json'),
require('../common/models/acl.js'));
require('../common/models/acl.js')
);

registry.Scope = createModel(
require('../common/models/scope.json'),
require('../common/models/scope.js'));
require('../common/models/scope.js')
);

registry.Change = createModel(
require('../common/models/change.json'),
require('../common/models/change.js'));
require('../common/models/change.js')
);

registry.Checkpoint = createModel(
require('../common/models/checkpoint.json'),
require('../common/models/checkpoint.js'));
require('../common/models/checkpoint.js')
);

function createModel(definitionJson, customizeFn) {
// Clone the JSON definition to allow applications
Expand Down
9 changes: 6 additions & 3 deletions lib/current-context.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,23 @@ module.exports = function(loopback) {
throw new Error(g.f(
'%s was removed in version 3.0. See %s for more details.',
'loopback.getCurrentContext()',
'http://loopback.io/doc/en/lb2/Using-current-context.html'));
'http://loopback.io/doc/en/lb2/Using-current-context.html'
));
};

loopback.runInContext = function(fn) {
throw new Error(g.f(
'%s was removed in version 3.0. See %s for more details.',
'loopback.runInContext()',
'http://loopback.io/doc/en/lb2/Using-current-context.html'));
'http://loopback.io/doc/en/lb2/Using-current-context.html'
));
};

loopback.createContext = function(scopeName) {
throw new Error(g.f(
'%s was removed in version 3.0. See %s for more details.',
'loopback.createContext()',
'http://loopback.io/doc/en/lb2/Using-current-context.html'));
'http://loopback.io/doc/en/lb2/Using-current-context.html'
));
};
};
6 changes: 4 additions & 2 deletions lib/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,11 +251,13 @@ module.exports = function(registry) {
if ('injectOptionsFromRemoteContext' in options) {
console.warn(g.f(
'%s is using model setting %s which is no longer available.',
typeName, 'injectOptionsFromRemoteContext'));
typeName, 'injectOptionsFromRemoteContext'
));
console.warn(g.f(
'Please rework your app to use the offical solution for injecting ' +
'"options" argument from request context,\nsee %s',
'http://loopback.io/doc/en/lb3/Using-current-context.html'));
'http://loopback.io/doc/en/lb3/Using-current-context.html'
));
}

// resolve relation functions
Expand Down
27 changes: 18 additions & 9 deletions lib/persisted-model.js
Original file line number Diff line number Diff line change
Expand Up @@ -1231,7 +1231,8 @@ module.exports = function(registry) {
function(filter, pagingCallback) {
sourceModel.changes(since.source, filter, pagingCallback);
},
debug.enabled ? log : cb);
debug.enabled ? log : cb
);

function log(err, result) {
if (err) return cb(err);
Expand All @@ -1248,7 +1249,8 @@ module.exports = function(registry) {
function(smallArray, chunkCallback) {
return targetModel.diff(since.target, smallArray, chunkCallback);
},
debug.enabled ? log : cb);
debug.enabled ? log : cb
);

function log(err, result) {
if (err) return cb(err);
Expand Down Expand Up @@ -1276,7 +1278,8 @@ module.exports = function(registry) {
function(smallArray, chunkCallback) {
return sourceModel.createUpdates(smallArray, chunkCallback);
},
cb);
cb
);
} else {
// nothing to replicate
done();
Expand Down Expand Up @@ -1308,7 +1311,8 @@ module.exports = function(registry) {
return cb();
}
cb(err);
});
}
);
}

function checkpoints() {
Expand Down Expand Up @@ -1526,14 +1530,16 @@ module.exports = function(registry) {
return cb(new Error(
g.f('Cannot apply bulk updates, ' +
'the connector does not correctly report ' +
'the number of updated records.')));
'the number of updated records.')
));

default:
debug('%s.updateAll modified unexpected number of instances: %j',
Model.modelName, count);
return cb(new Error(
g.f('Bulk update failed, the connector has modified unexpected ' +
'number of records: %s', JSON.stringify(count))));
'number of records: %s', JSON.stringify(count))
));
}
});
}
Expand Down Expand Up @@ -1608,14 +1614,16 @@ module.exports = function(registry) {
return cb(new Error(
g.f('Cannot apply bulk updates, ' +
'the connector does not correctly report ' +
'the number of deleted records.')));
'the number of deleted records.')
));

default:
debug('%s.deleteAll modified unexpected number of instances: %j',
Model.modelName, count);
return cb(new Error(
g.f('Bulk update failed, the connector has deleted unexpected ' +
'number of records: %s', JSON.stringify(count))));
'number of records: %s', JSON.stringify(count))
));
}
});
}
Expand Down Expand Up @@ -1770,7 +1778,8 @@ module.exports = function(registry) {
const additionalChangeModelProperties =
this.settings.additionalChangeModelProperties || {};

this.Change = BaseChangeModel.extend(this.modelName + '-change',
this.Change = BaseChangeModel.extend(
this.modelName + '-change',
additionalChangeModelProperties,
{trackModel: this}
);
Expand Down

0 comments on commit ba3bbc9

Please sign in to comment.