UNPKG

@infomaker/service-authorization-lib

Version:

IMID Service Authorization Library

62 lines (50 loc) 1.4 kB
const Joi = require('joi') const authorizationModes = require('./authorization-modes') const requiredString = Joi.string().required() const requiredStringOrFalse = Joi.alternatives().try( Joi.boolean().allow(false).required(), Joi.string().required() ) const stringOrFunction = Joi.alternatives().try( Joi.func(), Joi.string() ) const stringOrFunctionOrFalse = Joi.alternatives().try( Joi.func(), Joi.string(), Joi.boolean().allow(false) ) const accessRule = Joi.object().keys({ unit: stringOrFunction, permission: stringOrFunction, sub: stringOrFunction }).min(1) const builtAccessRule = Joi.object().keys({ unit: Joi.string(), permission: Joi.string(), sub: Joi.string() }).min(1) const accessRules = Joi.array().items(accessRule).min(1) const authParamsFull = Joi.object().keys({ onPreAuth: Joi.func().optional(), org: stringOrFunctionOrFalse.required(), accessRules: accessRules.optional(), suppressLoginTrigger: Joi.boolean().strict().optional() }) const authParamsAuthorizationModeOnly = Joi.string().allow( authorizationModes.openEndpoint, authorizationModes.serviceAdminEndpoint, authorizationModes.authenticatedEndpoint ) const authParams = Joi.alternatives().try( authParamsFull, authParamsAuthorizationModeOnly ) module.exports = { authParams, accessRules, accessRule, builtAccessRule, requiredString, requiredStringOrFalse }