[MM-63772] Add LDAP setting to re-add removed members (#30787)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5021fc72c6
Коммит
c2d08b7540
@@ -49,10 +49,14 @@ func syncLdap(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
type LdapSyncOptions struct {
|
||||
IncludeRemovedMembers bool `json:"include_removed_members"`
|
||||
if !c.App.SessionHasPermissionTo(*c.AppContext.Session(), model.PermissionCreateLdapSyncJob) {
|
||||
c.SetPermissionError(model.PermissionCreateLdapSyncJob)
|
||||
return
|
||||
}
|
||||
|
||||
var opts struct {
|
||||
IncludeRemovedMembers *bool `json:"include_removed_members"`
|
||||
}
|
||||
var opts LdapSyncOptions
|
||||
err := json.NewDecoder(r.Body).Decode(&opts)
|
||||
if err != nil {
|
||||
c.Logger.LogM(mlog.MlvlLDAPInfo, "Error decoding LDAP sync options", mlog.Err(err))
|
||||
@@ -61,11 +65,6 @@ func syncLdap(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
auditRec := c.MakeAuditRecord("syncLdap", audit.Fail)
|
||||
defer c.LogAuditRec(auditRec)
|
||||
|
||||
if !c.App.SessionHasPermissionTo(*c.AppContext.Session(), model.PermissionCreateLdapSyncJob) {
|
||||
c.SetPermissionError(model.PermissionCreateLdapSyncJob)
|
||||
return
|
||||
}
|
||||
|
||||
c.App.SyncLdap(c.AppContext, opts.IncludeRemovedMembers)
|
||||
|
||||
auditRec.Success()
|
||||
|
||||
@@ -147,29 +147,29 @@ func TestSyncLdap(t *testing.T) {
|
||||
"StartSynchronizeJob",
|
||||
mock.AnythingOfType("*request.Context"),
|
||||
mock.AnythingOfType("bool"),
|
||||
mock.AnythingOfType("bool"),
|
||||
mock.AnythingOfType("*bool"),
|
||||
).Return(nil, nil)
|
||||
ready := make(chan bool)
|
||||
includeRemovedMembers := false
|
||||
reAddRemovedMembers := false
|
||||
mockCall.RunFn = func(args mock.Arguments) {
|
||||
includeRemovedMembers = args[2].(bool)
|
||||
reAddRemovedMembers = *args[2].(*bool)
|
||||
ready <- true
|
||||
}
|
||||
th.App.Channels().Ldap = ldapMock
|
||||
|
||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||
_, err := client.SyncLdap(context.Background(), false)
|
||||
_, err := client.SyncLdap(context.Background(), model.NewPointer(false))
|
||||
<-ready
|
||||
require.NoError(t, err)
|
||||
require.False(t, includeRemovedMembers)
|
||||
require.False(t, reAddRemovedMembers)
|
||||
|
||||
_, err = client.SyncLdap(context.Background(), true)
|
||||
_, err = client.SyncLdap(context.Background(), model.NewPointer(true))
|
||||
<-ready
|
||||
require.NoError(t, err)
|
||||
require.True(t, includeRemovedMembers)
|
||||
require.True(t, reAddRemovedMembers)
|
||||
})
|
||||
|
||||
resp, err := th.Client.SyncLdap(context.Background(), false)
|
||||
resp, err := th.Client.SyncLdap(context.Background(), model.NewPointer(false))
|
||||
require.Error(t, err)
|
||||
CheckForbiddenStatus(t, resp)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user