github.com/adacta-ru/mattermost-server@v5.11.1+incompatible/app/scheme.go (about)

     1  // Copyright (c) 2018-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package app
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"github.com/mattermost/mattermost-server/model"
    10  )
    11  
    12  func (a *App) GetScheme(id string) (*model.Scheme, *model.AppError) {
    13  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    14  		return nil, err
    15  	}
    16  
    17  	result := <-a.Srv.Store.Scheme().Get(id)
    18  	if result.Err != nil {
    19  		return nil, result.Err
    20  	}
    21  	return result.Data.(*model.Scheme), nil
    22  }
    23  
    24  func (a *App) GetSchemeByName(name string) (*model.Scheme, *model.AppError) {
    25  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	result := <-a.Srv.Store.Scheme().GetByName(name)
    30  	if result.Err != nil {
    31  		return nil, result.Err
    32  	}
    33  	return result.Data.(*model.Scheme), nil
    34  }
    35  
    36  func (a *App) GetSchemesPage(scope string, page int, perPage int) ([]*model.Scheme, *model.AppError) {
    37  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    38  		return nil, err
    39  	}
    40  
    41  	return a.GetSchemes(scope, page*perPage, perPage)
    42  }
    43  
    44  func (a *App) GetSchemes(scope string, offset int, limit int) ([]*model.Scheme, *model.AppError) {
    45  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	result := <-a.Srv.Store.Scheme().GetAllPage(scope, offset, limit)
    50  	if result.Err != nil {
    51  		return nil, result.Err
    52  	}
    53  	return result.Data.([]*model.Scheme), nil
    54  }
    55  
    56  func (a *App) CreateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) {
    57  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    58  		return nil, err
    59  	}
    60  
    61  	// Clear any user-provided values for trusted properties.
    62  	scheme.DefaultTeamAdminRole = ""
    63  	scheme.DefaultTeamUserRole = ""
    64  	scheme.DefaultChannelAdminRole = ""
    65  	scheme.DefaultChannelUserRole = ""
    66  	scheme.CreateAt = 0
    67  	scheme.UpdateAt = 0
    68  	scheme.DeleteAt = 0
    69  
    70  	result := <-a.Srv.Store.Scheme().Save(scheme)
    71  	if result.Err != nil {
    72  		return nil, result.Err
    73  	}
    74  	return scheme, nil
    75  }
    76  
    77  func (a *App) PatchScheme(scheme *model.Scheme, patch *model.SchemePatch) (*model.Scheme, *model.AppError) {
    78  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    79  		return nil, err
    80  	}
    81  
    82  	scheme.Patch(patch)
    83  	scheme, err := a.UpdateScheme(scheme)
    84  	if err != nil {
    85  		return nil, err
    86  	}
    87  
    88  	return scheme, err
    89  }
    90  
    91  func (a *App) UpdateScheme(scheme *model.Scheme) (*model.Scheme, *model.AppError) {
    92  	if err := a.IsPhase2MigrationCompleted(); err != nil {
    93  		return nil, err
    94  	}
    95  
    96  	result := <-a.Srv.Store.Scheme().Save(scheme)
    97  	if result.Err != nil {
    98  		return nil, result.Err
    99  	}
   100  	return scheme, nil
   101  }
   102  
   103  func (a *App) DeleteScheme(schemeId string) (*model.Scheme, *model.AppError) {
   104  	if err := a.IsPhase2MigrationCompleted(); err != nil {
   105  		return nil, err
   106  	}
   107  
   108  	result := <-a.Srv.Store.Scheme().Delete(schemeId)
   109  	if result.Err != nil {
   110  		return nil, result.Err
   111  	}
   112  	return result.Data.(*model.Scheme), nil
   113  }
   114  
   115  func (a *App) GetTeamsForSchemePage(scheme *model.Scheme, page int, perPage int) ([]*model.Team, *model.AppError) {
   116  	if err := a.IsPhase2MigrationCompleted(); err != nil {
   117  		return nil, err
   118  	}
   119  
   120  	return a.GetTeamsForScheme(scheme, page*perPage, perPage)
   121  }
   122  
   123  func (a *App) GetTeamsForScheme(scheme *model.Scheme, offset int, limit int) ([]*model.Team, *model.AppError) {
   124  	if err := a.IsPhase2MigrationCompleted(); err != nil {
   125  		return nil, err
   126  	}
   127  
   128  	result := <-a.Srv.Store.Team().GetTeamsByScheme(scheme.Id, offset, limit)
   129  	if result.Err != nil {
   130  		return nil, result.Err
   131  	}
   132  	return result.Data.([]*model.Team), nil
   133  }
   134  
   135  func (a *App) GetChannelsForSchemePage(scheme *model.Scheme, page int, perPage int) (model.ChannelList, *model.AppError) {
   136  	if err := a.IsPhase2MigrationCompleted(); err != nil {
   137  		return nil, err
   138  	}
   139  
   140  	return a.GetChannelsForScheme(scheme, page*perPage, perPage)
   141  }
   142  
   143  func (a *App) GetChannelsForScheme(scheme *model.Scheme, offset int, limit int) (model.ChannelList, *model.AppError) {
   144  	if err := a.IsPhase2MigrationCompleted(); err != nil {
   145  		return nil, err
   146  	}
   147  	result := <-a.Srv.Store.Channel().GetChannelsByScheme(scheme.Id, offset, limit)
   148  	if result.Err != nil {
   149  		return nil, result.Err
   150  	}
   151  	return result.Data.(model.ChannelList), nil
   152  }
   153  
   154  func (a *App) IsPhase2MigrationCompleted() *model.AppError {
   155  	if a.Srv.phase2PermissionsMigrationComplete {
   156  		return nil
   157  	}
   158  
   159  	if result := <-a.Srv.Store.System().GetByName(model.MIGRATION_KEY_ADVANCED_PERMISSIONS_PHASE_2); result.Err != nil {
   160  		return model.NewAppError("App.IsPhase2MigrationCompleted", "app.schemes.is_phase_2_migration_completed.not_completed.app_error", nil, result.Err.Error(), http.StatusNotImplemented)
   161  	}
   162  
   163  	a.Srv.phase2PermissionsMigrationComplete = true
   164  
   165  	return nil
   166  }
   167  
   168  func (a *App) SchemesIterator(batchSize int) func() []*model.Scheme {
   169  	offset := 0
   170  	return func() []*model.Scheme {
   171  		result := <-a.Srv.Store.Scheme().GetAllPage("", offset, batchSize)
   172  		if result.Err != nil {
   173  			return []*model.Scheme{}
   174  		}
   175  		offset += batchSize
   176  		return result.Data.([]*model.Scheme)
   177  	}
   178  }