UNPKG

@buession/shiro

Version:

A security framework for JavaScript or TypeScript.

12 lines (11 loc) 2.3 kB
/*! * Buession shiro v2.0.2 * * @link https://shirojs.buession.com/ * @source https://github.com/buession/buession-shirojs * @copyright @ 2020-2025 Buession.com Inc. * @license MIT * @Build Time Fri, 28 Mar 2025 06:21:12 GMT */ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const s="*:*",i=s=>!0===(s=>void 0===s)(s)||!0===(s=>null===s)(s),r=(s,i)=>Array.isArray(s)&&s.includes(i),t=(s,i)=>{if(Array.isArray(s)&&Array.isArray(i)&&i.length>0)for(let r=0;r<i.length;r++)if(s.includes(i[r]))return!0;return!1},e=(s,i)=>{if(Array.isArray(s)&&Array.isArray(i)&&i.length>0){for(let r=0;r<i.length;r++)if(!1===s.includes(i[r]))return!1;return!0}return!1};class n{constructor(s,i,r){this.id=s,this.roles=i,this.permissions=r}getId(){return this.id}setId(s){this.id=s}getRoles(){return this.roles}setRoles(s){this.roles=!0===i(s)?[]:s}addRole(s){this.roles.push(s)}addRoles(s){!1===i(s)&&(this.roles=this.roles.concat(s))}getPermissions(){return this.permissions}setPermissions(s){this.permissions=!0===i(s)?[]:s}addPermission(s){this.permissions.push(s)}addPermissions(s){!1===i(s)&&(this.permissions=this.roles.concat(s))}}class l{constructor(s){const i=s;"string"==typeof i.id&&Array.isArray(i.roles)&&Array.isArray(i.permissions)?this.principal=new n(i.id,i.roles,i.permissions):this.principal=s}isAuthenticated(){return null!==this.principal}isNotAuthenticated(){return!1===this.isAuthenticated()}isGuest(){return null===this.principal}isUser(){return null!==this.principal}hasRole(s){return this.isAuthenticated()&&r(this.principal.getRoles(),s)}lacksRole(s){return!1===this.hasRole(s)}hasAnyRole(s){return this.isAuthenticated()&&t(this.principal.getRoles(),s)}hasRolesAll(s){return this.isAuthenticated()&&e(this.principal.getRoles(),s)}hasPermission(i){return this.isAuthenticated()&&t(this.principal.getPermissions(),[s,i])}lacksPermission(s){return!1===this.hasPermission(s)}hasAnyPermission(i){return this.isAuthenticated()&&t(this.principal.getPermissions(),(i||[]).concat(s))}hasAllPermissions(i){return this.isAuthenticated()&&(r(this.principal.getPermissions(),s)||e(this.principal.getPermissions(),i))}hasPermissionsAll(s){return this.hasAllPermissions(s)}}exports.ALL_PERMISSION=s,exports.Shiro=l,exports.default=l; //# sourceMappingURL=shiro.cjs.min.js.map