quicksuite-gb-authorization
TypeScript icon, indicating that this package has built-in type declarations

1.0.5 • Public • Published

Getting started

Initialization

await GbAuthorization.initialize({
  storageType: 'mongo',
  connection: 'contection_string',
  aud: 'client_id',
  alias: 'application_alias',
  allowedRegions: ['US', '*'],
  mapAnonUsersTo: 'Users'
})

Create users

await GbAuthorization.addUser(
  { name: 'admin', preferredMail: 'admin@admin.com', roles: ['rol1', 'rol2'], aud: 'client_id' })

Authorize by user region

app.use(GbAuthorization.autorizeRegion())

Authorize endpoint by role

router.get('/', GbAuthorization.authorize('Users'), (req: Request, res: Response) => {
  ...
})

Access to auth User

  req.authUser

Quicksuite

Orchestrator

utils/entity/service.api.ts


export function callServiceApi(serviceName: string, req: any, res: any, method: httpMethod) {
  const svc = getService(serviceName, req)
  method(svc)
    .then(response => processResponse(res, response))
    .catch(e => {
      let status = 500
      let statusText = 'Internal Server Error'

      
     if(e?.response?.status === 401) {
        status = 401
        statusText = 'Unauthorized'
      }
    
      res.status(status).send(statusText)
    })
}

app/server.ts


@injectable()
class Server {
  private app: express.Express;
  private server: http.Server;

  constructor(private registry: RegistryService) {
    // Get environment vars
    dotenv.config();
  }

  public up = (): Promise => {
    return new Promise(async (resolve, reject) => {
      this.registry.registerModels()
      this.registry.init();

      this.app = express();
      this.app.use(express.json({ limit: '16mb' }));
      this.app.use(express.urlencoded({
        extended: true
      }));

      ...

      await GbAuthorization.initialize({
        storageType: 'mongo',
        connection: connection.dbUrl,
        aud: 'JeiqSJuXDbfYTNEQXY6oFpfacasa',
        alias: 'app1',
        allowedRegions: ['US']
      })

      await GbAuthorization.addUser(
        { name: 'admin', preferredMail: 'admin@test.com', roles: ['Users'], aud: 'JeiqSJuXDbfYTNEQXY6oFpfacasa' })
      await GbAuthorization.addUser(
        { name: 'Juan Colo', preferredMail: 'juan.g.colo@test.com', roles: ['Users'], aud: 'JeiqSJuXDbfYTNEQXY6oFpfacasa' })
      await GbAuthorization.addUser(
        { name: 'User 1', preferredMail: 'user001@test.com', roles: ['Users'], aud: 'JeiqSJuXDbfYTNEQXY6oFpfacasa' })

      this.app.use(GbAuthorization.autorizeRegion())

      // Start Server: Main point of entry
      this.server = this.app.listen(serviceConfigs.port, () => {
        logger.info('Contact-ms', `Service listening on port ${serviceConfigs.port} in ${serviceConfigs.envName}`, null, {
          timestamp: Date.now()
        });

        // Connect to database
        this.databaseConnect()
          .then(svc => {
            resolve(this.server);
          })
          .catch(err => {
            logger.error('Contact-ms', `Unable to connect to database: ${err}`);
            reject(new Error(`Unable to connect to database: ${err}`));
          });
      });

      this.bindPOSIXSignals();

      this.registry.connect(this.app)
    })
  }

...


Readme

Keywords

none

Package Sidebar

Install

npm i quicksuite-gb-authorization

Weekly Downloads

1

Version

1.0.5

License

ISC

Unpacked Size

36.9 kB

Total Files

25

Last publish

Collaborators

  • jgcolo