hunk.code_window: 			c.Logger.Warn("Invalid CWS token", mlog.Err(err))
   			c.Err = err
   		} else {
   			c.AppContext.SetSession(session)
   		}
   	} else if token != "" && c.App.Channels().License() != nil && *c.App.Channels().License().Features.RemoteClusterService && tokenLocation == app.TokenLocationRemoteClusterHeader {
   		// Get the remote cluster
   		if remoteId := c.GetRemoteID(r); remoteId == "" {
   			c.Logger.Warn("Missing remote cluster id") //
  
hunk.labels: keep keep keep keep keep replace keep keep keep
hunk.after_edit: 	} else if token != "" && c.App.Channels().License() != nil && c.App.Channels().License().HasRemoteClusterService() && tokenLocation == app.TokenLocationRemoteClusterHeader {
  
hunk.file_path: web/handlers.go
hunk.type: replace
file: // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
  // See LICENSE.txt for license information.
  
  package einterfaces
  
  import (
  	"github.com/mattermost/mattermost-server/v6/model"
  )
  
  type DataRetentionInterface interface {
  	GetGlobalPolicy() (*model.GlobalRetentionPolicy, *model.AppError)
  	GetPolicies(offset, limit int) (*model.RetentionPolicyWithTeamAndChannelCountsList, *model.AppError)
  	GetPoliciesCount() (int64, *model.AppError)
  	GetPolicy(policyID string) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
  	CreatePolicy(policy *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
  	PatchPolicy(patch *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, *model.AppError)
  	DeletePolicy(policyID string) *model.AppError
  	GetTeamsForPolicy(policyID string, offset, limit int) (*model.TeamsWithCount, *model.AppError)
  	AddTeamsToPolicy(policyID string, teamIDs []string) *model.AppError
  	RemoveTeamsFromPolicy(policyID string, teamIDs []string) *model.AppError
  	GetChannelsForPolicy(policyID string, offset, limit int) (*model.ChannelsWithCount, *model.AppError)
  	AddChannelsToPolicy(policyID string, channelIDs []string) *model.AppError
  	RemoveChannelsFromPolicy(policyID string, channelIDs []string) *model.AppError
  	GetTeamPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForTeamList, *model.AppError)
  	GetChannelPoliciesForUser(userID string, offset, limit int) (*model.RetentionPolicyForChannelList, *model.AppError)
  }
  