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)
})
}
...