in handlers/product-move-api/src/main/scala/com/gu/productmove/endpoint/move/ProductMoveEndpointSteps.scala [18:38]
def assertSubscriptionBelongsToIdentityUser(
getSubscription: GetSubscription,
getAccount: GetAccount,
subscriptionName: SubscriptionName,
maybeIdentityId: Option[IdentityId],
): IO[Throwable | BadRequest, (GetSubscription.GetSubscriptionResponse, GetAccount.GetAccountResponse)] =
for {
subscription <- getSubscription.get(subscriptionName)
account <- getAccount.get(subscription.accountNumber)
_ <- (maybeIdentityId, account.basicInfo.IdentityId__c) match {
case (None, _) => ZIO.unit
case (Some(identityIdToCheck), Some(actualIdentityId)) if identityIdToCheck == actualIdentityId => ZIO.unit
case (Some(identityIdToCheck), actual) =>
for {
_ <- ZIO.log(s"logged in identity id $identityIdToCheck doesn't match $actual on $subscriptionName")
safeUserFacingMessage =
s"logged in identity id $identityIdToCheck doesn't match the expected one for $subscriptionName"
badRequest <- ZIO.fail(BadRequest(safeUserFacingMessage))
} yield badRequest
}
} yield (subscription, account)