@buession/shiro
Version:
A security framework for JavaScript or TypeScript.
180 lines (179 loc) • 5.43 kB
JavaScript
"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);
}
}]);
}();