[MM-63772] Add LDAP setting to re-add removed members (#30787)

Этот коммит содержится в:
Ben Schumacher
2025-05-20 11:15:25 +02:00
коммит произвёл GitHub
родитель 5021fc72c6
Коммит c2d08b7540
22 изменённых файлов: 143 добавлений и 101 удалений

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

@@ -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)
}