diff --git a/share/jupyterhub/static/js/jhapi.js b/share/jupyterhub/static/js/jhapi.js index 43bd03a3..6ea2fe89 100644 --- a/share/jupyterhub/static/js/jhapi.js +++ b/share/jupyterhub/static/js/jhapi.js @@ -132,9 +132,9 @@ define(['jquery', 'utils'], function ($, utils) { ); }; - JHAPI.prototype.delete_token = function (user, token_id, options) { + JHAPI.prototype.revoke_token = function (user, token_id, options) { options = options || {}; - options = update(options, {type: 'POST'}); + options = update(options, {type: 'DELETE'}); this.api_request( utils.url_path_join('users', user, 'tokens', token_id), options diff --git a/share/jupyterhub/static/js/token.js b/share/jupyterhub/static/js/token.js index ad13ba1b..a5fcda31 100644 --- a/share/jupyterhub/static/js/token.js +++ b/share/jupyterhub/static/js/token.js @@ -32,5 +32,22 @@ require(["jquery", "jhapi", "moment"], function($, JHAPI, moment) { ); return false; }); + + function get_token_row(element) { + while (!element.hasClass("token-row")) { + element = element.parent(); + } + return element; + } + + $(".revoke-token-btn").click(function() { + var el = $(this); + var row = get_token_row(el); + el.attr("disabled", true); + api.revoke_token(user, row.data('token-id'), { + success: function(reply) { + row.remove(); + }, }); + }); }); diff --git a/share/jupyterhub/templates/token.html b/share/jupyterhub/templates/token.html index 395ee301..8eb8d6d1 100644 --- a/share/jupyterhub/templates/token.html +++ b/share/jupyterhub/templates/token.html @@ -71,7 +71,7 @@ {{ token.created.isoformat() + 'Z' }} - revoke + revoke {% endblock token_row %}