From f347ead84d17c2550064ac237b32ee1fef80c190 Mon Sep 17 00:00:00 2001 From: ubbcou Date: Wed, 27 Jun 2018 14:04:50 +0800 Subject: [PATCH] check it when authority is string and currentAuthority is array. And update CheckPermissions test --- src/components/Authorized/CheckPermissions.js | 8 ++++++++ .../Authorized/CheckPermissions.test.js | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/components/Authorized/CheckPermissions.js b/src/components/Authorized/CheckPermissions.js index df6fdb7f..8aaad1ce 100644 --- a/src/components/Authorized/CheckPermissions.js +++ b/src/components/Authorized/CheckPermissions.js @@ -45,6 +45,14 @@ const checkPermissions = (authority, currentAuthority, target, Exception) => { if (authority === currentAuthority) { return target; } + if (Array.isArray(currentAuthority)) { + for (let i = 0; i < currentAuthority.length; i += 1) { + const element = currentAuthority[i]; + if (authority.indexOf(element) >= 0) { + return target; + } + } + } return Exception; } diff --git a/src/components/Authorized/CheckPermissions.test.js b/src/components/Authorized/CheckPermissions.test.js index b4b5e2ce..1e66cb9e 100644 --- a/src/components/Authorized/CheckPermissions.test.js +++ b/src/components/Authorized/CheckPermissions.test.js @@ -34,4 +34,22 @@ describe('test CheckPermissions', () => { it('Correct Function permission authentication', () => { expect(checkPermissions(() => true, 'guest', target, error)).toEqual('ok'); }); + it('authority is string, currentAuthority is array, return ok', () => { + expect(checkPermissions('user', ['user'], target, error)).toEqual('ok'); + }); + it('authority is string, currentAuthority is array, return ok', () => { + expect(checkPermissions('user', ['user', 'admin'], target, error)).toEqual('ok'); + }); + it('authority is array, currentAuthority is array, return ok', () => { + expect(checkPermissions(['user', 'admin'], ['user', 'admin'], target, error)).toEqual('ok'); + }); + it('Wrong Function permission authentication', () => { + expect(checkPermissions(() => false, ['user'], target, error)).toEqual('error'); + }); + it('Correct Function permission authentication', () => { + expect(checkPermissions(() => true, ['user'], target, error)).toEqual('ok'); + }); + it('authority is undefined , return ok', () => { + expect(checkPermissions(null, ['user'], target, error)).toEqual('ok'); + }); }); -- GitLab