var loopback = require('loopback');
var passport = require('loopback-component-passport');
var providers = require('./providers.json');
function loadModel(jsonFile, baseModel) {
var modelDefinition = require(jsonFile);
return baseModel.extend(modelDefinition.name,
modelDefinition.properties,
{
relations: modelDefinition.relations
});
}
exports.userIdentity = loadModel('./lib/models/user-identity.json', passport.UserIdentity);
exports.userCredential = loadModel('./lib/models/user-credential.json', passport.UserCredential);
var UserModel = loadModel(loopback.User, './lib/models/user.json');
// setup user custom application logic
exports.user = require('./lib/models/user')(UserModel);
module.exports = function loopbackUser (options) {
var opts = options || {};
exports.user.autoAttach = opts.datasource || 'db';
exports.userIdentity.autoAttach = opts.datasource || 'db';
exports.userCredential.autoAttach = opts.datasource || 'db';
var PassportConfigurator = passport.PassportConfigurator;
return function loopbackUser (req, res, next) {
var passportConfigurator = new PassportConfigurator(req.app);
passportConfigurator.init();
passportConfigurator.setupModels({
userModel: exports.user,
userIdentityModel: exports.userIdentity,
userCredentialModel: exports.userCredential
});
for (var provider in providers) {
var config = providers[provider];
config.session = config.session !== false;
passportConfigurator.configureProvider(provider, config);
}
next();
};
};