Permission Client for Node
Javascript modul som tilbyr en cache av bruker rettigheter fra Permission Store.
Oppsett for bruk
Basis
npm install @entur-partner/permission-client-node
WebSocket
Planlegger en å motta WebSocket push meldinger trengs følgende pakkener:
yarn add @stomp/stompjs websocket
I tillegg trengs det å kjøre følgende ved oppstart av tjenesten:
Object.assign(global, { WebSocket: require('websocket').w3cwebsocket });
Eksempel på bruk
TokenFactory
Benyttes for å hente ut access tokens from Auth0 ved bruk av klient id og klient hemmelighet (Auth0 Clients)
import {TokenOptions, TokenFactory} from '@entur-private/permission-client-node'
const clientTokenOptions : TokenOptions = {
domain: 'internal.dev.entur.org',
clientId: '<clientId>',
clientSecret: '<secret>',
audience: 'https://api.dev.entur.io',
refreshBeforeMinValidSeconds: 600
}
const accessTokenFactory = new TokenFactory(clientTokenOptions);
const accessToken = await accessTokenFactory.getAccessToken();
AuthorizeCache
Ønsker en å sjekke hvilke rettigheter en bruker har i Permission Store benyttes PermissionClient.
import {AuthorizeCacheType, Application, ApplicationPermission, PermissionDeliverRepository} from '@entur-private/permission-client-node'
import PermissionClient from '@entur-private/permission-client-node'
const application : Application = {
name : 'TestApplication',
refreshRate : 300
}
const permissionStoreUrl = new URL('https://api.dev.entur.io/permission-store/v1');
const repository = new PermissionDeliverRepository(application, accessTokenFactory, permissionStoreUrl);
const applicationpermissions : ApplicationPermission[] = [];
applicationpermissions.push({operation: 'produkt', access: 'les', responsibilityType: null});
applicationpermissions.push({operation: 'produkt', access: 'les', responsibilityType: 'produkt.organisation'});
applicationpermissions.push({operation: 'produkt', access: 'les', responsibilityType: 'produkt.id'});
const autorizeCache = await PermissionClient(AuthorizeCacheType.IN_MEMORY, applicationpermissions, repository);
const hasBCAccess = autorizeCache.checkBusinessCapabilityPermission(authoritySubject, businessCapability);
const hasRSAccess = autorizeCache.checkResponsibilitySetPermission(authoritySubject, responsibilitySet);
const userPermissions = getPermissions(authoritySubject);
Bidrag til vidreutvikling
Clone modulen fra Bitbucket med:
git clone https://<username>@bitbucket.org/enturas/permission-client-node.git
Innstaller avhengigeter fra konsoll på roten av prosjektet:
npm install
Enhetstester utviklet i Jest kjøres ned:
npm test
Publisering
Oppgrader versjon
npm version <major | minor | patch>
Opprett en NPM user account på https://www.npmjs.com/signup. Send brukeren din til tech-lead i Entur Partner og be om å bli lagt til i Entur Partner organisation.
Publisering utføres ved å skrive:
npm publish