mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-08 10:34:10 +00:00

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
126 lines
3.3 KiB
JavaScript
126 lines
3.3 KiB
JavaScript
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
|
|
define(['jquery', 'utils'], function ($, utils) {
|
|
"use strict";
|
|
|
|
var JHAPI = function (base_url) {
|
|
this.base_url = base_url;
|
|
};
|
|
|
|
var default_options = {
|
|
type: 'GET',
|
|
headers: {'Content-Type': 'application/json'},
|
|
cache: false,
|
|
dataType : "json",
|
|
processData: false,
|
|
success: null,
|
|
error: utils.log_jax_error,
|
|
};
|
|
|
|
var update = function (d1, d2) {
|
|
$.map(d2, function (i, key) {
|
|
d1[key] = d2[key];
|
|
});
|
|
return d1;
|
|
};
|
|
|
|
var ajax_defaults = function (options) {
|
|
var d = {};
|
|
update(d, default_options);
|
|
update(d, options);
|
|
return d;
|
|
};
|
|
|
|
JHAPI.prototype.api_request = function (path, options) {
|
|
options = options || {};
|
|
options = ajax_defaults(options || {});
|
|
var url = utils.url_path_join(
|
|
this.base_url,
|
|
'api',
|
|
utils.encode_uri_components(path)
|
|
);
|
|
$.ajax(url, options);
|
|
};
|
|
|
|
JHAPI.prototype.start_server = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, {type: 'POST', dataType: null});
|
|
this.api_request(
|
|
utils.url_path_join('users', user, 'server'),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.stop_server = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, {type: 'DELETE', dataType: null});
|
|
this.api_request(
|
|
utils.url_path_join('users', user, 'server'),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.list_users = function (options) {
|
|
this.api_request('users', options);
|
|
};
|
|
|
|
JHAPI.prototype.get_user = function (user, options) {
|
|
this.api_request(
|
|
utils.url_path_join('users', user),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.add_user = function (user, userinfo, options) {
|
|
options = options || {};
|
|
options = update(options, {
|
|
type: 'POST',
|
|
dataType: null,
|
|
data: JSON.stringify(userinfo)
|
|
});
|
|
|
|
this.api_request(
|
|
utils.url_path_join('users', user),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.edit_user = function (user, userinfo, options) {
|
|
options = options || {};
|
|
options = update(options, {
|
|
type: 'PATCH',
|
|
dataType: null,
|
|
data: JSON.stringify(userinfo)
|
|
});
|
|
|
|
this.api_request(
|
|
utils.url_path_join('users', user),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.admin_access = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, {
|
|
type: 'POST',
|
|
dataType: null,
|
|
});
|
|
|
|
this.api_request(
|
|
utils.url_path_join('users', user, 'admin-access'),
|
|
options
|
|
);
|
|
};
|
|
|
|
JHAPI.prototype.delete_user = function (user, options) {
|
|
options = options || {};
|
|
options = update(options, {type: 'DELETE', dataType: null});
|
|
this.api_request(
|
|
utils.url_path_join('users', user),
|
|
options
|
|
);
|
|
};
|
|
|
|
return JHAPI;
|
|
}); |