in membership-attribute-service/app/services/IdentityAuthService.scala [61:77]
def userAndCredentials(requestHeader: RequestHeader, requiredScopes: List[AccessScope]): Future[Either[ApiError, UserAndCredentials]] =
identityPlayAuthService
.validateCredentialsFromRequest[UserFromToken](requestHeader, requiredScopes)
.attempt
.flatMap {
// Request has Okta token but it's invalid
case Left(OktaValidationException(error)) =>
IO.pure(Left(ApiError(message = error.message, details = "", statusCode = error.suggestedHttpResponseCode)))
// Request has invalid Idapi credentials
case Left(UserCredentialsMissingError(_)) => IO.pure(Left(ApiErrors.unauthorized))
// Something unexpected
case Left(other) => IO.raiseError(other)
// Request has valid Okta token
case Right((credentials: OktaUserCredentials, user)) => IO.pure(Right(UserAndCredentials(user, credentials)))
// Request has valid Idapi credentials
case Right((credentials: IdapiUserCredentials, user)) => IO.pure(Right(UserAndCredentials(user, credentials)))
}