[MM-21359] Add extra permission check when updating an OAuth app (#13445)

* Add permission check

* Add additional check in tests
Этот коммит содержится в:
Claudio Costa
2020-01-02 20:56:09 +01:00
коммит произвёл GitHub
родитель f75c8c7c9f
Коммит 7a6c0f607b
2 изменённых файлов: 35 добавлений и 0 удалений

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

@@ -87,6 +87,10 @@ func updateOAuthApp(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if !c.App.SessionHasPermissionTo(c.App.Session, model.PERMISSION_MANAGE_SYSTEM) {
oauthApp.IsTrusted = oldOauthApp.IsTrusted
}
updatedOauthApp, err := c.App.UpdateOauthApp(oldOauthApp, oauthApp)
if err != nil {
c.Err = err

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

@@ -154,6 +154,37 @@ func TestUpdateOAuthApp(t *testing.T) {
oapp.Id = "junk"
_, resp = AdminClient.UpdateOAuthApp(oapp)
CheckBadRequestStatus(t, resp)
th.App.UpdateConfig(func(cfg *model.Config) { *cfg.ServiceSettings.EnableOAuthServiceProvider = true })
th.AddPermissionToRole(model.PERMISSION_MANAGE_OAUTH.Id, model.SYSTEM_USER_ROLE_ID)
th.LoginBasic()
userOapp := &model.OAuthApp{
Name: "useroapp",
IsTrusted: false,
IconURL: "https://nowhere.com/img",
Homepage: "https://nowhere.com",
Description: "test",
CallbackUrls: []string{"https://callback.com"},
}
userOapp, resp = Client.CreateOAuthApp(userOapp)
CheckNoError(t, resp)
userOapp.IsTrusted = true
userOapp, resp = Client.UpdateOAuthApp(userOapp)
CheckNoError(t, resp)
assert.False(t, userOapp.IsTrusted)
userOapp.IsTrusted = true
userOapp, resp = AdminClient.UpdateOAuthApp(userOapp)
CheckNoError(t, resp)
assert.True(t, userOapp.IsTrusted)
userOapp.IsTrusted = false
userOapp, resp = Client.UpdateOAuthApp(userOapp)
CheckNoError(t, resp)
assert.True(t, userOapp.IsTrusted)
}
func TestGetOAuthApps(t *testing.T) {