Skip to content

Commit

Permalink
add fn to check if user has event role
Browse files Browse the repository at this point in the history
  • Loading branch information
hiddentao committed Jan 5, 2019
1 parent ee5e704 commit e67faa7
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
4 changes: 4 additions & 0 deletions src/role.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { addressesMatch } from './address'

export const ROLE = {
SUPER_ADMIN: 'SUPER_ADMIN',
EVENT_ADMIN: 'EVENT_ADMIN',
Expand All @@ -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)))
44 changes: 44 additions & 0 deletions src/role.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
ROLE,
userHasRole,
extractUsersWithGivenEventRole,
userHasEventRole,
} from './'

describe('role', () => {
Expand Down Expand Up @@ -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)
})
})

0 comments on commit e67faa7

Please sign in to comment.