UNPKG

@buession/shiro

Version:

A security framework for JavaScript or TypeScript.

180 lines (179 loc) 5.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Shiro = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _core = require("./core"); var _common = require("./utils/common"); var Shiro = exports.Shiro = /*#__PURE__*/function () { function Shiro(principal) { (0, _classCallCheck2["default"])(this, Shiro); var $principal = principal; if (typeof $principal.id === 'string' && Array.isArray($principal.roles) && Array.isArray($principal.permissions)) { this.principal = new _core.DefaultPrincipal($principal.id, $principal.roles, $principal.permissions); } else { this.principal = principal; } } /** * 验证是否为已认证通过的用户,不包含已记住的用户,这是与 isUser 标签方法的区别所在 * * @return 用户是否已通过认证 */ return (0, _createClass2["default"])(Shiro, [{ key: "isAuthenticated", value: function isAuthenticated() { return this.principal !== null; } /** * 验证是否为未认证通过用户,与 isAuthenticated 标签相对应,与 isGuest 标签的区别是,该标签包含已记住用户 * * @return 用户是否未通过认证 */ }, { key: "isNotAuthenticated", value: function isNotAuthenticated() { return this.isAuthenticated() === false; } /** * 验证用户是否为访客,即未认证(包含未记住)的用户 * * @return 用户是否为访客 */ }, { key: "isGuest", value: function isGuest() { return this.principal === null; } /** * 验证用户是否认证通过或已记住的用户 * * @return 用户是否认证通过或已记住的用户 */ }, { key: "isUser", value: function isUser() { return this.principal !== null; } /** * 验证用户是否具备某角色。 * * @param roleName * 角色名称 * * @return 用户是否具备某角色 */ }, { key: "hasRole", value: function hasRole(roleName) { return this.isAuthenticated() && (0, _common.has)(this.principal.getRoles(), roleName); } /** * 验证用户是否不具备某角色,与 hasRole 逻辑相反 * * @param roleName * 角色名称 * * @return 用户是否不具备某角色 */ }, { key: "lacksRole", value: function lacksRole(roleName) { return this.hasRole(roleName) === false; } /** * 验证用户是否具有以下任意一个角色 * * @param roleNames * 角色列表 * * @return 用户是否具有以下任意一个角色 */ }, { key: "hasAnyRole", value: function hasAnyRole(roleNames) { return this.isAuthenticated() && (0, _common.hasAny)(this.principal.getRoles(), roleNames); } /** * 验证用户是否具有以下所有角色。 * * @param roleNames * 角色列表 * * @return 用户是否具有以下所有角色 */ }, { key: "hasRolesAll", value: function hasRolesAll(roleNames) { return this.isAuthenticated() && (0, _common.hasAll)(this.principal.getRoles(), roleNames); } /** * 验证用户是否具备某权限 * * @param permission * 权限名称 * * @return 用户是否具备某权限 */ }, { key: "hasPermission", value: function hasPermission(permission) { return this.isAuthenticated() && (0, _common.hasAny)(this.principal.getPermissions(), [_core.ALL_PERMISSION, permission]); } /** * 验证用户是否不具备某权限,与 hasPermission 逻辑相反 * * @param permission * 权限名称 * * @return 用户是否不具备某权限 */ }, { key: "lacksPermission", value: function lacksPermission(permission) { return this.hasPermission(permission) === false; } /** * 验证用户是否具有以下任意一个权限 * * @param permissions * 权限列表 * * @return 用户是否具有以下任意一个权限 */ }, { key: "hasAnyPermission", value: function hasAnyPermission(permissions) { return this.isAuthenticated() && (0, _common.hasAny)(this.principal.getPermissions(), (permissions || []).concat(_core.ALL_PERMISSION)); } /** * 验证用户是否具有以下所有权限 * * @param permissions * 权限列表 * * @return 用户是否具有以下所有权限 */ }, { key: "hasAllPermissions", value: function hasAllPermissions(permissions) { return this.isAuthenticated() && ((0, _common.has)(this.principal.getPermissions(), _core.ALL_PERMISSION) || (0, _common.hasAll)(this.principal.getPermissions(), permissions)); } /** * 验证用户是否具有以下所有权限 * * @param permissions * 权限列表 * * @return 用户是否具有以下所有权限 */ }, { key: "hasPermissionsAll", value: function hasPermissionsAll(permissions) { return this.hasAllPermissions(permissions); } }]); }();