UNPKG

@shrinedev/loopback-keycloak-demo-app

Version:

Example Loopback App that integrates with Keycloak.

45 lines (41 loc) 1.07 kB
import {get, ResponseObject} from '@loopback/rest'; import {inject} from '@loopback/context'; import {KeycloakGate} from '@shrinedev/loopback-gate-keycloak'; import {gateWith} from '@shrinedev/loopback-gate'; import {TeamGate, CURRENT_TEAM, TeamProfile} from '../gates/team.gate'; /** * OpenAPI response for me() */ const TEAM_RESPONSE: ResponseObject = { description: '/teams View Team Response', parameters: [{name: 'id', in: 'path', schema: {type: 'string'}}], content: { 'application/json': { schema: { type: 'object', properties: { name: {type: 'string'}, }, }, }, }, }; /** * A controller to demonstrate a LoopBack Keycloak Gate */ export class TeamController { constructor() {} // Map to `GET /me` @gateWith(KeycloakGate, TeamGate) @get('/teams/{id}', { responses: { '200': TEAM_RESPONSE, }, }) me(@inject(CURRENT_TEAM) team: TeamProfile): object { // Reply with a current team *if* authorized by Keycloak return { name: team && team.name, }; } }