From e67faa7c8a3a89b02a062b12cf7e0343393fe3c2 Mon Sep 17 00:00:00 2001 From: Ramesh Nair Date: Sat, 5 Jan 2019 22:00:35 +0000 Subject: [PATCH] add fn to check if user has event role --- package.json | 2 +- src/role.js | 4 ++++ src/role.test.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index aa80fbc..d56597a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@wearekickback/shared", - "version": "1.9.0", + "version": "1.9.1", "description": "Shared utils between client and server", "main": "dist/index.js", "module": "src/index.js", diff --git a/src/role.js b/src/role.js index 3105e32..c76830e 100644 --- a/src/role.js +++ b/src/role.js @@ -1,3 +1,5 @@ +import { addressesMatch } from './address' + export const ROLE = { SUPER_ADMIN: 'SUPER_ADMIN', EVENT_ADMIN: 'EVENT_ADMIN', @@ -6,3 +8,5 @@ export const ROLE = { export const userHasRole = (user, role) => (user.roles || []).includes(role) export const extractUsersWithGivenEventRole = (event, r) => event.roles.filter(({ role }) => role === r).map(({ user }) => user) + +export const userHasEventRole = (addressOrId, event, r) => !!event.roles.find(({ role, user }) => role === r && (user.id === addressOrId || addressesMatch(user.address, addressOrId))) diff --git a/src/role.test.js b/src/role.test.js index f2ba68f..cf8df92 100644 --- a/src/role.test.js +++ b/src/role.test.js @@ -2,6 +2,7 @@ import { ROLE, userHasRole, extractUsersWithGivenEventRole, + userHasEventRole, } from './' describe('role', () => { @@ -51,3 +52,46 @@ describe('extractUsersWithGivenEventRole', () => { expect(extractUsersWithGivenEventRole(event, ROLE.EVENT_ADMIN)).toEqual([ 3 ]) }) }) + +describe('userHasEventRole', () => { + it('works', () => { + const event = { + roles: [ + { + role: ROLE.SUPER_ADMIN, + user: { + id: '1', + address: 'a1' + }, + }, + { + role: 'test', + user: { + id: '2', + address: 'a2' + }, + }, + { + role: ROLE.EVENT_ADMIN, + user: { + id: '3', + address: 'a3' + }, + }, + { + role: ROLE.SUPER_ADMIN, + user: { + id: '4', + address: 'a4' + }, + }, + ] + } + + expect(userHasEventRole('4', event, ROLE.SUPER_ADMIN)).toEqual(true) + expect(userHasEventRole('a4', event, ROLE.SUPER_ADMIN)).toEqual(true) + expect(userHasEventRole('a3', event, ROLE.SUPER_ADMIN)).toEqual(false) + expect(userHasEventRole('1', event, ROLE.EVENT_ADMIN)).toEqual(false) + expect(userHasEventRole('a3', event, ROLE.EVENT_ADMIN)).toEqual(true) + }) +})