Skip to content

Servicio autorización - Integración

Introducción

En este documento se explica cómo integrar el sistema de autorización de Nautilus.

Integración

Una vez configurados los roles de los usuarios/grupos en una aplicación, el servicio authorization se podrá utilizar a través del API de Nautilus

El servicio de autorización como todos los servicios de Nautilus es multitenant, por tanto necesita recibir un id de aplicación, a parte de la cuenta de usuario y funcionalidad que se quieren contrastar [accountId, applicationId, functionalityTag] y devuelve true o false dependiendo de si la cuenta indicada tiene acceso a esa funcionalidad en esa aplicación o no.

Ejemplos de código usando authorization

javascript
const checkUrl = `${config.AUTHORIZATION_URL}/check?accountId=${req.payload.sub}&productInstanceId=${req.headers.instanceid}&functionalityId=ALL`;

utils
  .apiFetch(checkUrl, req.instanceToken, req.traceId)
  .then(responseOK(res, utils.wrongInstanceError))
  .then((data) => {
    if (data.data.self.isAllowed) {
      utils.logger.debug(
        req.traceId,
        `Instance ${req.headers.instanceid} allowed for user ${req.payload.sub}`
      );
      next();
    } else {
      next(new ResponseError(utils.wrongInstanceError));
    }
  })
  .catch((error) => next(error));
const checkUrl = `${config.AUTHORIZATION_URL}/check?accountId=${req.payload.sub}&productInstanceId=${req.headers.instanceid}&functionalityId=ALL`;

utils
  .apiFetch(checkUrl, req.instanceToken, req.traceId)
  .then(responseOK(res, utils.wrongInstanceError))
  .then((data) => {
    if (data.data.self.isAllowed) {
      utils.logger.debug(
        req.traceId,
        `Instance ${req.headers.instanceid} allowed for user ${req.payload.sub}`
      );
      next();
    } else {
      next(new ResponseError(utils.wrongInstanceError));
    }
  })
  .catch((error) => next(error));