mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
f65f001675
In some circumstances a consul 1.4 client could be running in an un-upgraded 1.3 or lower cluster. Currently this gives a 500 error on the new ACL token endpoint. Here we catch this specific 500 error/message and set the users AccessorID to null. Elsewhere in the frontend we use this fact (AccessorID being null) to decide whether to present the legacy or the new ACL UI to the user. Also: - Re-adds in most of the old style ACL acceptance tests, now that we are keeping the old style UI - Restricts code editors to HCL only mode for all `Rules` editing (legacy/'half legacy'/new style) - Adds a [Stop using] button to the old style ACL rows so its possible to logout. - Updates copy and documentation links for the upgrade notices
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
import Mixin from '@ember/object/mixin';
|
|
import { get } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import WithBlockingActions from 'consul-ui/mixins/with-blocking-actions';
|
|
|
|
export default Mixin.create(WithBlockingActions, {
|
|
settings: service('settings'),
|
|
actions: {
|
|
use: function(item) {
|
|
return get(this, 'feedback').execute(() => {
|
|
// old style legacy ACLs don't have AccessorIDs
|
|
// therefore set it to null, this way the frontend knows
|
|
// to use legacy ACLs
|
|
return get(this, 'settings')
|
|
.persist({
|
|
token: {
|
|
AccessorID: null,
|
|
SecretID: get(item, 'ID'),
|
|
},
|
|
})
|
|
.then(() => {
|
|
return this.transitionTo('dc.services');
|
|
});
|
|
}, 'use');
|
|
},
|
|
// TODO: This is also used in tokens, probably an opportunity to dry this out
|
|
logout: function(item) {
|
|
return get(this, 'feedback').execute(() => {
|
|
return get(this, 'settings')
|
|
.delete('token')
|
|
.then(() => {
|
|
// in this case we don't do the same as delete as we want to go to the new
|
|
// dc.acls.tokens page. If we get there via the dc.acls redirect/rewrite
|
|
// then we lose the flash message
|
|
return this.transitionTo('dc.acls.tokens');
|
|
});
|
|
}, 'logout');
|
|
},
|
|
clone: function(item) {
|
|
return get(this, 'feedback').execute(() => {
|
|
return get(this, 'repo')
|
|
.clone(item)
|
|
.then(item => {
|
|
// cloning is similar to delete in that
|
|
// if you clone from the listing page, stay on the listing page
|
|
// whereas if you clone form another token, take me back to the listing page
|
|
// so I can see it
|
|
return this.afterDelete(...arguments);
|
|
});
|
|
}, 'clone');
|
|
},
|
|
},
|
|
});
|