UNPKG

uxess

Version:

Generic authorization module for role-based handling of ui elements

1 lines 6.01 kB
(function(){"use strict";angular.module("uxs",["ngAnimate"])})(),function(){"use strict";function UxsAccessHandler(uxsAUTH_TYPES,uxsAuthTypeHandler,uxsPermitHandler,uxsWildcardHandler){function _comparePermits(element){return uxsPermitHandler.getPermits().indexOf(element)!==-1}this.hasPermits=function hasPermits(){var permits=uxsPermitHandler.getPermits();return permits.length>0},this.hasAllPermits=function hasAllPermits(permits){var parsedPermits=uxsPermitHandler.parsePermits(permits);return parsedPermits.every(_comparePermits)},this.hasAnyPermits=function hasAnyPermits(permits){var parsedPermits=uxsPermitHandler.parsePermits(permits);return parsedPermits.some(_comparePermits)},this.hasNonePermits=function hasNonePermits(permits){return!this.hasAnyPermits(permits)},this.isPermitted=function isPermitted(permits,authType){var isVerified=uxsAuthTypeHandler.isAuthType(authType),parsedAuthType=uxsAuthTypeHandler.parseAuthType(authType),permitInspector=uxsAUTH_TYPES[parsedAuthType],wildcard=uxsWildcardHandler.getWildcard(),result;return permits===wildcard?result=this.hasPermits():result=isVerified&&this[permitInspector](permits),result}}angular.module("uxs").service("uxsAccessHandler",["uxsAUTH_TYPES","uxsAuthTypeHandler","uxsPermitHandler","uxsWildcardHandler",UxsAccessHandler])}(),function(){"use strict";function UxsAuthTypeHandler(){var _providedDefaultAuthType;this.setDefaultAuthType=function setDefaultAuthType(authType){_providedDefaultAuthType=authType},this.$get=function(uxsAUTH_TYPES){function _parseProvidedDefaultAuthType(){_providedDefaultAuthType&&service.setDefaultAuthType(_providedDefaultAuthType)}var service={},_data={defaultAuthType:"any"};return service.setDefaultAuthType=function setDefaultAuthType(authType){var isVerified=this.isAuthType(authType),parsedAuthType;isVerified&&(parsedAuthType=this.parseAuthType(authType),_data.defaultAuthType=parsedAuthType)},service.getDefaultAuthType=function getDefaultAuthType(){return _data.defaultAuthType},service.isAuthType=function isAuthType(authType){var parsedAuthType=this.parseAuthType(authType),authTypeKeys=Object.keys(uxsAUTH_TYPES);return authTypeKeys.indexOf(parsedAuthType)!==-1},service.parseAuthType=function parseAuthType(authType){var parsedAuthType;return angular.isString(authType)&&(parsedAuthType=angular.lowercase(authType).trim()),parsedAuthType||_data.defaultAuthType},_parseProvidedDefaultAuthType(),service}}angular.module("uxs").provider("uxsAuthTypeHandler",[UxsAuthTypeHandler])}(),function(){"use strict";angular.module("uxs").constant("uxsAUTH_TYPES",{any:"hasAnyPermits",all:"hasAllPermits",none:"hasNonePermits"})}(),function(){"use strict";function UxsPermitHandler(){var _providedPermits;this.setPermits=function setPermits(permits){_providedPermits=permits},this.$get=function($rootScope){function _parsePermitList(permits){return permits.map(function(permit){var trimmedPermits,parsedPermits;try{trimmedPermits=permit.toString().trim(),parsedPermits=angular.lowercase(trimmedPermits)}catch(error){parsedPermits=""}return parsedPermits})}function _parseProvidedPermits(){_providedPermits&&service.setPermits(_providedPermits)}var service={},_data={permits:[]};return service.parsePermits=function parsePermits(permits){var parsedPermits,splitPermits;return permits&&angular.isString(permits)?splitPermits=permits.split(","):splitPermits=permits,splitPermits&&angular.isArray(splitPermits)?parsedPermits=_parsePermitList(splitPermits):parsedPermits=[],parsedPermits},service.getPermits=function getPermits(){return _data.permits},service.setPermits=function setPermits(permits){_data.permits=this.parsePermits(permits),$rootScope.$broadcast("uxsPermitsChanged")},_parseProvidedPermits(),service}}angular.module("uxs").provider("uxsPermitHandler",[UxsPermitHandler])}(),function(){"use strict";function UxsWildcardHandler(){var _providedWildcard;this.setWildcard=function setWildcard(wildcard){_providedWildcard=wildcard},this.$get=function(){function _parseProvidedWildcard(){_providedWildcard&&service.setWildcard(_providedWildcard)}var service={},_data={wildcard:null,defaultWildcard:"*"};return service.parseWildcard=function parseWildcard(wildcard){var parsedWildcard;try{parsedWildcard=wildcard.toString()}catch(error){parsedWildcard=_data.defaultWildcard}return parsedWildcard},service.getWildcard=function getWildcard(){return _data.wildcard||_data.defaultWildcard},service.setWildcard=function setWildcard(wildcard){_data.wildcard=this.parseWildcard(wildcard)},_parseProvidedWildcard(),service}}angular.module("uxs").provider("uxsWildcardHandler",[UxsWildcardHandler])}(),function(){"use strict";function uxsIf($animate,$interpolate,$parse,uxsAccessHandler){function getAttributeValue(scope,attr){var hasExpression=isExpression(attr),parseFn=$parse,extractedAttr;hasExpression&&(parseFn=$interpolate);try{extractedAttr=parseFn(attr)(scope)}catch(error){extractedAttr=attr}return extractedAttr||attr}function getCommentNode(attrs){return document.createComment(" end uxsIf: "+attrs.uxsIf+" ")}function isAuthorized(scope,attrs){var permits=getAttributeValue(scope,attrs.uxsIf),authType=getAttributeValue(scope,attrs.uxsType);return uxsAccessHandler.isPermitted(permits,authType)}function isExpression(attr){return attr&&attr.search(/{{2}.*}{2}/)!==-1}function link(scope,element,attrs,ctrl,transclude){function checkVisibility(){isAccessible=isAuthorized(scope,attrs),isAccessible?childScope||transclude(function(clone,newScope){childScope=newScope,clone.push(getCommentNode(attrs)),cloneReference=clone,$animate.enter(clone,element.parent(),element)}):(childScope&&(childScope.$destroy(),childScope=null),cloneReference&&($animate.leave(cloneReference),cloneReference=null))}var isAccessible,childScope,cloneReference;checkVisibility(),scope.$on("uxsPermitsChanged",checkVisibility)}return{multiElement:!0,transclude:"element",priority:800,terminal:!0,restrict:"A",link:link}}angular.module("uxs").directive("uxsIf",["$animate","$interpolate","$parse","uxsAccessHandler",uxsIf])}()