2020-05-04 12:44:12 +02:00
|
|
|
define(['datetime', 'loading', 'libraryMenu', 'dom', 'globalize', 'emby-button'], function (datetime, loading, libraryMenu, dom, globalize) {
|
|
|
|
'use strict';
|
2018-10-23 01:05:09 +03:00
|
|
|
|
|
|
|
function revoke(page, key) {
|
2020-05-04 12:44:12 +02: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({
|
2020-05-04 12:44:12 +02: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) {
|
2020-05-04 12:44:12 +02:00
|
|
|
var html = '';
|
2019-11-06 13:43:39 +03:00
|
|
|
html += '<tr class="detailTableBodyRow detailTableBodyRow-shaded">';
|
|
|
|
html += '<td class="detailTableBodyCell">';
|
2020-05-04 12:44:12 +02:00
|
|
|
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>';
|
2019-11-06 13:43:39 +03:00
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
|
|
|
html += item.AccessToken;
|
2020-05-04 12:44:12 +02:00
|
|
|
html += '</td>';
|
2019-11-06 13:43:39 +03:00
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
2020-05-04 12:44:12 +02:00
|
|
|
html += item.AppName || '';
|
|
|
|
html += '</td>';
|
2019-11-06 13:43:39 +03:00
|
|
|
html += '<td class="detailTableBodyCell" style="vertical-align:middle;">';
|
|
|
|
var date = datetime.parseISO8601Date(item.DateCreated, true);
|
2020-05-04 12:44:12 +02:00
|
|
|
html += datetime.toLocaleDateString(date) + ' ' + datetime.getDisplayTime(date);
|
|
|
|
html += '</td>';
|
|
|
|
return html += '</tr>';
|
|
|
|
}).join('');
|
|
|
|
page.querySelector('.resultBody').innerHTML = rows;
|
2019-06-10 15:25:07 -07:00
|
|
|
loading.hide();
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function loadData(page) {
|
2019-06-10 15:25:07 -07:00
|
|
|
loading.show();
|
2020-05-04 12:44:12 +02: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) {
|
2020-05-04 12:44:12 +02:00
|
|
|
require(['prompt'], function (prompt) {
|
2018-10-23 01:05:09 +03:00
|
|
|
prompt({
|
2020-05-04 12:44:12 +02:00
|
|
|
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({
|
2020-05-04 12:44:12 +02:00
|
|
|
type: 'POST',
|
|
|
|
url: ApiClient.getUrl('Auth/Keys', {
|
2018-10-23 01:05:09 +03:00
|
|
|
App: value
|
|
|
|
})
|
2019-11-06 13:43:39 +03:00
|
|
|
}).then(function () {
|
|
|
|
loadData(page);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
pageIdOn('pageinit', 'apiKeysPage', function () {
|
2018-10-23 01:05:09 +03:00
|
|
|
var page = this;
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.btnNewKey').addEventListener('click', function () {
|
2019-11-06 13:43:39 +03:00
|
|
|
showNewKeyPrompt(page);
|
2019-06-10 15:25:07 -07:00
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.tblApiKeys').addEventListener('click', function (e) {
|
|
|
|
var btnRevoke = dom.parentWithClass(e.target, 'btnRevoke');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (btnRevoke) {
|
2020-05-04 12:44:12 +02:00
|
|
|
revoke(page, btnRevoke.getAttribute('data-token'));
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
2019-06-10 15:25:07 -07:00
|
|
|
});
|
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
pageIdOn('pagebeforeshow', 'apiKeysPage', function () {
|
2019-06-10 15:25:07 -07:00
|
|
|
loadData(this);
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|