'init_again'
Change-Id: Ib7ecdb9f5baeab1e4681152a57b936edf7475b35
diff --git a/src/utils/permission.ts b/src/utils/permission.ts
new file mode 100644
index 0000000..2b39e48
--- /dev/null
+++ b/src/utils/permission.ts
@@ -0,0 +1,67 @@
+// /**
+// * 字符权限校验
+// * @param {Array} value 校验值
+// * @returns {Boolean}
+
+// import Role = API.System.Role;
+
+export function matchPerms(permissions: string[], value: string[]) {
+ if (value && value instanceof Array && value.length > 0) {
+ const permissionDatas = value;
+ const all_permission = '*:*:*';
+ const hasPermission = permissions.some((permission) => {
+ return all_permission === permission || permissionDatas.includes(permission);
+ });
+ if (!hasPermission) {
+ return false;
+ }
+ return true;
+ }
+ console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
+ return false;
+}
+
+export function matchPerm(permissions: string[], value: string) {
+ if (value && value.length > 0) {
+ const permissionDatas = value;
+ const all_permission = '*:*:*';
+ const hasPermission = permissions.some((permission) => {
+ return all_permission === permission || permissionDatas === permission;
+ });
+ if (!hasPermission) {
+ return false;
+ }
+ return true;
+ }
+ console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`);
+ return false;
+}
+
+export function matchPermission(permissions: string[] | undefined, value: any): boolean {
+ if (permissions === undefined) return false;
+ const type = typeof value;
+ if (type === 'string') {
+ return matchPerm(permissions, value);
+ }
+ return matchPerms(permissions, value);
+}
+
+/**
+ * 角色权限校验
+ * @param roles
+ * @param {Array} value 校验值
+ * @returns {Boolean}
+ */
+export function checkRole(roles: Role[] | undefined, value: string[]) {
+ if (roles && value && value.length > 0) {
+ for (let i = 0; i < roles?.length; i++) {
+ for (let j = 0; j < value?.length; j++) {
+ if (value[j] === roles[i].roleKey) {
+ return true;
+ }
+ }
+ }
+ }
+ console.error(`need roles! Like checkRole="['admin','editor']"`);
+ return false;
+}