klark-js-plugins
Advanced tools
Comparing version 1.0.6 to 1.0.7
@@ -0,0 +0,0 @@ { |
{ | ||
"name": "klark-js-plugins", | ||
"version": "1.0.6", | ||
"version": "1.0.7", | ||
"description": "Plugin modules for KlarkJS", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
'use strict'; | ||
KlarkModule(module, 'krkDbMongooseBinders', function(_, $mongoose, krkLogger, krkModelsApp) { | ||
KlarkModule(module, 'krkDbMongooseBinders', function(_, $mongoose, krkLogger) { | ||
@@ -11,18 +11,6 @@ return { | ||
count: count, | ||
remove: remove, | ||
getAppInfo: getAppInfo, | ||
updateAppInfo: updateAppInfo | ||
remove: remove | ||
}; | ||
function getAppInfo() { | ||
return find(krkModelsApp).then(_.first); | ||
} | ||
function updateAppInfo(data) { | ||
return getAppInfo() | ||
.then(function(appInfo) { | ||
return findByIdAndUpdate(krkModelsApp, appInfo._id, data); | ||
}); | ||
} | ||
@@ -29,0 +17,0 @@ function create(model, record) { |
@@ -14,6 +14,6 @@ 'use strict'; | ||
return { | ||
add, | ||
commit, | ||
isEmpty, | ||
isUnauthorized | ||
add: add, | ||
commit: commit, | ||
isEmpty: isEmpty, | ||
isUnauthorized: isUnauthorized | ||
}; | ||
@@ -20,0 +20,0 @@ |
@@ -6,6 +6,15 @@ 'use strict'; | ||
return { | ||
admin: admin | ||
admin: admin, | ||
simple: simple | ||
}; | ||
function admin(userCred) { | ||
function simple(userOpts) { | ||
return createUser('USER', userOpts); | ||
} | ||
function admin(userOpts) { | ||
return createUser('ADMIN', userOpts); | ||
} | ||
function createUser(role, userCred) { | ||
if (!(userCred.name && userCred.email && userCred.password)) { | ||
@@ -18,3 +27,3 @@ throw new Error('Invalid arguments'); | ||
password: userCred.password, | ||
role: 'ADMIN', | ||
role, | ||
preferences: {}, | ||
@@ -21,0 +30,0 @@ validationToken: 'mockValidationToken', |
@@ -14,3 +14,3 @@ 'use strict'; | ||
res.locals.errors = krkErrors.build(); | ||
res.locals.errors = krkErrors.build(config.errors); | ||
res.locals.data = undefined; | ||
@@ -17,0 +17,0 @@ res.locals.params = {}; |
@@ -8,3 +8,4 @@ 'use strict'; | ||
krkLogger, | ||
krkMiddlewarePermissionsRoles | ||
krkMiddlewarePermissionsRoles, | ||
krkParameterValidator | ||
) { | ||
@@ -21,3 +22,6 @@ | ||
function check(permission) { | ||
function check(permission, _permOpts) { | ||
const permOpts = _.defaultsDeep(_permOpts, { | ||
onlyOwner: false | ||
}); | ||
if (_.indexOf(krkMiddlewarePermissionsRoles, permission) === -1) { | ||
@@ -34,7 +38,7 @@ krkLogger.error(`unsupported permission (${permission})`); | ||
return function(req, res, next) { | ||
var options = { | ||
var authOptions = { | ||
session: false, | ||
failWithError: true | ||
}; | ||
$passport.authenticate('jwt', options)(req, res, onPassportAuthenticationFinished); | ||
$passport.authenticate('jwt', authOptions)(req, res, onPassportAuthenticationFinished); | ||
@@ -57,8 +61,14 @@ function onPassportAuthenticationFinished(error) { | ||
if (!(user | ||
&& ((permission === 'USER' && (user.role === 'USER' || user.role === 'ADMIN')) | ||
|| permission === 'ADMIN' && (user.role === 'ADMIN')))) { | ||
if (!((permission === 'USER' && (user.role === 'USER' || user.role === 'ADMIN')) | ||
|| permission === 'ADMIN' && (user.role === 'ADMIN'))) { | ||
return unauthorized(); | ||
} | ||
if (permOpts.onlyOwner) { | ||
const tarketUserIs = krkParameterValidator.validations.paramId(req); | ||
if(user.role === 'USER' && user._id !== tarketUserIs) { | ||
return unauthorized(); | ||
} | ||
} | ||
res.locals.user = decodedToken.user; | ||
@@ -65,0 +75,0 @@ res.locals.session = decodedToken.session |
@@ -17,3 +17,3 @@ 'use strict'; | ||
name: {type: String, maxlength: [64], unique: true, required: true}, | ||
email: {type: $mongoose.SchemaTypes.Email, required: true, unique: true}, | ||
email: {type: $mongoose.SchemaTypes.Email, unique: true, required: true}, | ||
password: {type: String, required: true}, | ||
@@ -26,3 +26,4 @@ phone: {type: String, maxlength: [32]}, | ||
role: {type: String, enum: krkMiddlewarePermissionsRoles, required: true}, | ||
validatedByAdmin: {type: Boolean, required: true} | ||
validatedByAdmin: {type: Boolean, required: true}, | ||
preferences: {type: $mongoose.Schema.Types.Mixed} | ||
}); | ||
@@ -75,2 +76,2 @@ | ||
}); | ||
}); |
@@ -8,3 +8,2 @@ 'use strict'; | ||
krkLogger, | ||
krkDbMongooseBinders, | ||
krkRoutersAuthorizeVerifyAccountEmailTmpl, | ||
@@ -23,8 +22,16 @@ krkNotificationsEmail, | ||
function register(app, config) { | ||
if (!(app && config && config.apiUrlPrefix && config.appUrl | ||
&& config.EMAIL_SMTP && config.EMAIL_NAME && config.EMAIL_ADDRESS | ||
&& config.name && config.apiUrl)) { | ||
if (!(app | ||
&& config | ||
&& config.apiUrlPrefix | ||
&& config.appUrl | ||
&& config.apiUrl | ||
&& config.EMAIL_SMTP | ||
&& config.EMAIL_NAME | ||
&& config.EMAIL_ADDRESS | ||
&& config.name)) { | ||
throw new Error('Invalid arguments'); | ||
} | ||
config.adminValidationOnSignup = config.adminValidationOnSignup || true; | ||
app.post('/' + config.apiUrlPrefix + '/authorize/signup', [ | ||
@@ -44,8 +51,10 @@ krkMiddlewarePermissions.check('FREE'), | ||
app.post('/' + config.apiUrlPrefix + '/authorize/verifyByAdmin/:id', [ | ||
krkMiddlewarePermissions.check('ADMIN'), | ||
middlewareVerifyByAdminParameterValidator, | ||
middlewareVerifyByAdminController, | ||
krkMiddlewareResponse.success | ||
]); | ||
if (config.adminValidationOnSignup) { | ||
app.post('/' + config.apiUrlPrefix + '/authorize/verifyByAdmin/:id', [ | ||
krkMiddlewarePermissions.check('ADMIN'), | ||
middlewareVerifyByAdminParameterValidator, | ||
middlewareVerifyByAdminController, | ||
krkMiddlewareResponse.success | ||
]); | ||
} | ||
@@ -125,3 +134,3 @@ var verifyAccountRoute = '/' + config.apiUrlPrefix + '/authorize/verifyAccount'; | ||
phone: res.locals.params.phone, | ||
validatedByAdmin: false, | ||
validatedByAdmin: config.adminValidationOnSignup, | ||
role: 'USER', | ||
@@ -154,3 +163,3 @@ preferences: {} | ||
.then(function(newUser) { | ||
return krkDbMongooseBinders.create(krkModelsUser, newUser); | ||
return newUser.save(); | ||
}) | ||
@@ -182,2 +191,3 @@ .catch(function(reason) { | ||
res.locals.data = krkMiddlewarePermissions.createJWT(user); | ||
next(); | ||
@@ -184,0 +194,0 @@ }) |
@@ -17,12 +17,12 @@ 'use strict'; | ||
]); | ||
} | ||
function serverInfoRouter(req, res, next) { | ||
var info = { | ||
'currentVersion': config.apiVersion | ||
}; | ||
res.locals.data = info; | ||
function serverInfoRouter(req, res, next) { | ||
var info = { | ||
'currentVersion': config.apiVersion | ||
}; | ||
res.locals.data = info; | ||
next(); | ||
next(); | ||
} | ||
} | ||
}); |
@@ -10,2 +10,3 @@ 'use strict'; | ||
krkParameterValidator, | ||
krkCrudGenerator, | ||
krkNotificationsEmail, | ||
@@ -26,19 +27,11 @@ krkMiddlewareParameterValidator, | ||
} | ||
app.get('/' + config.apiUrlPrefix + '/user', [ | ||
krkMiddlewarePermissions.check('ADMIN'), | ||
krkMiddlewareParameterValidator.crud.retrieveAll(krkModelsUser), | ||
krkMiddlewareCrudController.retrieveAll(krkModelsUser), | ||
middlewareRetrieveAllSafetyController, | ||
krkMiddlewareResponse.success | ||
]); | ||
app.delete('/' + config.apiUrlPrefix + '/user/:id', [ | ||
krkMiddlewarePermissions.check('ADMIN'), | ||
krkMiddlewareParameterValidator.crud.delete(), | ||
krkMiddlewareCrudController.delete(), | ||
krkMiddlewareResponse.success | ||
]); | ||
const crudOpts = { | ||
model: krkModelsUser, | ||
apiUrlPrefix: config.apiUrlPrefix | ||
}; | ||
krkCrudGenerator.create(app, crudOpts); | ||
app.patch('/' + config.apiUrlPrefix + '/user/:id', [ | ||
krkMiddlewarePermissions.check('USER'), | ||
krkMiddlewarePermissions.check('USER', {onlyOwner: true}), | ||
middlewareUpdateParameterValidator, | ||
@@ -45,0 +38,0 @@ middlewareUpdateController, |
@@ -0,0 +0,0 @@ # klark plugins |
Sorry, the diff of this file is not supported yet
71162
1742
32