From 1e4fca06eefc771db7ddb4427c28356ae2de055d Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 1 Sep 2025 21:58:48 -0400 Subject: [PATCH] filter existing artcraft subscriptions, allow promo codes --- ...aft_create_subscription_checkout_session_handler.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/service/plugins/billing_artcraft/src/endpoints/checkout/stripe_artcraft_create_subscription_checkout_session_handler.rs b/crates/service/plugins/billing_artcraft/src/endpoints/checkout/stripe_artcraft_create_subscription_checkout_session_handler.rs index 3cb31e6f56..a75990f02a 100644 --- a/crates/service/plugins/billing_artcraft/src/endpoints/checkout/stripe_artcraft_create_subscription_checkout_session_handler.rs +++ b/crates/service/plugins/billing_artcraft/src/endpoints/checkout/stripe_artcraft_create_subscription_checkout_session_handler.rs @@ -7,6 +7,7 @@ use actix_web::{web, HttpRequest}; use artcraft_api_defs::stripe_artcraft::create_subscription_checkout::{PlanBillingCadence, StripeArtcraftCreateCheckoutSessionRequest, StripeArtcraftCreateCheckoutSessionResponse}; use component_traits::traits::internal_user_lookup::InternalUserLookup; use enums::common::artcraft_subscription_slug::ArtcraftSubscriptionSlug; +use enums::common::subscription_namespace::SubscriptionNamespace; use log::{error, info, warn}; use reusable_types::server_environment::ServerEnvironment; use std::collections::HashMap; @@ -73,9 +74,15 @@ pub async fn stripe_artcraft_create_checkout_session_handler( info!("Subscriptions: {:?}", &user_metadata.existing_subscription_keys); + let artcraft_subscriptions = user_metadata + .existing_subscription_keys + .iter() + .filter(|it| it.internal_subscription_namespace == SubscriptionNamespace::Artcraft) + .collect::>(); + // TODO: This will not handle a future where we have multiple "namespaces" or can offer users more than one subscription. // It will actively block users from subscribing to two or more websites. - if !user_metadata.existing_subscription_keys.is_empty() { + if !artcraft_subscriptions.is_empty() { return Err(CommonWebError::BadInputWithSimpleMessage("user already has plan".to_string())) } @@ -132,6 +139,7 @@ pub async fn stripe_artcraft_create_checkout_session_handler( ..Default::default() } ]) + .allow_promotion_codes(true) .automatic_tax(CreateCheckoutSessionAutomaticTax { enabled: true, liability: None,