MM-38150 Adding playbooks permissions (#19096)

* Add playbooks related permissions.

* Add RolesGrantPermission to pluginapi

* Fixing scopes.

* New defaults.

* Fix defaults

* Fix tests.

* Fix migration.

* More test and migration fixes.

* Need to add everything to system admin too.

* Move to 63

* Feedback fixes.

* Fix system manager editing playbook permissions.
Этот коммит содержится в:
Christopher Speller
2021-12-07 09:43:33 -08:00
коммит произвёл GitHub
родитель 129f0aabd3
Коммит 5ec78546e2
19 изменённых файлов: 670 добавлений и 59 удалений

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

@@ -960,6 +960,11 @@ type API interface {
// Minimum server version: 5.3
HasPermissionToChannel(userID, channelId string, permission *model.Permission) bool
// RolesGrantPermission check if the specified roles grant the specified permission
//
// Minimum server version: 6.3
RolesGrantPermission(roleNames []string, permissionId string) bool
// LogDebug writes a log message to the Mattermost server log file.
// Appropriate context such as the plugin name will already be added as fields so plugins
// do not need to add that info.

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

@@ -1034,6 +1034,13 @@ func (api *apiTimerLayer) HasPermissionToChannel(userID, channelId string, permi
return _returnsA
}
func (api *apiTimerLayer) RolesGrantPermission(roleNames []string, permissionId string) bool {
startTime := timePkg.Now()
_returnsA := api.apiImpl.RolesGrantPermission(roleNames, permissionId)
api.recordTime(startTime, "RolesGrantPermission", true)
return _returnsA
}
func (api *apiTimerLayer) LogDebug(msg string, keyValuePairs ...interface{}) {
startTime := timePkg.Now()
api.apiImpl.LogDebug(msg, keyValuePairs...)

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

@@ -4832,6 +4832,35 @@ func (s *apiRPCServer) HasPermissionToChannel(args *Z_HasPermissionToChannelArgs
return nil
}
type Z_RolesGrantPermissionArgs struct {
A []string
B string
}
type Z_RolesGrantPermissionReturns struct {
A bool
}
func (g *apiRPCClient) RolesGrantPermission(roleNames []string, permissionId string) bool {
_args := &Z_RolesGrantPermissionArgs{roleNames, permissionId}
_returns := &Z_RolesGrantPermissionReturns{}
if err := g.client.Call("Plugin.RolesGrantPermission", _args, _returns); err != nil {
log.Printf("RPC call to RolesGrantPermission API failed: %s", err.Error())
}
return _returns.A
}
func (s *apiRPCServer) RolesGrantPermission(args *Z_RolesGrantPermissionArgs, returns *Z_RolesGrantPermissionReturns) error {
if hook, ok := s.impl.(interface {
RolesGrantPermission(roleNames []string, permissionId string) bool
}); ok {
returns.A = hook.RolesGrantPermission(args.A, args.B)
} else {
return encodableError(fmt.Errorf("API RolesGrantPermission called but not implemented."))
}
return nil
}
type Z_SendMailArgs struct {
A string
B string

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

@@ -3023,6 +3023,20 @@ func (_m *API) RevokeUserAccessToken(tokenID string) *model.AppError {
return r0
}
// RolesGrantPermission provides a mock function with given fields: roleNames, permissionId
func (_m *API) RolesGrantPermission(roleNames []string, permissionId string) bool {
ret := _m.Called(roleNames, permissionId)
var r0 bool
if rf, ok := ret.Get(0).(func([]string, string) bool); ok {
r0 = rf(roleNames, permissionId)
} else {
r0 = ret.Get(0).(bool)
}
return r0
}
// SaveConfig provides a mock function with given fields: config
func (_m *API) SaveConfig(config *model.Config) *model.AppError {
ret := _m.Called(config)