mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 17:33:44 +08:00
52c5cf33f8
- Allow revoking keys without deleting them - Auto-revoke keys after a period of no use (default 6 months) - Allow multiple keys per user - Allow attaching a description to each key, for easier auditing - Log changes to keys in the staff action log - Move all key management to one place, and improve the UI
57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
import AdminUser from "admin/models/admin-user";
|
|
import RestModel from "discourse/models/rest";
|
|
import { ajax } from "discourse/lib/ajax";
|
|
import computed from "ember-addons/ember-computed-decorators";
|
|
|
|
const ApiKey = RestModel.extend({
|
|
user: Ember.computed("_user", {
|
|
get() {
|
|
return this._user;
|
|
},
|
|
set(key, value) {
|
|
if (value && !(value instanceof AdminUser)) {
|
|
this.set("_user", AdminUser.create(value));
|
|
} else {
|
|
this.set("_user", value);
|
|
}
|
|
return this._user;
|
|
}
|
|
}),
|
|
|
|
@computed("key")
|
|
shortKey(key) {
|
|
return `${key.substring(0, 4)}...`;
|
|
},
|
|
|
|
@computed("description")
|
|
shortDescription(description) {
|
|
if (!description || description.length < 40) return description;
|
|
return `${description.substring(0, 40)}...`;
|
|
},
|
|
|
|
revoke() {
|
|
return ajax(`${this.basePath}/revoke`, {
|
|
type: "POST"
|
|
}).then(result => this.setProperties(result.api_key));
|
|
},
|
|
|
|
undoRevoke() {
|
|
return ajax(`${this.basePath}/undo-revoke`, {
|
|
type: "POST"
|
|
}).then(result => this.setProperties(result.api_key));
|
|
},
|
|
|
|
createProperties() {
|
|
return this.getProperties("description", "username");
|
|
},
|
|
|
|
@computed()
|
|
basePath() {
|
|
return this.store
|
|
.adapterFor("api-key")
|
|
.pathFor(this.store, "api-key", this.id);
|
|
}
|
|
});
|
|
|
|
export default ApiKey;
|