2019-11-06 13:43:39 +03:00
|
|
|
define(["datetime", "loading", "libraryMenu", "dom", "globalize", "emby-button"], function (datetime, loading, libraryMenu, dom, globalize) {
|
2018-10-23 01:05:09 +03:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function revoke(page, key) {
|
2019-11-06 13:43:39 +03:00
|
|
|
require(["confirm"], function (confirm) {
|
|
|
|
confirm(globalize.translate("MessageConfirmRevokeApiKey"), globalize.translate("HeaderConfirmRevokeApiKey")).then(function () {
|
2019-06-10 15:25:07 -07:00
|
|
|
loading.show();
|
|
|
|
ApiClient.ajax({
|
2018-10-23 01:05:09 +03:00
|
|
|
type: "DELETE",
|
|
|
|
url: ApiClient.getUrl("Auth/Keys/" + key)
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
2019-06-10 15:25:07 -07:00
|
|
|
loadData(page);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function renderKeys(page, keys) {
|
2019-11-06 13:43:39 +03:00
|
|
|
var rows = keys.map(function (item) {
|
2018-10-23 01:05:09 +03:00
|
|
|
var html = "";
|
2019-11-06 13:43:39 +03:00
|
|
|
html += '<tr class="detailTableBodyRow detailTableBodyRow-shaded">';
|
|
|
|
html += '<td class="detailTableBodyCell">';
|
|
|
|
html += '<button type="button" is="emby-button" data-token="' + item.AccessToken + '" class="raised raised-mini btnRevoke" data-mini="true" title="' + globalize.translate("ButtonRevoke") + '" style="margin:0;">' + globalize.translate("ButtonRevoke") + "</button>";
|
|
|
|
html += "</td>";
|
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
|
|
|
html += item.AccessToken;
|
|
|
|
html += "</td>";
|
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
|
|
|
html += item.AppName || "";
|
|
|
|
html += "</td>";
|
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
|
|
|
var date = datetime.parseISO8601Date(item.DateCreated, true);
|
|
|
|
html += datetime.toLocaleDateString(date) + " " + datetime.getDisplayTime(date);
|
|
|
|
html += "</td>";
|
|
|
|
return html += "</tr>";
|
2018-10-23 01:05:09 +03:00
|
|
|
}).join("");
|
2019-06-10 15:25:07 -07:00
|
|
|
page.querySelector(".resultBody").innerHTML = rows;
|
|
|
|
loading.hide();
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function loadData(page) {
|
2019-06-10 15:25:07 -07:00
|
|
|
loading.show();
|
2019-11-06 13:43:39 +03:00
|
|
|
ApiClient.getJSON(ApiClient.getUrl("Auth/Keys")).then(function (result) {
|
2019-06-10 15:25:07 -07:00
|
|
|
renderKeys(page, result.Items);
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function showNewKeyPrompt(page) {
|
2019-11-06 13:43:39 +03:00
|
|
|
require(["prompt"], function (prompt) {
|
2018-10-23 01:05:09 +03:00
|
|
|
prompt({
|
|
|
|
title: globalize.translate("HeaderNewApiKey"),
|
|
|
|
label: globalize.translate("LabelAppName"),
|
|
|
|
description: globalize.translate("LabelAppNameExample")
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function (value) {
|
2018-10-23 01:05:09 +03:00
|
|
|
ApiClient.ajax({
|
|
|
|
type: "POST",
|
|
|
|
url: ApiClient.getUrl("Auth/Keys", {
|
|
|
|
App: value
|
|
|
|
})
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
loadData(page);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
2019-11-06 13:43:39 +03:00
|
|
|
pageIdOn("pageinit", "apiKeysPage", function () {
|
2018-10-23 01:05:09 +03:00
|
|
|
var page = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
page.querySelector(".btnNewKey").addEventListener("click", function () {
|
|
|
|
showNewKeyPrompt(page);
|
2019-06-10 15:25:07 -07:00
|
|
|
});
|
2019-11-06 13:43:39 +03:00
|
|
|
page.querySelector(".tblApiKeys").addEventListener("click", function (e) {
|
2018-10-23 01:05:09 +03:00
|
|
|
var btnRevoke = dom.parentWithClass(e.target, "btnRevoke");
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (btnRevoke) {
|
|
|
|
revoke(page, btnRevoke.getAttribute("data-token"));
|
|
|
|
}
|
2019-06-10 15:25:07 -07:00
|
|
|
});
|
|
|
|
});
|
2019-11-06 13:43:39 +03:00
|
|
|
pageIdOn("pagebeforeshow", "apiKeysPage", function () {
|
2019-06-10 15:25:07 -07:00
|
|
|
loadData(this);
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|