FEATURE: Add scopes to API keys (#9844)

* Added scopes UI

* Create scopes when creating a new API key

* Show scopes on the API key show route

* Apply scopes on API requests

* Extend scopes from plugins

* Add missing scopes. A mapping can be associated with multiple controller actions

* Only send scopes if the use global key option is disabled. Use the discourse plugin registry to add new scopes

* Add not null validations and index for api_key_id

* Annotate model

* DEV: Move default mappings to ApiKeyScope

* Remove unused attribute and improve UI for existing keys

* Support multiple parameters separated by a comma
This commit is contained in:
Roman Rizzi
2020-07-16 15:51:24 -03:00
committed by GitHub
parent 766cb24989
commit f13ec11c64
20 changed files with 423 additions and 6 deletions

View File

@ -9,6 +9,8 @@ export default Controller.extend({
{ id: "all", name: I18n.t("admin.api.all_users") },
{ id: "single", name: I18n.t("admin.api.single_user") }
],
useGlobalKey: false,
scopes: null,
@discourseComputed("userMode")
showUserSelector(mode) {
@ -31,6 +33,16 @@ export default Controller.extend({
},
save() {
if (!this.useGlobalKey) {
const selectedScopes = Object.values(this.scopes)
.flat()
.filter(action => {
return action.selected;
});
this.model.set("scopes", selectedScopes);
}
this.model.save().catch(popupAjaxError);
},