diff --git a/app/channel.go b/app/channel.go index 32950de98d..6ad454a756 100644 --- a/app/channel.go +++ b/app/channel.go @@ -696,7 +696,7 @@ func (a *App) GetTeamSchemeChannelRoles(teamId string) (guestRoleName, userRoleN return } -// PatchChannelModerationsForChannel Gets a channels ChannelModerations from either the higherScoped roles or from the channel scheme roles. +// GetChannelModerationsForChannel Gets a channels ChannelModerations from either the higherScoped roles or from the channel scheme roles. func (a *App) GetChannelModerationsForChannel(channel *model.Channel) ([]*model.ChannelModeration, *model.AppError) { guestRoleName, memberRoleName, _, _ := a.GetSchemeRolesForChannel(channel.Id) memberRole, err := a.GetRoleByName(memberRoleName) @@ -753,6 +753,7 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM if _, err = a.CreateChannelScheme(channel); err != nil { return nil, err } + mlog.Info("Permission scheme created.", mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) } guestRoleName, memberRoleName, _, _ := a.GetSchemeRolesForChannel(channel.Id) @@ -769,6 +770,25 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM memberRolePatch := memberRole.RolePatchFromChannelModerationsPatch(channelModerationsPatch, "members") guestRolePatch := guestRole.RolePatchFromChannelModerationsPatch(channelModerationsPatch, "guests") + for _, channelModerationPatch := range channelModerationsPatch { + permissionModified := *channelModerationPatch.Name + if channelModerationPatch.Roles.Guests != nil && utils.StringInSlice(permissionModified, model.ChannelModeratedPermissionsChangedByPatch(guestRole, guestRolePatch)) { + if *channelModerationPatch.Roles.Guests { + mlog.Info("Permission enabled for guests.", mlog.String("permission", permissionModified), mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) + } else { + mlog.Info("Permission disabled for guests.", mlog.String("permission", permissionModified), mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) + } + } + + if channelModerationPatch.Roles.Members != nil && utils.StringInSlice(permissionModified, model.ChannelModeratedPermissionsChangedByPatch(memberRole, memberRolePatch)) { + if *channelModerationPatch.Roles.Members { + mlog.Info("Permission enabled for members.", mlog.String("permission", permissionModified), mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) + } else { + mlog.Info("Permission disabled for members.", mlog.String("permission", permissionModified), mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) + } + } + } + memberRolePermissionsUnmodified := len(model.ChannelModeratedPermissionsChangedByPatch(higherScopedMemberRole, memberRolePatch)) == 0 guestRolePermissionsUnmodified := len(model.ChannelModeratedPermissionsChangedByPatch(higherScopedGuestRole, guestRolePatch)) == 0 if memberRolePermissionsUnmodified && guestRolePermissionsUnmodified { @@ -778,6 +798,7 @@ func (a *App) PatchChannelModerationsForChannel(channel *model.Channel, channelM } memberRole = higherScopedMemberRole guestRole = higherScopedGuestRole + mlog.Info("Permission scheme deleted.", mlog.String("channel_id", channel.Id), mlog.String("channel_name", channel.Name)) } else { memberRole, err = a.PatchRole(memberRole, memberRolePatch) if err != nil {