UNPKG

react-guarded

Version:

Simple guard component for react js.

1 lines 4.35 kB
module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Guarded=t.Role=t.Permissions=void 0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(1),u=function(e){return e&&e.__esModule?e:{default:e}}(o);function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=function(e){return e.children},l=t.Permissions=function(){function e(){i(this,e)}return r(e,null,[{key:"push",value:function(e){var t=JSON.parse(localStorage.getItem("react_guarded_permissions"));t.push(e),localStorage.setItem("react_guarded_permissions",JSON.stringify(t))}},{key:"insert",value:function(e){localStorage.setItem("react_guarded_permissions",JSON.stringify(e))}},{key:"get",value:function(){return JSON.parse(localStorage.getItem("react_guarded_permissions"))}}]),e}(),s=t.Role=function(){function e(){i(this,e)}return r(e,null,[{key:"set",value:function(e){localStorage.setItem("react_guarded_role",e)}},{key:"get",value:function(){return localStorage.getItem("react_guarded_role")}}]),e}();t.Guarded=function(e){function t(){return i(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.Component),r(t,[{key:"componentWillMount",value:function(){this.setState({guarded:!1,hasRole:!1})}},{key:"componentDidMount",value:function(){this.checkGaurd(this.props.permissions,this.props.oneOf),this.checkRole(this.props.hasRole)}},{key:"componentWillReceiveProps",value:function(e){this.checkGaurd(e.permissions,e.oneOf),this.checkRole(e.hasRole)}},{key:"checkGaurd",value:function(e,t){var n=!1;e?(n=t?this._oneOf(e):this._allOf(e),this.setState({guarded:n})):this.setState({guarded:!0})}},{key:"checkRole",value:function(e){var t=this;if(e){var n=e.map(function(e){return t._hasRole(e)});n=n.filter(function(e){return e}),this.setState({hasRole:n.length>0})}else this.setState({hasRole:!0})}},{key:"_exist",value:function(e){return l.get().filter(function(t){return t===e}).length>0}},{key:"_allOf",value:function(e){var t=this,n=e.map(function(e){return t._exist(e)});return(n=n.filter(function(e){return e})).length===e.length}},{key:"_oneOf",value:function(e){var t=this,n=e.map(function(e){return t._exist(e)});return(n=n.filter(function(e){return e})).length>0}},{key:"_hasRole",value:function(e){return s.get()===e}},{key:"render",value:function(){var e=this.props,t=e.Owner,n=e.children,r=(e.oneOf,e.permissions,function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["Owner","children","oneOf","permissions"])),o=this.state,i=o.guarded,l=o.hasRole;return u.default.createElement(a,null,l&&i&&t&&u.default.createElement(t,r,n),l&&i&&!t&&n)}}]),t}()},function(e,t){e.exports=require("react")}]);