Files
jupyterhub/share/jupyter/hub/static/js/admin.js
Min RK 6b9f73ba1f add JupyterHub.admin_access
optionally allow admin users to login to user servers by visiting a special admin-only URL that sets the relevant cookie

- disabled by default
- an 'access server' button is added to the admin panel, which sets the necessary cookie to log in to the user server
2015-01-27 17:04:30 -08:00

133 lines
4.0 KiB
JavaScript

// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.
require(["jquery", "bootstrap", "moment", "jhapi", "utils"], function ($, bs, moment, JHAPI, utils) {
"use strict";
var base_url = window.jhdata.base_url;
var prefix = window.jhdata.prefix;
var api = new JHAPI(base_url);
var get_row = function (element) {
while (!element.hasClass("user-row")) {
element = element.parent();
}
return element;
};
$(".time-col").map(function (i, el) {
// convert ISO datestamps to nice momentjs ones
el = $(el);
el.text(moment(new Date(el.text())).fromNow());
});
$(".stop-server").click(function () {
var el = $(this);
var row = get_row(el);
var user = row.data('user');
el.text("stopping...");
api.stop_server(user, {
success: function () {
window.location.reload();
}
});
});
$(".access-server").click(function () {
var el = $(this);
var row = get_row(el);
var user = row.data('user');
var w = window.open();
api.admin_access(user, {
async: false,
success: function () {
w.location = utils.url_path_join(prefix, 'user', user);
},
error: function (xhr, err) {
w.close();
console.error("Failed to gain access to server", err);
}
});
});
$(".start-server").click(function () {
var el = $(this);
var row = get_row(el);
var user = row.data('user');
el.text("starting...");
api.start_server(user, {
success: function () {
window.location.reload();
}
});
});
$(".edit-user").click(function () {
var el = $(this);
var row = get_row(el);
var user = row.data('user');
var admin = row.data('admin');
var dialog = $("#edit-user-dialog");
dialog.data('user', user);
dialog.find(".username-input").val(user);
dialog.find(".admin-checkbox").attr("checked", admin==='True');
dialog.modal();
});
$("#edit-user-dialog").find(".save-button").click(function () {
var dialog = $("#edit-user-dialog");
var user = dialog.data('user');
var name = dialog.find(".username-input").val();
var admin = dialog.find(".admin-checkbox").prop("checked");
api.edit_user(user, {
admin: admin,
name: name
}, {
success: function () {
window.location.reload();
}
});
});
$(".delete-user").click(function () {
var el = $(this);
var row = get_row(el);
var user = row.data('user');
var dialog = $("#delete-user-dialog");
dialog.find(".delete-username").text(user);
dialog.modal();
});
$("#delete-user-dialog").find(".delete-button").click(function () {
var dialog = $("#delete-user-dialog");
var username = dialog.find(".delete-username").text();
console.log("deleting", username);
api.delete_user(username, {
success: function () {
window.location.reload();
}
});
});
$("#add-user").click(function () {
var dialog = $("#add-user-dialog");
dialog.find(".username-input").val('');
dialog.find(".admin-checkbox").prop("checked", false);
dialog.modal();
});
$("#add-user-dialog").find(".save-button").click(function () {
var dialog = $("#add-user-dialog");
var username = dialog.find(".username-input").val();
var admin = dialog.find(".admin-checkbox").prop("checked");
api.add_user(username, {admin: admin}, {
success: function () {
window.location.reload();
}
});
});
});