From 366962fe938a710afe0ff30a34194443e8a1c9e6 Mon Sep 17 00:00:00 2001 From: Nick Misasi Date: Fri, 3 Feb 2023 10:18:35 -0500 Subject: [PATCH] [MM-49921] Cloud export compliance (#22189) * Support for export compliance screening in cloud * i18n * Refactor error * Fix --------- Co-authored-by: Mattermost Build --- api4/cloud.go | 8 +++++++- model/cloud.go | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/api4/cloud.go b/api4/cloud.go index 6967a79936..4a9d0f8983 100644 --- a/api4/cloud.go +++ b/api4/cloud.go @@ -131,7 +131,13 @@ func changeSubscription(c *Context, w http.ResponseWriter, r *http.Request) { changedSub, err := c.App.Cloud().ChangeSubscription(userId, currentSubscription.ID, subscriptionChange) if err != nil { - c.Err = model.NewAppError("Api4.changeSubscription", "api.cloud.app_error", nil, "", http.StatusInternalServerError).Wrap(err) + appErr := model.NewAppError("Api4.changeSubscription", "api.cloud.app_error", nil, "", http.StatusInternalServerError).Wrap(err) + if err.Error() == "compliance-failed" { + c.Logger.Error("Compliance check failed", mlog.Err(err)) + appErr.StatusCode = http.StatusUnprocessableEntity + } + + c.Err = appErr return } diff --git a/model/cloud.go b/model/cloud.go index 7e74f3c17e..1f4a53c5c4 100644 --- a/model/cloud.go +++ b/model/cloud.go @@ -177,6 +177,7 @@ type Subscription struct { TrialEndAt int64 `json:"trial_end_at"` DelinquentSince *int64 `json:"delinquent_since"` OriginallyLicensedSeats int `json:"originally_licensed_seats"` + ComplianceBlocked string `json:"compliance_blocked"` } // Subscription History model represents true up event in a yearly subscription @@ -266,6 +267,7 @@ type SubscriptionChange struct { ProductID string `json:"product_id"` Seats int `json:"seats"` DowngradeFeedback *DowngradeFeedback `json:"downgrade_feedback"` + ShippingAddress *Address `json:"shipping_address"` } // TODO remove BoardsLimits.