[MM-28694] Add MM User information in the CWS request headers (#15824)

* Include user data in the cloud endpoints

Those headers will include the user ID and Email so we can use them
in CWS

* Removed AppError from enterprise/cloud

We're removing the AppError from all the places that don't belong
to the app or api4 packages.

* Remove unused i18n strings

* Move it to the server init of enterprise

Also moved the initialization of the enterprise part in the server after the store is initialized

* Initialize after the store is set in NewServer

The ideal way to do it should be to move the initEnterprise call after
the store is set but that would lead to undesired side-effects so we
initialize the cloud part alone.

Signed-off-by: Mario de Frutos <mario@defrutos.org>
Этот коммит содержится в:
Mario de Frutos Dieguez
2021-03-05 09:23:39 +01:00
коммит произвёл GitHub
родитель 633d82f0ac
Коммит 5203fc8608
8 изменённых файлов: 190 добавлений и 166 удалений

Просмотреть файл

@@ -54,10 +54,9 @@ func getSubscription(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
subscription, appErr := c.App.Cloud().GetSubscription()
if appErr != nil {
c.Err = model.NewAppError("Api4.getSubscription", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
subscription, err := c.App.Cloud().GetSubscription(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.getSubscription", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
@@ -76,7 +75,7 @@ func getSubscriptionStats(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
subscription, appErr := c.App.Cloud().GetSubscription()
subscription, appErr := c.App.Cloud().GetSubscription("")
if appErr != nil {
c.Err = model.NewAppError("Api4.getSubscriptionStats", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
@@ -111,9 +110,9 @@ func getCloudProducts(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
products, appErr := c.App.Cloud().GetCloudProducts()
if appErr != nil {
c.Err = model.NewAppError("Api4.getCloudProducts", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
products, err := c.App.Cloud().GetCloudProducts(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.getCloudProducts", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
@@ -137,9 +136,9 @@ func getCloudCustomer(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
customer, appErr := c.App.Cloud().GetCloudCustomer()
if appErr != nil {
c.Err = model.NewAppError("Api4.getCloudCustomer", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
customer, err := c.App.Cloud().GetCloudCustomer(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.getCloudCustomer", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
@@ -175,7 +174,7 @@ func updateCloudCustomer(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
customer, appErr := c.App.Cloud().UpdateCloudCustomer(customerInfo)
customer, appErr := c.App.Cloud().UpdateCloudCustomer(c.App.Session().UserId, customerInfo)
if appErr != nil {
c.Err = model.NewAppError("Api4.updateCloudCustomer", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
return
@@ -213,7 +212,7 @@ func updateCloudCustomerAddress(c *Context, w http.ResponseWriter, r *http.Reque
return
}
customer, appErr := c.App.Cloud().UpdateCloudCustomerAddress(address)
customer, appErr := c.App.Cloud().UpdateCloudCustomerAddress(c.App.Session().UserId, address)
if appErr != nil {
c.Err = model.NewAppError("Api4.updateCloudCustomerAddress", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
return
@@ -242,9 +241,9 @@ func createCustomerPayment(c *Context, w http.ResponseWriter, r *http.Request) {
auditRec := c.MakeAuditRecord("createCustomerPayment", audit.Fail)
defer c.LogAuditRec(auditRec)
intent, appErr := c.App.Cloud().CreateCustomerPayment()
if appErr != nil {
c.Err = model.NewAppError("Api4.createCustomerPayment", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
intent, err := c.App.Cloud().CreateCustomerPayment(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.createCustomerPayment", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
@@ -285,9 +284,9 @@ func confirmCustomerPayment(c *Context, w http.ResponseWriter, r *http.Request)
return
}
appErr := c.App.Cloud().ConfirmCustomerPayment(confirmRequest)
if appErr != nil {
c.Err = model.NewAppError("Api4.createCustomerPayment", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
err = c.App.Cloud().ConfirmCustomerPayment(c.App.Session().UserId, confirmRequest)
if err != nil {
c.Err = model.NewAppError("Api4.createCustomerPayment", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
@@ -307,7 +306,7 @@ func getInvoicesForSubscription(c *Context, w http.ResponseWriter, r *http.Reque
return
}
invoices, appErr := c.App.Cloud().GetInvoicesForSubscription()
invoices, appErr := c.App.Cloud().GetInvoicesForSubscription(c.App.Session().UserId)
if appErr != nil {
c.Err = model.NewAppError("Api4.getInvoicesForSubscription", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
return
@@ -338,7 +337,7 @@ func getSubscriptionInvoicePDF(c *Context, w http.ResponseWriter, r *http.Reques
return
}
pdfData, filename, appErr := c.App.Cloud().GetInvoicePDF(c.Params.InvoiceId)
pdfData, filename, appErr := c.App.Cloud().GetInvoicePDF(c.App.Session().UserId, c.Params.InvoiceId)
if appErr != nil {
c.Err = model.NewAppError("Api4.getSuscriptionInvoicePDF", "api.cloud.request_error", nil, appErr.Error(), http.StatusInternalServerError)
return
@@ -398,20 +397,20 @@ func sendAdminUpgradeRequestEmail(c *Context, w http.ResponseWriter, r *http.Req
return
}
user, err := c.App.GetUser(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", err.Id, nil, err.Error(), err.StatusCode)
user, appErr := c.App.GetUser(c.App.Session().UserId)
if appErr != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", appErr.Id, nil, appErr.Error(), appErr.StatusCode)
return
}
sub, err := c.App.Cloud().GetSubscription()
sub, err := c.App.Cloud().GetSubscription(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
if err = c.App.SendAdminUpgradeRequestEmail(user.Username, sub, model.InviteLimitation); err != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", err.Id, nil, err.Error(), err.StatusCode)
if appErr = c.App.SendAdminUpgradeRequestEmail(user.Username, sub, model.InviteLimitation); appErr != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", appErr.Id, nil, appErr.Error(), appErr.StatusCode)
return
}
@@ -424,14 +423,14 @@ func sendAdminUpgradeRequestEmailOnJoin(c *Context, w http.ResponseWriter, r *ht
return
}
sub, err := c.App.Cloud().GetSubscription()
sub, err := c.App.Cloud().GetSubscription("")
if err != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmailOnJoin", "api.cloud.request_error", nil, err.Error(), http.StatusInternalServerError)
return
}
if err = c.App.SendAdminUpgradeRequestEmail("", sub, model.JoinLimitation); err != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", err.Id, nil, err.Error(), err.StatusCode)
if appErr := c.App.SendAdminUpgradeRequestEmail("", sub, model.JoinLimitation); appErr != nil {
c.Err = model.NewAppError("Api4.sendAdminUpgradeRequestEmail", appErr.Id, nil, appErr.Error(), appErr.StatusCode)
return
}

Просмотреть файл

@@ -1206,9 +1206,14 @@ func inviteUsersToTeam(c *Context, w http.ResponseWriter, r *http.Request) {
cloudUserLimit := *c.App.Config().ExperimentalSettings.CloudUserLimit
var invitesOverLimit []*model.EmailInviteWithError
if c.App.Srv().License() != nil && *c.App.Srv().License().Features.Cloud && cloudUserLimit > 0 {
subscription, subErr := c.App.Cloud().GetSubscription()
subscription, subErr := c.App.Cloud().GetSubscription(c.App.Session().UserId)
if subErr != nil {
c.Err = subErr
c.Err = model.NewAppError(
"Api4.inviteUsersToTeam",
"api.team.cloud.subscription.error",
nil,
subErr.Error(),
http.StatusInternalServerError)
return
}
if subscription == nil || subscription.IsPaidTier != "true" {
@@ -1294,9 +1299,14 @@ func inviteGuestsToChannels(c *Context, w http.ResponseWriter, r *http.Request)
cloudUserLimit := *c.App.Config().ExperimentalSettings.CloudUserLimit
var invitesOverLimit []*model.EmailInviteWithError
if c.App.Srv().License() != nil && *c.App.Srv().License().Features.Cloud && cloudUserLimit > 0 && c.IsSystemAdmin() {
subscription, subErr := c.App.Cloud().GetSubscription()
if subErr != nil {
c.Err = subErr
subscription, err := c.App.Cloud().GetSubscription(c.App.Session().UserId)
if err != nil {
c.Err = model.NewAppError(
"Api4.inviteGuestsToChannel",
"api.team.cloud.subscription.error",
nil,
err.Error(),
http.StatusInternalServerError)
return
}
if subscription == nil || subscription.IsPaidTier != "true" {

Просмотреть файл

@@ -84,9 +84,14 @@ func (a *App) CheckAndSendUserLimitWarningEmails() *model.AppError {
return nil
}
subscription, subErr := a.Cloud().GetSubscription()
if subErr != nil {
return subErr
subscription, err := a.Cloud().GetSubscription(a.Session().UserId)
if err != nil {
return model.NewAppError(
"app.CheckAndSendUserLimitWarningEmails",
"api.cloud.get_subscription.error",
nil,
err.Error(),
http.StatusInternalServerError)
}
if subscription != nil && subscription.IsPaidTier == "true" {
@@ -101,21 +106,40 @@ func (a *App) CheckAndSendUserLimitWarningEmails() *model.AppError {
if remainingUsers > 0 {
return nil
}
sysAdmins, err := a.getSysAdminsEmailRecipients()
if err != nil {
return err
sysAdmins, appErr := a.getSysAdminsEmailRecipients()
if appErr != nil {
return model.NewAppError(
"app.CheckAndSendUserLimitWarningEmails",
"api.cloud.get_admins_emails.error",
nil,
appErr.Error(),
http.StatusInternalServerError)
}
// -1 means they are 1 user over the limit - we only want to send the email for the 11th user
if remainingUsers == -1 {
// Over limit by 1 user
for admin := range sysAdmins {
a.Srv().EmailService.SendOverUserLimitWarningEmail(sysAdmins[admin].Email, sysAdmins[admin].Locale, *a.Config().ServiceSettings.SiteURL)
_, appErr := a.Srv().EmailService.SendOverUserLimitWarningEmail(sysAdmins[admin].Email, sysAdmins[admin].Locale, *a.Config().ServiceSettings.SiteURL)
if appErr != nil {
a.Log().Error(
"Error sending user limit warning email to admin",
mlog.String("username", sysAdmins[admin].Username),
mlog.Err(err),
)
}
}
} else if remainingUsers == 0 {
// At limit
for admin := range sysAdmins {
a.Srv().EmailService.SendAtUserLimitWarningEmail(sysAdmins[admin].Email, sysAdmins[admin].Locale, *a.Config().ServiceSettings.SiteURL)
_, appErr := a.Srv().EmailService.SendAtUserLimitWarningEmail(sysAdmins[admin].Email, sysAdmins[admin].Locale, *a.Config().ServiceSettings.SiteURL)
if appErr != nil {
a.Log().Error(
"Error sending user limit warning email to admin",
mlog.String("username", sysAdmins[admin].Username),
mlog.Err(err),
)
}
}
}
return nil

Просмотреть файл

@@ -150,9 +150,9 @@ func RegisterMessageExportInterface(f func(*Server) einterfaces.MessageExportInt
messageExportInterface = f
}
var cloudInterface func(*App) einterfaces.CloudInterface
var cloudInterface func(*Server) einterfaces.CloudInterface
func RegisterCloudInterface(f func(*App) einterfaces.CloudInterface) {
func RegisterCloudInterface(f func(*Server) einterfaces.CloudInterface) {
cloudInterface = f
}
@@ -217,7 +217,4 @@ func (a *App) initEnterprise() {
}
})
}
if cloudInterface != nil {
a.srv.Cloud = cloudInterface(a)
}
}

Просмотреть файл

@@ -416,6 +416,14 @@ func NewServer(options ...Option) (*Server, error) {
})
// This enterprise init should happen after the store is set
// but we don't want to move the s.initEnterprise() call because
// we had side-effects with that in the past and needs further
// investigation
if cloudInterface != nil {
s.Cloud = cloudInterface(s)
}
s.telemetryService = telemetry.New(s, s.Store, s.SearchEngine, s.Log)
emailService, err := NewEmailService(s)

Просмотреть файл

@@ -8,16 +8,16 @@ import (
)
type CloudInterface interface {
GetCloudProducts() ([]*model.Product, *model.AppError)
GetCloudProducts(userID string) ([]*model.Product, error)
CreateCustomerPayment() (*model.StripeSetupIntent, *model.AppError)
ConfirmCustomerPayment(*model.ConfirmPaymentMethodRequest) *model.AppError
CreateCustomerPayment(userID string) (*model.StripeSetupIntent, error)
ConfirmCustomerPayment(userID string, confirmRequest *model.ConfirmPaymentMethodRequest) error
GetCloudCustomer() (*model.CloudCustomer, *model.AppError)
UpdateCloudCustomer(customerInfo *model.CloudCustomerInfo) (*model.CloudCustomer, *model.AppError)
UpdateCloudCustomerAddress(address *model.Address) (*model.CloudCustomer, *model.AppError)
GetCloudCustomer(userID string) (*model.CloudCustomer, error)
UpdateCloudCustomer(userID string, customerInfo *model.CloudCustomerInfo) (*model.CloudCustomer, error)
UpdateCloudCustomerAddress(userID string, address *model.Address) (*model.CloudCustomer, error)
GetSubscription() (*model.Subscription, *model.AppError)
GetInvoicesForSubscription() ([]*model.Invoice, *model.AppError)
GetInvoicePDF(invoiceID string) ([]byte, string, *model.AppError)
GetSubscription(userID string) (*model.Subscription, error)
GetInvoicesForSubscription(userID string) ([]*model.Invoice, error)
GetInvoicePDF(userID, invoiceID string) ([]byte, string, error)
}

Просмотреть файл

@@ -14,104 +14,96 @@ type CloudInterface struct {
mock.Mock
}
// ConfirmCustomerPayment provides a mock function with given fields: _a0
func (_m *CloudInterface) ConfirmCustomerPayment(_a0 *model.ConfirmPaymentMethodRequest) *model.AppError {
ret := _m.Called(_a0)
// ConfirmCustomerPayment provides a mock function with given fields: userID, confirmRequest
func (_m *CloudInterface) ConfirmCustomerPayment(userID string, confirmRequest *model.ConfirmPaymentMethodRequest) error {
ret := _m.Called(userID, confirmRequest)
var r0 *model.AppError
if rf, ok := ret.Get(0).(func(*model.ConfirmPaymentMethodRequest) *model.AppError); ok {
r0 = rf(_a0)
var r0 error
if rf, ok := ret.Get(0).(func(string, *model.ConfirmPaymentMethodRequest) error); ok {
r0 = rf(userID, confirmRequest)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.AppError)
}
r0 = ret.Error(0)
}
return r0
}
// CreateCustomerPayment provides a mock function with given fields:
func (_m *CloudInterface) CreateCustomerPayment() (*model.StripeSetupIntent, *model.AppError) {
ret := _m.Called()
// CreateCustomerPayment provides a mock function with given fields: userID
func (_m *CloudInterface) CreateCustomerPayment(userID string) (*model.StripeSetupIntent, error) {
ret := _m.Called(userID)
var r0 *model.StripeSetupIntent
if rf, ok := ret.Get(0).(func() *model.StripeSetupIntent); ok {
r0 = rf()
if rf, ok := ret.Get(0).(func(string) *model.StripeSetupIntent); ok {
r0 = rf(userID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.StripeSetupIntent)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func() *model.AppError); ok {
r1 = rf()
var r1 error
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(userID)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// GetCloudCustomer provides a mock function with given fields:
func (_m *CloudInterface) GetCloudCustomer() (*model.CloudCustomer, *model.AppError) {
ret := _m.Called()
// GetCloudCustomer provides a mock function with given fields: userID
func (_m *CloudInterface) GetCloudCustomer(userID string) (*model.CloudCustomer, error) {
ret := _m.Called(userID)
var r0 *model.CloudCustomer
if rf, ok := ret.Get(0).(func() *model.CloudCustomer); ok {
r0 = rf()
if rf, ok := ret.Get(0).(func(string) *model.CloudCustomer); ok {
r0 = rf(userID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.CloudCustomer)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func() *model.AppError); ok {
r1 = rf()
var r1 error
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(userID)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// GetCloudProducts provides a mock function with given fields:
func (_m *CloudInterface) GetCloudProducts() ([]*model.Product, *model.AppError) {
ret := _m.Called()
// GetCloudProducts provides a mock function with given fields: userID
func (_m *CloudInterface) GetCloudProducts(userID string) ([]*model.Product, error) {
ret := _m.Called(userID)
var r0 []*model.Product
if rf, ok := ret.Get(0).(func() []*model.Product); ok {
r0 = rf()
if rf, ok := ret.Get(0).(func(string) []*model.Product); ok {
r0 = rf(userID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*model.Product)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func() *model.AppError); ok {
r1 = rf()
var r1 error
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(userID)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// GetInvoicePDF provides a mock function with given fields: invoiceID
func (_m *CloudInterface) GetInvoicePDF(invoiceID string) ([]byte, string, *model.AppError) {
ret := _m.Called(invoiceID)
// GetInvoicePDF provides a mock function with given fields: userID, invoiceID
func (_m *CloudInterface) GetInvoicePDF(userID string, invoiceID string) ([]byte, string, error) {
ret := _m.Called(userID, invoiceID)
var r0 []byte
if rf, ok := ret.Get(0).(func(string) []byte); ok {
r0 = rf(invoiceID)
if rf, ok := ret.Get(0).(func(string, string) []byte); ok {
r0 = rf(userID, invoiceID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]byte)
@@ -119,119 +111,109 @@ func (_m *CloudInterface) GetInvoicePDF(invoiceID string) ([]byte, string, *mode
}
var r1 string
if rf, ok := ret.Get(1).(func(string) string); ok {
r1 = rf(invoiceID)
if rf, ok := ret.Get(1).(func(string, string) string); ok {
r1 = rf(userID, invoiceID)
} else {
r1 = ret.Get(1).(string)
}
var r2 *model.AppError
if rf, ok := ret.Get(2).(func(string) *model.AppError); ok {
r2 = rf(invoiceID)
var r2 error
if rf, ok := ret.Get(2).(func(string, string) error); ok {
r2 = rf(userID, invoiceID)
} else {
if ret.Get(2) != nil {
r2 = ret.Get(2).(*model.AppError)
}
r2 = ret.Error(2)
}
return r0, r1, r2
}
// GetInvoicesForSubscription provides a mock function with given fields:
func (_m *CloudInterface) GetInvoicesForSubscription() ([]*model.Invoice, *model.AppError) {
ret := _m.Called()
// GetInvoicesForSubscription provides a mock function with given fields: userID
func (_m *CloudInterface) GetInvoicesForSubscription(userID string) ([]*model.Invoice, error) {
ret := _m.Called(userID)
var r0 []*model.Invoice
if rf, ok := ret.Get(0).(func() []*model.Invoice); ok {
r0 = rf()
if rf, ok := ret.Get(0).(func(string) []*model.Invoice); ok {
r0 = rf(userID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]*model.Invoice)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func() *model.AppError); ok {
r1 = rf()
var r1 error
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(userID)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// GetSubscription provides a mock function with given fields:
func (_m *CloudInterface) GetSubscription() (*model.Subscription, *model.AppError) {
ret := _m.Called()
// GetSubscription provides a mock function with given fields: userID
func (_m *CloudInterface) GetSubscription(userID string) (*model.Subscription, error) {
ret := _m.Called(userID)
var r0 *model.Subscription
if rf, ok := ret.Get(0).(func() *model.Subscription); ok {
r0 = rf()
if rf, ok := ret.Get(0).(func(string) *model.Subscription); ok {
r0 = rf(userID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.Subscription)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func() *model.AppError); ok {
r1 = rf()
var r1 error
if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(userID)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// UpdateCloudCustomer provides a mock function with given fields: customerInfo
func (_m *CloudInterface) UpdateCloudCustomer(customerInfo *model.CloudCustomerInfo) (*model.CloudCustomer, *model.AppError) {
ret := _m.Called(customerInfo)
// UpdateCloudCustomer provides a mock function with given fields: userID, customerInfo
func (_m *CloudInterface) UpdateCloudCustomer(userID string, customerInfo *model.CloudCustomerInfo) (*model.CloudCustomer, error) {
ret := _m.Called(userID, customerInfo)
var r0 *model.CloudCustomer
if rf, ok := ret.Get(0).(func(*model.CloudCustomerInfo) *model.CloudCustomer); ok {
r0 = rf(customerInfo)
if rf, ok := ret.Get(0).(func(string, *model.CloudCustomerInfo) *model.CloudCustomer); ok {
r0 = rf(userID, customerInfo)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.CloudCustomer)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(*model.CloudCustomerInfo) *model.AppError); ok {
r1 = rf(customerInfo)
var r1 error
if rf, ok := ret.Get(1).(func(string, *model.CloudCustomerInfo) error); ok {
r1 = rf(userID, customerInfo)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1
}
// UpdateCloudCustomerAddress provides a mock function with given fields: address
func (_m *CloudInterface) UpdateCloudCustomerAddress(address *model.Address) (*model.CloudCustomer, *model.AppError) {
ret := _m.Called(address)
// UpdateCloudCustomerAddress provides a mock function with given fields: userID, address
func (_m *CloudInterface) UpdateCloudCustomerAddress(userID string, address *model.Address) (*model.CloudCustomer, error) {
ret := _m.Called(userID, address)
var r0 *model.CloudCustomer
if rf, ok := ret.Get(0).(func(*model.Address) *model.CloudCustomer); ok {
r0 = rf(address)
if rf, ok := ret.Get(0).(func(string, *model.Address) *model.CloudCustomer); ok {
r0 = rf(userID, address)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.CloudCustomer)
}
}
var r1 *model.AppError
if rf, ok := ret.Get(1).(func(*model.Address) *model.AppError); ok {
r1 = rf(address)
var r1 error
if rf, ok := ret.Get(1).(func(string, *model.Address) error); ok {
r1 = rf(userID, address)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
r1 = ret.Error(1)
}
return r0, r1

Просмотреть файл

@@ -479,6 +479,14 @@
"id": "api.cloud.app_error",
"translation": "Internal error during cloud api request."
},
{
"id": "api.cloud.get_admins_emails.error",
"translation": "Error getting system admins email."
},
{
"id": "api.cloud.get_subscription.error",
"translation": "Error getting cloud subscription."
},
{
"id": "api.cloud.license_error",
"translation": "Your license does not support cloud requests."
@@ -2434,6 +2442,10 @@
"id": "api.team.add_user_to_team_from_invite.guest.app_error",
"translation": "Guests are restricted from joining a team via an invite link. Please request a guest email invitation to the team."
},
{
"id": "api.team.cloud.subscription.error",
"translation": "Error getting cloud subscription"
},
{
"id": "api.team.demote_user_to_guest.disabled.error",
"translation": "Guest accounts are disabled."
@@ -6247,16 +6259,8 @@
"translation": " attached a file."
},
{
"id": "ent.cloud.authentication_failed",
"translation": "Unable to authenticate to CWS"
},
{
"id": "ent.cloud.json_encode.error",
"translation": "Internal error marshaling request to CWS"
},
{
"id": "ent.cloud.request_error",
"translation": "Error processing request to CWS"
"id": "ent.cloud.subscription.error",
"translation": "Error getting cloud subscription"
},
{
"id": "ent.cluster.404.app_error",