Call Cloud HandleLicenseChange when license is changed in Cloud (#21583)
* Call Cloud HandleLicenseChange when license is changed in a cloud context * Remove UpdateSubscriptionFromHook as its no longer necessary * Update mocks * Remove another reference * Remove translation Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
@@ -13,7 +13,6 @@ import (
|
|||||||
|
|
||||||
"github.com/mattermost/mattermost-server/v6/audit"
|
"github.com/mattermost/mattermost-server/v6/audit"
|
||||||
"github.com/mattermost/mattermost-server/v6/model"
|
"github.com/mattermost/mattermost-server/v6/model"
|
||||||
"github.com/mattermost/mattermost-server/v6/plugin"
|
|
||||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -630,23 +629,6 @@ func handleCWSWebhook(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
c.Err = model.NewAppError("SendCloudWelcomeEmail", "api.user.send_cloud_welcome_email.error", nil, err.Error(), http.StatusInternalServerError)
|
c.Err = model.NewAppError("SendCloudWelcomeEmail", "api.user.send_cloud_welcome_email.error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case model.EventTypeSubscriptionChanged:
|
|
||||||
// event.ProductLimits is nil if there was no change
|
|
||||||
if event.ProductLimits != nil {
|
|
||||||
if pluginsEnvironment := c.App.GetPluginsEnvironment(); pluginsEnvironment != nil {
|
|
||||||
pluginsEnvironment.RunMultiPluginHook(func(hooks plugin.Hooks) bool {
|
|
||||||
hooks.OnCloudLimitsUpdated(event.ProductLimits)
|
|
||||||
return true
|
|
||||||
}, plugin.OnCloudLimitsUpdatedID)
|
|
||||||
}
|
|
||||||
c.App.AdjustInProductLimits(event.ProductLimits, event.Subscription)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := c.App.Cloud().UpdateSubscriptionFromHook(event.ProductLimits, event.Subscription); err != nil {
|
|
||||||
c.Err = model.NewAppError("Api4.handleCWSWebhook", "api.cloud.subscription.update_error", nil, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
c.Logger.Info("Updated subscription from webhook event")
|
|
||||||
case model.EventTypeTriggerDelinquencyEmail:
|
case model.EventTypeTriggerDelinquencyEmail:
|
||||||
var emailToTrigger model.DelinquencyEmail
|
var emailToTrigger model.DelinquencyEmail
|
||||||
if event.DelinquencyEmail != nil {
|
if event.DelinquencyEmail != nil {
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if c.App.Channels().License().IsCloud() {
|
if c.App.Channels().License().IsCloud() {
|
||||||
// If cloud, invalidate the caches when a new license is loaded
|
// If cloud, invalidate the caches when a new license is loaded
|
||||||
defer c.App.Srv().Cloud.InvalidateCaches()
|
defer c.App.Srv().Cloud.HandleLicenseChange()
|
||||||
}
|
}
|
||||||
|
|
||||||
auditRec.Success()
|
auditRec.Success()
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
type CloudInterface interface {
|
type CloudInterface interface {
|
||||||
GetCloudProducts(userID string, includeLegacyProducts bool) ([]*model.Product, error)
|
GetCloudProducts(userID string, includeLegacyProducts bool) ([]*model.Product, error)
|
||||||
GetCloudLimits(userID string) (*model.ProductLimits, error)
|
GetCloudLimits(userID string) (*model.ProductLimits, error)
|
||||||
UpdateSubscriptionFromHook(*model.ProductLimits, *model.Subscription) error
|
|
||||||
|
|
||||||
CreateCustomerPayment(userID string) (*model.StripeSetupIntent, error)
|
CreateCustomerPayment(userID string) (*model.StripeSetupIntent, error)
|
||||||
ConfirmCustomerPayment(userID string, confirmRequest *model.ConfirmPaymentMethodRequest) error
|
ConfirmCustomerPayment(userID string, confirmRequest *model.ConfirmPaymentMethodRequest) error
|
||||||
@@ -31,4 +30,5 @@ type CloudInterface interface {
|
|||||||
// GetLicenseRenewalStatus checks on the portal whether it is possible to use token to renew a license
|
// GetLicenseRenewalStatus checks on the portal whether it is possible to use token to renew a license
|
||||||
GetLicenseRenewalStatus(userID, token string) error
|
GetLicenseRenewalStatus(userID, token string) error
|
||||||
InvalidateCaches() error
|
InvalidateCaches() error
|
||||||
|
HandleLicenseChange() error
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,6 +233,20 @@ func (_m *CloudInterface) GetSubscription(userID string) (*model.Subscription, e
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HandleLicenseChange provides a mock function with given fields:
|
||||||
|
func (_m *CloudInterface) HandleLicenseChange() error {
|
||||||
|
ret := _m.Called()
|
||||||
|
|
||||||
|
var r0 error
|
||||||
|
if rf, ok := ret.Get(0).(func() error); ok {
|
||||||
|
r0 = rf()
|
||||||
|
} else {
|
||||||
|
r0 = ret.Error(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
return r0
|
||||||
|
}
|
||||||
|
|
||||||
// InvalidateCaches provides a mock function with given fields:
|
// InvalidateCaches provides a mock function with given fields:
|
||||||
func (_m *CloudInterface) InvalidateCaches() error {
|
func (_m *CloudInterface) InvalidateCaches() error {
|
||||||
ret := _m.Called()
|
ret := _m.Called()
|
||||||
@@ -316,20 +330,6 @@ func (_m *CloudInterface) UpdateCloudCustomerAddress(userID string, address *mod
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateSubscriptionFromHook provides a mock function with given fields: _a0, _a1
|
|
||||||
func (_m *CloudInterface) UpdateSubscriptionFromHook(_a0 *model.ProductLimits, _a1 *model.Subscription) error {
|
|
||||||
ret := _m.Called(_a0, _a1)
|
|
||||||
|
|
||||||
var r0 error
|
|
||||||
if rf, ok := ret.Get(0).(func(*model.ProductLimits, *model.Subscription) error); ok {
|
|
||||||
r0 = rf(_a0, _a1)
|
|
||||||
} else {
|
|
||||||
r0 = ret.Error(0)
|
|
||||||
}
|
|
||||||
|
|
||||||
return r0
|
|
||||||
}
|
|
||||||
|
|
||||||
// ValidateBusinessEmail provides a mock function with given fields: userID, email
|
// ValidateBusinessEmail provides a mock function with given fields: userID, email
|
||||||
func (_m *CloudInterface) ValidateBusinessEmail(userID string, email string) error {
|
func (_m *CloudInterface) ValidateBusinessEmail(userID string, email string) error {
|
||||||
ret := _m.Called(userID, email)
|
ret := _m.Called(userID, email)
|
||||||
|
|||||||
@@ -487,10 +487,6 @@
|
|||||||
"id": "api.cloud.request_error",
|
"id": "api.cloud.request_error",
|
||||||
"translation": "Error processing request to CWS."
|
"translation": "Error processing request to CWS."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "api.cloud.subscription.update_error",
|
|
||||||
"translation": "Error updating subscription from webhook."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "api.cloud.teams_limit_reached.create",
|
"id": "api.cloud.teams_limit_reached.create",
|
||||||
"translation": "Unable to create team because teams limit has been reached"
|
"translation": "Unable to create team because teams limit has been reached"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user