UNPKG

@buession/shiro

Version:

A security framework for JavaScript or TypeScript.

12 lines (11 loc) 2.31 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 */ define(["exports"],(function(s){"use strict";const i="*:*",r=s=>!0===(s=>void 0===s)(s)||!0===(s=>null===s)(s),t=(s,i)=>Array.isArray(s)&&s.includes(i),e=(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},n=(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 l{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===r(s)?[]:s}addRole(s){this.roles.push(s)}addRoles(s){!1===r(s)&&(this.roles=this.roles.concat(s))}getPermissions(){return this.permissions}setPermissions(s){this.permissions=!0===r(s)?[]:s}addPermission(s){this.permissions.push(s)}addPermissions(s){!1===r(s)&&(this.permissions=this.roles.concat(s))}}class h{constructor(s){const i=s;"string"==typeof i.id&&Array.isArray(i.roles)&&Array.isArray(i.permissions)?this.principal=new l(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()&&t(this.principal.getRoles(),s)}lacksRole(s){return!1===this.hasRole(s)}hasAnyRole(s){return this.isAuthenticated()&&e(this.principal.getRoles(),s)}hasRolesAll(s){return this.isAuthenticated()&&n(this.principal.getRoles(),s)}hasPermission(s){return this.isAuthenticated()&&e(this.principal.getPermissions(),[i,s])}lacksPermission(s){return!1===this.hasPermission(s)}hasAnyPermission(s){return this.isAuthenticated()&&e(this.principal.getPermissions(),(s||[]).concat(i))}hasAllPermissions(s){return this.isAuthenticated()&&(t(this.principal.getPermissions(),i)||n(this.principal.getPermissions(),s))}hasPermissionsAll(s){return this.hasAllPermissions(s)}}s.ALL_PERMISSION=i,s.Shiro=h,s.default=h,Object.defineProperty(s,"__esModule",{value:!0})})); //# sourceMappingURL=shiro.amd.min.js.map