Fixed deleting personal access tokens

This commit is contained in:
mabashian
2018-07-12 17:24:04 -04:00
parent 8297bd00b3
commit d90a1a1ce7
4 changed files with 34 additions and 15 deletions

View File

@@ -38,6 +38,7 @@ function TokensStrings (BaseString) {
ROW_ITEM_LABEL_USED: t.s('LAST USED'), ROW_ITEM_LABEL_USED: t.s('LAST USED'),
ROW_ITEM_LABEL_SCOPE: t.s('SCOPE'), ROW_ITEM_LABEL_SCOPE: t.s('SCOPE'),
ROW_ITEM_LABEL_APPLICATION: t.s('APPLICATION'), ROW_ITEM_LABEL_APPLICATION: t.s('APPLICATION'),
PERSONAL_ACCESS_TOKEN: t.s('Personal Access Token'),
HEADER: appName => t.s('{{ appName }} Token', { appName }), HEADER: appName => t.s('{{ appName }} Token', { appName }),
}; };
} }

View File

@@ -10,13 +10,15 @@ function ListTokensController (
Dataset, Dataset,
strings, strings,
ProcessErrors, ProcessErrors,
Rest,
GetBasePath, GetBasePath,
Prompt, Prompt,
Wait Wait,
models
) { ) {
const vm = this || {}; const vm = this || {};
const { token } = models;
vm.strings = strings; vm.strings = strings;
vm.activeId = $state.params.token_id; vm.activeId = $state.params.token_id;
@@ -48,8 +50,8 @@ function ListTokensController (
return undefined; return undefined;
}; };
vm.getLastUsed = token => { vm.getLastUsed = tokenToCheck => {
const lastUsed = _.get(token, 'last_used'); const lastUsed = _.get(tokenToCheck, 'last_used');
if (!lastUsed) { if (!lastUsed) {
return undefined; return undefined;
@@ -57,7 +59,7 @@ function ListTokensController (
let html = $filter('longDate')(lastUsed); let html = $filter('longDate')(lastUsed);
const { username, id } = _.get(token, 'summary_fields.last_used', {}); const { username, id } = _.get(tokenToCheck, 'summary_fields.last_used', {});
if (username && id) { if (username && id) {
html += ` ${strings.get('add.LAST_USED_LABEL')} <a href="/#/users/${id}">${$filter('sanitize')(username)}</a>`; html += ` ${strings.get('add.LAST_USED_LABEL')} <a href="/#/users/${id}">${$filter('sanitize')(username)}</a>`;
@@ -70,8 +72,7 @@ function ListTokensController (
const action = () => { const action = () => {
$('#prompt-modal').modal('hide'); $('#prompt-modal').modal('hide');
Wait('start'); Wait('start');
Rest.setUrl(`${GetBasePath('tokens')}${tok.id}`); token.request('delete', tok.id)
Rest.destroy()
.then(() => { .then(() => {
let reloadListStateParams = null; let reloadListStateParams = null;
@@ -89,14 +90,12 @@ function ListTokensController (
} else { } else {
$state.go('.', reloadListStateParams, { reload: true }); $state.go('.', reloadListStateParams, { reload: true });
} }
}) }).catch(({ data, status }) => {
.catch(({ data, status }) => {
ProcessErrors($scope, data, status, null, { ProcessErrors($scope, data, status, null, {
hdr: strings.get('error.HEADER'), hdr: strings.get('error.HEADER'),
msg: strings.get('error.CALL', { path: `${GetBasePath('tokens')}${tok.id}`, status }) msg: strings.get('error.CALL', { path: `${GetBasePath('tokens')}${tok.id}`, status })
}); });
}) }).finally(() => {
.finally(() => {
Wait('stop'); Wait('stop');
}); });
}; };
@@ -105,7 +104,9 @@ function ListTokensController (
Prompt({ Prompt({
hdr: strings.get('deleteResource.HEADER'), hdr: strings.get('deleteResource.HEADER'),
resourceName: strings.get('list.HEADER', tok.summary_fields.application.name), resourceName: _.has(tok, 'summary_fields.application.name') ?
strings.get('list.HEADER', tok.summary_fields.application.name) :
strings.get('list.PERSONAL_ACCESS_TOKEN'),
body: deleteModalBody, body: deleteModalBody,
action, action,
actionText: strings.get('add.DELETE_ACTION_LABEL') actionText: strings.get('add.DELETE_ACTION_LABEL')
@@ -120,10 +121,10 @@ ListTokensController.$inject = [
'Dataset', 'Dataset',
'TokensStrings', 'TokensStrings',
'ProcessErrors', 'ProcessErrors',
'Rest',
'GetBasePath', 'GetBasePath',
'Prompt', 'Prompt',
'Wait' 'Wait',
'resolvedModels'
]; ];
export default ListTokensController; export default ListTokensController;

View File

@@ -25,7 +25,10 @@
<at-row ng-repeat="token in tokens"> <at-row ng-repeat="token in tokens">
<div class="at-Row-items"> <div class="at-Row-items">
<at-row-item <at-row-item
header-value="{{ vm.strings.get('list.HEADER', token.summary_fields.application.name) }}"> header-value="{{ token.summary_fields.application.name ?
vm.strings.get('list.HEADER', token.summary_fields.application.name) :
vm.strings.get('list.PERSONAL_ACCESS_TOKEN')
}}">
</at-row-item> </at-row-item>
<at-row-item <at-row-item
label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_DESCRIPTION') }}" label-value="{{:: vm.strings.get('list.ROW_ITEM_LABEL_DESCRIPTION') }}"

View File

@@ -4,6 +4,19 @@ import ListController from './users-tokens-list.controller';
const listTemplate = require('~features/users/tokens/users-tokens-list.partial.html'); const listTemplate = require('~features/users/tokens/users-tokens-list.partial.html');
function TokensListResolve ($q, Token) {
const promises = {};
promises.token = new Token('options');
return $q.all(promises);
}
TokensListResolve.$inject = [
'$q',
'TokenModel',
];
export default { export default {
url: '/tokens', url: '/tokens',
name: 'users.edit.tokens', name: 'users.edit.tokens',
@@ -32,6 +45,7 @@ export default {
} }
}, },
resolve: { resolve: {
resolvedModels: TokensListResolve,
Dataset: [ Dataset: [
'$stateParams', '$stateParams',
'Wait', 'Wait',