[MM-32406] Introduce trace logging level for LDAP messages (#25118)

This commit is contained in:
Ben Schumacher 2023-11-03 08:06:16 +01:00 committed by GitHub
parent ce3b54d23e
commit e8569c91af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 82 additions and 79 deletions

View File

@ -251,7 +251,7 @@ func selfHostedInvoices(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
invoices, err := c.App.Cloud().GetSelfHostedInvoices() invoices, err := c.App.Cloud().GetSelfHostedInvoices(c.AppContext)
if err != nil { if err != nil {
if err.Error() == "404" { if err.Error() == "404" {

View File

@ -83,7 +83,7 @@ func testLdap(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
if err := c.App.TestLdap(); err != nil { if err := c.App.TestLdap(c.AppContext); err != nil {
c.Err = err c.Err = err
return return
} }
@ -112,7 +112,7 @@ func getLdapGroups(c *Context, w http.ResponseWriter, r *http.Request) {
opts.IsConfigured = c.Params.IsConfigured opts.IsConfigured = c.Params.IsConfigured
} }
groups, total, appErr := c.App.GetAllLdapGroupsPage(c.Params.Page, c.Params.PerPage, opts) groups, total, appErr := c.App.GetAllLdapGroupsPage(c.AppContext, c.Params.Page, c.Params.PerPage, opts)
if appErr != nil { if appErr != nil {
c.Err = appErr c.Err = appErr
return return
@ -163,7 +163,7 @@ func linkLdapGroup(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
ldapGroup, appErr := c.App.GetLdapGroup(c.Params.RemoteId) ldapGroup, appErr := c.App.GetLdapGroup(c.AppContext, c.Params.RemoteId)
if appErr != nil { if appErr != nil {
c.Err = appErr c.Err = appErr
return return

View File

@ -165,7 +165,7 @@ type AppIface interface {
FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error) FilterNonGroupTeamMembers(userIDs []string, team *model.Team) ([]string, error)
// GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group // GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group
// filter. // filter.
GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) GetAllLdapGroupsPage(rctx request.CTX, page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)
// GetBot returns the given bot. // GetBot returns the given bot.
GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError) GetBot(botUserId string, includeDeleted bool) (*model.Bot, *model.AppError)
// GetBots returns the requested page of bots. // GetBots returns the requested page of bots.
@ -199,7 +199,7 @@ type AppIface interface {
// GetLastAccessiblePostTime returns CreateAt time(from cache) of the last accessible post as per the cloud limit // GetLastAccessiblePostTime returns CreateAt time(from cache) of the last accessible post as per the cloud limit
GetLastAccessiblePostTime() (int64, *model.AppError) GetLastAccessiblePostTime() (int64, *model.AppError)
// GetLdapGroup retrieves a single LDAP group by the given LDAP group id. // GetLdapGroup retrieves a single LDAP group by the given LDAP group id.
GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) GetLdapGroup(rctx request.CTX, ldapGroupID string) (*model.Group, *model.AppError)
// GetMarketplacePlugins returns a list of plugins from the marketplace-server, // GetMarketplacePlugins returns a list of plugins from the marketplace-server,
// and plugins that are installed locally. // and plugins that are installed locally.
GetMarketplacePlugins(filter *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.AppError) GetMarketplacePlugins(filter *model.MarketplacePluginFilter) ([]*model.MarketplacePlugin, *model.AppError)
@ -1100,7 +1100,7 @@ type AppIface interface {
TestEmail(userID string, cfg *model.Config) *model.AppError TestEmail(userID string, cfg *model.Config) *model.AppError
TestFileStoreConnection() *model.AppError TestFileStoreConnection() *model.AppError
TestFileStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError TestFileStoreConnectionWithConfig(cfg *model.FileSettings) *model.AppError
TestLdap() *model.AppError TestLdap(rctx request.CTX) *model.AppError
TestSiteURL(siteURL string) *model.AppError TestSiteURL(siteURL string) *model.AppError
Timezones() *timezones.Timezones Timezones() *timezones.Timezones
ToggleMuteChannel(c request.CTX, channelID, userID string) (*model.ChannelMember, *model.AppError) ToggleMuteChannel(c request.CTX, channelID, userID string) (*model.ChannelMember, *model.AppError)

View File

@ -35,10 +35,10 @@ func (a *App) SyncLdap(c request.CTX, includeRemovedMembers bool) {
}) })
} }
func (a *App) TestLdap() *model.AppError { func (a *App) TestLdap(rctx request.CTX) *model.AppError {
license := a.Srv().License() license := a.Srv().License()
if ldapI := a.Ldap(); ldapI != nil && license != nil && *license.Features.LDAP && (*a.Config().LdapSettings.Enable || *a.Config().LdapSettings.EnableSync) { if ldapI := a.Ldap(); ldapI != nil && license != nil && *license.Features.LDAP && (*a.Config().LdapSettings.Enable || *a.Config().LdapSettings.EnableSync) {
if err := ldapI.RunTest(); err != nil { if err := ldapI.RunTest(rctx); err != nil {
err.StatusCode = 500 err.StatusCode = 500
return err return err
} }
@ -51,12 +51,12 @@ func (a *App) TestLdap() *model.AppError {
} }
// GetLdapGroup retrieves a single LDAP group by the given LDAP group id. // GetLdapGroup retrieves a single LDAP group by the given LDAP group id.
func (a *App) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) { func (a *App) GetLdapGroup(rctx request.CTX, ldapGroupID string) (*model.Group, *model.AppError) {
var group *model.Group var group *model.Group
if a.Ldap() != nil { if a.Ldap() != nil {
var err *model.AppError var err *model.AppError
group, err = a.Ldap().GetGroup(ldapGroupID) group, err = a.Ldap().GetGroup(rctx, ldapGroupID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -70,13 +70,13 @@ func (a *App) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) {
// GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group // GetAllLdapGroupsPage retrieves all LDAP groups under the configured base DN using the default or configured group
// filter. // filter.
func (a *App) GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) { func (a *App) GetAllLdapGroupsPage(rctx request.CTX, page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) {
var groups []*model.Group var groups []*model.Group
var total int var total int
if a.Ldap() != nil { if a.Ldap() != nil {
var err *model.AppError var err *model.AppError
groups, total, err = a.Ldap().GetAllGroupsPage(page, perPage, opts) groups, total, err = a.Ldap().GetAllGroupsPage(rctx, page, perPage, opts)
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }

View File

@ -4771,7 +4771,7 @@ func (a *OpenTracingAppLayer) GetAllChannelsCount(c request.CTX, opts model.Chan
return resultVar0, resultVar1 return resultVar0, resultVar1
} }
func (a *OpenTracingAppLayer) GetAllLdapGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) { func (a *OpenTracingAppLayer) GetAllLdapGroupsPage(rctx request.CTX, page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) {
origCtx := a.ctx origCtx := a.ctx
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetAllLdapGroupsPage") span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetAllLdapGroupsPage")
@ -4783,7 +4783,7 @@ func (a *OpenTracingAppLayer) GetAllLdapGroupsPage(page int, perPage int, opts m
}() }()
defer span.Finish() defer span.Finish()
resultVar0, resultVar1, resultVar2 := a.app.GetAllLdapGroupsPage(page, perPage, opts) resultVar0, resultVar1, resultVar2 := a.app.GetAllLdapGroupsPage(rctx, page, perPage, opts)
if resultVar2 != nil { if resultVar2 != nil {
span.LogFields(spanlog.Error(resultVar2)) span.LogFields(spanlog.Error(resultVar2))
@ -7232,7 +7232,7 @@ func (a *OpenTracingAppLayer) GetLatestVersion(latestVersionUrl string) (*model.
return resultVar0, resultVar1 return resultVar0, resultVar1
} }
func (a *OpenTracingAppLayer) GetLdapGroup(ldapGroupID string) (*model.Group, *model.AppError) { func (a *OpenTracingAppLayer) GetLdapGroup(rctx request.CTX, ldapGroupID string) (*model.Group, *model.AppError) {
origCtx := a.ctx origCtx := a.ctx
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetLdapGroup") span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.GetLdapGroup")
@ -7244,7 +7244,7 @@ func (a *OpenTracingAppLayer) GetLdapGroup(ldapGroupID string) (*model.Group, *m
}() }()
defer span.Finish() defer span.Finish()
resultVar0, resultVar1 := a.app.GetLdapGroup(ldapGroupID) resultVar0, resultVar1 := a.app.GetLdapGroup(rctx, ldapGroupID)
if resultVar1 != nil { if resultVar1 != nil {
span.LogFields(spanlog.Error(resultVar1)) span.LogFields(spanlog.Error(resultVar1))
@ -16919,7 +16919,7 @@ func (a *OpenTracingAppLayer) TestFileStoreConnectionWithConfig(cfg *model.FileS
return resultVar0 return resultVar0
} }
func (a *OpenTracingAppLayer) TestLdap() *model.AppError { func (a *OpenTracingAppLayer) TestLdap(rctx request.CTX) *model.AppError {
origCtx := a.ctx origCtx := a.ctx
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.TestLdap") span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.TestLdap")
@ -16931,7 +16931,7 @@ func (a *OpenTracingAppLayer) TestLdap() *model.AppError {
}() }()
defer span.Finish() defer span.Finish()
resultVar0 := a.app.TestLdap() resultVar0 := a.app.TestLdap(rctx)
if resultVar0 != nil { if resultVar0 != nil {
span.LogFields(spanlog.Error(resultVar0)) span.LogFields(spanlog.Error(resultVar0))

View File

@ -409,7 +409,7 @@ func (api *PluginAPI) GetLDAPUserAttributes(userID string, attributes []string)
// Only bother running the query if the user's auth service is LDAP or it's SAML and sync is enabled. // Only bother running the query if the user's auth service is LDAP or it's SAML and sync is enabled.
if user.AuthService == model.UserAuthServiceLdap || if user.AuthService == model.UserAuthServiceLdap ||
(user.AuthService == model.UserAuthServiceSaml && *api.app.Config().SamlSettings.EnableSyncWithLdap) { (user.AuthService == model.UserAuthServiceSaml && *api.app.Config().SamlSettings.EnableSyncWithLdap) {
return api.app.Ldap().GetUserAttributes(*user.AuthData, attributes) return api.app.Ldap().GetUserAttributes(api.ctx, *user.AuthData, attributes)
} }
return map[string]string{}, nil return map[string]string{}, nil

View File

@ -96,7 +96,7 @@ func (a *App) generateSupportPacketYaml(c request.CTX) (*model.FileData, error)
var vendorName, vendorVersion string var vendorName, vendorVersion string
if ldapInterface := a.ch.Ldap; a.ch.Ldap != nil { if ldapInterface := a.ch.Ldap; a.ch.Ldap != nil {
vendorName, vendorVersion = ldapInterface.GetVendorNameAndVendorVersion() vendorName, vendorVersion = ldapInterface.GetVendorNameAndVendorVersion(c)
} }
/* Elastic Search */ /* Elastic Search */

View File

@ -5,6 +5,7 @@ package einterfaces
import ( import (
"github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/public/shared/request"
) )
type CloudInterface interface { type CloudInterface interface {
@ -39,7 +40,7 @@ type CloudInterface interface {
ConfirmSelfHostedSignup(req model.SelfHostedConfirmPaymentMethodRequest, requesterEmail string) (*model.SelfHostedSignupConfirmResponse, error) ConfirmSelfHostedSignup(req model.SelfHostedConfirmPaymentMethodRequest, requesterEmail string) (*model.SelfHostedSignupConfirmResponse, error)
ConfirmSelfHostedExpansion(req model.SelfHostedConfirmPaymentMethodRequest, requesterEmail string) (*model.SelfHostedSignupConfirmResponse, error) ConfirmSelfHostedExpansion(req model.SelfHostedConfirmPaymentMethodRequest, requesterEmail string) (*model.SelfHostedSignupConfirmResponse, error)
ConfirmSelfHostedSignupLicenseApplication() error ConfirmSelfHostedSignupLicenseApplication() error
GetSelfHostedInvoices() ([]*model.Invoice, error) GetSelfHostedInvoices(rctx request.CTX) ([]*model.Invoice, error)
GetSelfHostedInvoicePDF(invoiceID string) ([]byte, string, error) GetSelfHostedInvoicePDF(invoiceID string) ([]byte, string, error)
CreateOrUpdateSubscriptionHistoryEvent(userID string, userCount int) (*model.SubscriptionHistory, error) CreateOrUpdateSubscriptionHistoryEvent(userID string, userCount int) (*model.SubscriptionHistory, error)

View File

@ -11,20 +11,20 @@ import (
type LdapInterface interface { type LdapInterface interface {
DoLogin(c request.CTX, id string, password string) (*model.User, *model.AppError) DoLogin(c request.CTX, id string, password string) (*model.User, *model.AppError)
GetUser(c request.CTX, id string) (*model.User, *model.AppError) GetUser(c request.CTX, id string) (*model.User, *model.AppError)
GetUserAttributes(id string, attributes []string) (map[string]string, *model.AppError) GetUserAttributes(rctx request.CTX, id string, attributes []string) (map[string]string, *model.AppError)
CheckPassword(c request.CTX, id string, password string) *model.AppError CheckPassword(c request.CTX, id string, password string) *model.AppError
CheckPasswordAuthData(c request.CTX, authData string, password string) *model.AppError CheckPasswordAuthData(c request.CTX, authData string, password string) *model.AppError
CheckProviderAttributes(c request.CTX, LS *model.LdapSettings, ouser *model.User, patch *model.UserPatch) string CheckProviderAttributes(c request.CTX, LS *model.LdapSettings, ouser *model.User, patch *model.UserPatch) string
SwitchToLdap(c request.CTX, userID, ldapID, ldapPassword string) *model.AppError SwitchToLdap(c request.CTX, userID, ldapID, ldapPassword string) *model.AppError
StartSynchronizeJob(c request.CTX, waitForJobToFinish bool, includeRemovedMembers bool) (*model.Job, *model.AppError) StartSynchronizeJob(c request.CTX, waitForJobToFinish bool, includeRemovedMembers bool) (*model.Job, *model.AppError)
RunTest() *model.AppError RunTest(rctx request.CTX) *model.AppError
GetAllLdapUsers(c request.CTX) ([]*model.User, *model.AppError) GetAllLdapUsers(c request.CTX) ([]*model.User, *model.AppError)
MigrateIDAttribute(c request.CTX, toAttribute string) error MigrateIDAttribute(c request.CTX, toAttribute string) error
GetGroup(groupUID string) (*model.Group, *model.AppError) GetGroup(rctx request.CTX, groupUID string) (*model.Group, *model.AppError)
GetAllGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) GetAllGroupsPage(rctx request.CTX, page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)
FirstLoginSync(c request.CTX, user *model.User, userAuthService, userAuthData, email string) *model.AppError FirstLoginSync(c request.CTX, user *model.User, userAuthService, userAuthData, email string) *model.AppError
UpdateProfilePictureIfNecessary(request.CTX, model.User, model.Session) UpdateProfilePictureIfNecessary(request.CTX, model.User, model.Session)
GetADLdapIdFromSAMLId(c request.CTX, authData string) string GetADLdapIdFromSAMLId(c request.CTX, authData string) string
GetSAMLIdFromADLdapId(c request.CTX, authData string) string GetSAMLIdFromADLdapId(c request.CTX, authData string) string
GetVendorNameAndVendorVersion() (string, string) GetVendorNameAndVendorVersion(rctx request.CTX) (string, string)
} }

View File

@ -6,6 +6,7 @@ package mocks
import ( import (
model "github.com/mattermost/mattermost/server/public/model" model "github.com/mattermost/mattermost/server/public/model"
request "github.com/mattermost/mattermost/server/public/shared/request"
mock "github.com/stretchr/testify/mock" mock "github.com/stretchr/testify/mock"
) )
@ -460,25 +461,25 @@ func (_m *CloudInterface) GetSelfHostedInvoicePDF(invoiceID string) ([]byte, str
return r0, r1, r2 return r0, r1, r2
} }
// GetSelfHostedInvoices provides a mock function with given fields: // GetSelfHostedInvoices provides a mock function with given fields: rctx
func (_m *CloudInterface) GetSelfHostedInvoices() ([]*model.Invoice, error) { func (_m *CloudInterface) GetSelfHostedInvoices(rctx request.CTX) ([]*model.Invoice, error) {
ret := _m.Called() ret := _m.Called(rctx)
var r0 []*model.Invoice var r0 []*model.Invoice
var r1 error var r1 error
if rf, ok := ret.Get(0).(func() ([]*model.Invoice, error)); ok { if rf, ok := ret.Get(0).(func(request.CTX) ([]*model.Invoice, error)); ok {
return rf() return rf(rctx)
} }
if rf, ok := ret.Get(0).(func() []*model.Invoice); ok { if rf, ok := ret.Get(0).(func(request.CTX) []*model.Invoice); ok {
r0 = rf() r0 = rf(rctx)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).([]*model.Invoice) r0 = ret.Get(0).([]*model.Invoice)
} }
} }
if rf, ok := ret.Get(1).(func() error); ok { if rf, ok := ret.Get(1).(func(request.CTX) error); ok {
r1 = rf() r1 = rf(rctx)
} else { } else {
r1 = ret.Error(1) r1 = ret.Error(1)
} }

View File

@ -119,32 +119,32 @@ func (_m *LdapInterface) GetADLdapIdFromSAMLId(c request.CTX, authData string) s
return r0 return r0
} }
// GetAllGroupsPage provides a mock function with given fields: page, perPage, opts // GetAllGroupsPage provides a mock function with given fields: rctx, page, perPage, opts
func (_m *LdapInterface) GetAllGroupsPage(page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) { func (_m *LdapInterface) GetAllGroupsPage(rctx request.CTX, page int, perPage int, opts model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError) {
ret := _m.Called(page, perPage, opts) ret := _m.Called(rctx, page, perPage, opts)
var r0 []*model.Group var r0 []*model.Group
var r1 int var r1 int
var r2 *model.AppError var r2 *model.AppError
if rf, ok := ret.Get(0).(func(int, int, model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)); ok { if rf, ok := ret.Get(0).(func(request.CTX, int, int, model.LdapGroupSearchOpts) ([]*model.Group, int, *model.AppError)); ok {
return rf(page, perPage, opts) return rf(rctx, page, perPage, opts)
} }
if rf, ok := ret.Get(0).(func(int, int, model.LdapGroupSearchOpts) []*model.Group); ok { if rf, ok := ret.Get(0).(func(request.CTX, int, int, model.LdapGroupSearchOpts) []*model.Group); ok {
r0 = rf(page, perPage, opts) r0 = rf(rctx, page, perPage, opts)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).([]*model.Group) r0 = ret.Get(0).([]*model.Group)
} }
} }
if rf, ok := ret.Get(1).(func(int, int, model.LdapGroupSearchOpts) int); ok { if rf, ok := ret.Get(1).(func(request.CTX, int, int, model.LdapGroupSearchOpts) int); ok {
r1 = rf(page, perPage, opts) r1 = rf(rctx, page, perPage, opts)
} else { } else {
r1 = ret.Get(1).(int) r1 = ret.Get(1).(int)
} }
if rf, ok := ret.Get(2).(func(int, int, model.LdapGroupSearchOpts) *model.AppError); ok { if rf, ok := ret.Get(2).(func(request.CTX, int, int, model.LdapGroupSearchOpts) *model.AppError); ok {
r2 = rf(page, perPage, opts) r2 = rf(rctx, page, perPage, opts)
} else { } else {
if ret.Get(2) != nil { if ret.Get(2) != nil {
r2 = ret.Get(2).(*model.AppError) r2 = ret.Get(2).(*model.AppError)
@ -182,25 +182,25 @@ func (_m *LdapInterface) GetAllLdapUsers(c request.CTX) ([]*model.User, *model.A
return r0, r1 return r0, r1
} }
// GetGroup provides a mock function with given fields: groupUID // GetGroup provides a mock function with given fields: rctx, groupUID
func (_m *LdapInterface) GetGroup(groupUID string) (*model.Group, *model.AppError) { func (_m *LdapInterface) GetGroup(rctx request.CTX, groupUID string) (*model.Group, *model.AppError) {
ret := _m.Called(groupUID) ret := _m.Called(rctx, groupUID)
var r0 *model.Group var r0 *model.Group
var r1 *model.AppError var r1 *model.AppError
if rf, ok := ret.Get(0).(func(string) (*model.Group, *model.AppError)); ok { if rf, ok := ret.Get(0).(func(request.CTX, string) (*model.Group, *model.AppError)); ok {
return rf(groupUID) return rf(rctx, groupUID)
} }
if rf, ok := ret.Get(0).(func(string) *model.Group); ok { if rf, ok := ret.Get(0).(func(request.CTX, string) *model.Group); ok {
r0 = rf(groupUID) r0 = rf(rctx, groupUID)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.Group) r0 = ret.Get(0).(*model.Group)
} }
} }
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(request.CTX, string) *model.AppError); ok {
r1 = rf(groupUID) r1 = rf(rctx, groupUID)
} else { } else {
if ret.Get(1) != nil { if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError) r1 = ret.Get(1).(*model.AppError)
@ -252,25 +252,25 @@ func (_m *LdapInterface) GetUser(c request.CTX, id string) (*model.User, *model.
return r0, r1 return r0, r1
} }
// GetUserAttributes provides a mock function with given fields: id, attributes // GetUserAttributes provides a mock function with given fields: rctx, id, attributes
func (_m *LdapInterface) GetUserAttributes(id string, attributes []string) (map[string]string, *model.AppError) { func (_m *LdapInterface) GetUserAttributes(rctx request.CTX, id string, attributes []string) (map[string]string, *model.AppError) {
ret := _m.Called(id, attributes) ret := _m.Called(rctx, id, attributes)
var r0 map[string]string var r0 map[string]string
var r1 *model.AppError var r1 *model.AppError
if rf, ok := ret.Get(0).(func(string, []string) (map[string]string, *model.AppError)); ok { if rf, ok := ret.Get(0).(func(request.CTX, string, []string) (map[string]string, *model.AppError)); ok {
return rf(id, attributes) return rf(rctx, id, attributes)
} }
if rf, ok := ret.Get(0).(func(string, []string) map[string]string); ok { if rf, ok := ret.Get(0).(func(request.CTX, string, []string) map[string]string); ok {
r0 = rf(id, attributes) r0 = rf(rctx, id, attributes)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]string) r0 = ret.Get(0).(map[string]string)
} }
} }
if rf, ok := ret.Get(1).(func(string, []string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(request.CTX, string, []string) *model.AppError); ok {
r1 = rf(id, attributes) r1 = rf(rctx, id, attributes)
} else { } else {
if ret.Get(1) != nil { if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError) r1 = ret.Get(1).(*model.AppError)
@ -280,23 +280,23 @@ func (_m *LdapInterface) GetUserAttributes(id string, attributes []string) (map[
return r0, r1 return r0, r1
} }
// GetVendorNameAndVendorVersion provides a mock function with given fields: // GetVendorNameAndVendorVersion provides a mock function with given fields: rctx
func (_m *LdapInterface) GetVendorNameAndVendorVersion() (string, string) { func (_m *LdapInterface) GetVendorNameAndVendorVersion(rctx request.CTX) (string, string) {
ret := _m.Called() ret := _m.Called(rctx)
var r0 string var r0 string
var r1 string var r1 string
if rf, ok := ret.Get(0).(func() (string, string)); ok { if rf, ok := ret.Get(0).(func(request.CTX) (string, string)); ok {
return rf() return rf(rctx)
} }
if rf, ok := ret.Get(0).(func() string); ok { if rf, ok := ret.Get(0).(func(request.CTX) string); ok {
r0 = rf() r0 = rf(rctx)
} else { } else {
r0 = ret.Get(0).(string) r0 = ret.Get(0).(string)
} }
if rf, ok := ret.Get(1).(func() string); ok { if rf, ok := ret.Get(1).(func(request.CTX) string); ok {
r1 = rf() r1 = rf(rctx)
} else { } else {
r1 = ret.Get(1).(string) r1 = ret.Get(1).(string)
} }
@ -318,13 +318,13 @@ func (_m *LdapInterface) MigrateIDAttribute(c request.CTX, toAttribute string) e
return r0 return r0
} }
// RunTest provides a mock function with given fields: // RunTest provides a mock function with given fields: rctx
func (_m *LdapInterface) RunTest() *model.AppError { func (_m *LdapInterface) RunTest(rctx request.CTX) *model.AppError {
ret := _m.Called() ret := _m.Called(rctx)
var r0 *model.AppError var r0 *model.AppError
if rf, ok := ret.Get(0).(func() *model.AppError); ok { if rf, ok := ret.Get(0).(func(request.CTX) *model.AppError); ok {
r0 = rf() r0 = rf(rctx)
} else { } else {
if ret.Get(0) != nil { if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.AppError) r0 = ret.Get(0).(*model.AppError)

View File

@ -2310,6 +2310,7 @@ type LdapSettings struct {
LoginButtonBorderColor *string `access:"experimental_features"` LoginButtonBorderColor *string `access:"experimental_features"`
LoginButtonTextColor *string `access:"experimental_features"` LoginButtonTextColor *string `access:"experimental_features"`
// Deprecated: Use LogSettings.AdvancedLoggingJSON with the LDAPTrace level instead.
Trace *bool `access:"authentication_ldap"` // telemetry: none Trace *bool `access:"authentication_ldap"` // telemetry: none
} }