[MM-34838] Remove Ancillary Permissions That Are Purposefully Being Removed (#17466)

* remove ancillary permissions

* Start writing tests

* Move Ancillary Permissions to FrontEnd

* remove function

* remove test

* clean up

* fix comment

* Update api4/permission.go

Co-authored-by: Martin Kraft <martinkraft@gmail.com>

* Update api4/permission.go

* Update api4/permission.go

* license info

* Add Tests

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Martin Kraft <martinkraft@gmail.com>
Этот коммит содержится в:
Hossein
2021-04-21 11:35:47 -04:00
коммит произвёл GitHub
родитель 28ff4dc8d0
Коммит a1a8f00957
5 изменённых файлов: 97 добавлений и 3 удалений

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

@@ -131,6 +131,8 @@ type Routes struct {
RemoteCluster *mux.Router // 'api/v4/remotecluster'
SharedChannels *mux.Router // 'api/v4/sharedchannels'
Permissions *mux.Router // 'api/v4/permissions'
}
type API struct {
@@ -250,6 +252,8 @@ func Init(configservice configservice.ConfigService, globalOptionsFunc app.AppOp
api.BaseRoutes.RemoteCluster = api.BaseRoutes.ApiRoot.PathPrefix("/remotecluster").Subrouter()
api.BaseRoutes.SharedChannels = api.BaseRoutes.ApiRoot.PathPrefix("/sharedchannels").Subrouter()
api.BaseRoutes.Permissions = api.BaseRoutes.ApiRoot.PathPrefix("/permissions").Subrouter()
api.InitUser()
api.InitBot()
api.InitTeam()
@@ -289,6 +293,7 @@ func Init(configservice configservice.ConfigService, globalOptionsFunc app.AppOp
api.InitImport()
api.InitRemoteCluster()
api.InitSharedChannels()
api.InitPermissions()
api.InitExport()
root.Handle("/api/v4/{anything:.*}", http.HandlerFunc(api.Handle404))

33
api4/permission.go Обычный файл
Просмотреть файл

@@ -0,0 +1,33 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package api4
import (
"encoding/json"
"net/http"
"strings"
"github.com/mattermost/mattermost-server/v5/model"
)
func (api *API) InitPermissions() {
api.BaseRoutes.Permissions.Handle("/ancillary", api.ApiSessionRequired(appendAncillaryPermissions)).Methods("GET")
}
func appendAncillaryPermissions(c *Context, w http.ResponseWriter, r *http.Request) {
keys, ok := r.URL.Query()["subsection_permissions"]
if !ok || len(keys[0]) < 1 {
c.SetInvalidUrlParam("subsection_permissions")
return
}
permissions := strings.Split(keys[0], ",")
b, err := json.Marshal(model.AddAncillaryPermissions(permissions))
if err != nil {
c.SetJSONEncodingError()
return
}
w.Write(b)
}

42
api4/permissions_test.go Обычный файл
Просмотреть файл

@@ -0,0 +1,42 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package api4
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/mattermost/mattermost-server/v5/model"
)
func TestGetAncillaryPermissions(t *testing.T) {
th := Setup(t).InitBasic()
defer th.TearDown()
var subsectionPermissions []string
var expectedAncillaryPermissions []string
t.Run("Valid Case, Passing in SubSection Permissions", func(t *testing.T) {
subsectionPermissions = []string{model.PERMISSION_SYSCONSOLE_READ_REPORTING_SITE_STATISTICS.Id}
expectedAncillaryPermissions = []string{model.PERMISSION_GET_ANALYTICS.Id}
actualAncillaryPermissions, resp := th.Client.GetAncillaryPermissions(subsectionPermissions)
CheckNoError(t, resp)
assert.Equal(t, append(subsectionPermissions, expectedAncillaryPermissions...), actualAncillaryPermissions)
})
t.Run("Invalid Case, Passing in SubSection Permissions That Don't Exist", func(t *testing.T) {
subsectionPermissions = []string{"All", "The", "Things", "She", "Said", "Running", "Through", "My", "Head"}
expectedAncillaryPermissions = []string{}
actualAncillaryPermissions, resp := th.Client.GetAncillaryPermissions(subsectionPermissions)
CheckNoError(t, resp)
assert.Equal(t, append(subsectionPermissions, expectedAncillaryPermissions...), actualAncillaryPermissions)
})
t.Run("Invalid Case, Passing in nothing", func(t *testing.T) {
subsectionPermissions = []string{}
expectedAncillaryPermissions = []string{}
_, resp := th.Client.GetAncillaryPermissions(subsectionPermissions)
CheckBadRequestStatus(t, resp)
})
}

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

@@ -163,9 +163,6 @@ func patchRole(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
ancillaryPermissions := model.AddAncillaryPermissions(*patch.Permissions)
*patch.Permissions = append(*patch.Permissions, ancillaryPermissions...)
*patch.Permissions = model.UniqueStrings(*patch.Permissions)
}