Merge pull request #2590 from constantine2nd/develop

Improve error handling at applyAccessTokenRules
This commit is contained in:
Simon Redfern 2025-08-05 15:36:17 +01:00 committed by GitHub
commit c475fde3a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -410,10 +410,21 @@ object OAuth2Login extends RestHelper with MdcLoggable {
validateAccessToken(token) match {
case Full(_) =>
val user = getOrCreateResourceUser(token)
val consumer = getOrCreateConsumer(token, user.map(_.userId), Some("OAuth 2.0"))
LoginAttempt.userIsLocked(user.map(_.provider).getOrElse(""), user.map(_.name).getOrElse("")) match {
case true => ((Failure(UsernameHasBeenLocked), Some(cc.copy(consumer = consumer))))
case false => (user, Some(cc.copy(consumer = consumer)))
val consumer: Box[Consumer] = getOrCreateConsumer(token, user.map(_.userId), Some("OAuth 2.0"))
consumer match {
case Full(_) =>
LoginAttempt.userIsLocked(user.map(_.provider).getOrElse(""), user.map(_.name).getOrElse("")) match {
case true => ((Failure(UsernameHasBeenLocked), Some(cc.copy(consumer = consumer))))
case false => (user, Some(cc.copy(consumer = consumer)))
}
case ParamFailure(msg, exception, chain, apiFailure: APIFailure) =>
logger.debug(s"ParamFailure - message: $msg, param: $apiFailure, exception: ${exception.map(_.getMessage).openOr("none")}, chain: ${chain.map(_.msg).openOr("none")}")
(ParamFailure(msg, exception, chain, apiFailure: APIFailure), Some(cc))
case Failure(msg, exception, c) =>
logger.error(s"Failure - message: $msg, exception: ${exception.map(_.getMessage).openOr("none")}")
(Failure(msg, exception, c), Some(cc))
case _ =>
(Failure(CreateConsumerError), Some(cc))
}
case ParamFailure(a, b, c, apiFailure: APIFailure) =>
(ParamFailure(a, b, c, apiFailure: APIFailure), Some(cc))