1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/controllers/dashboard/users/useredit.js

199 lines
10 KiB
JavaScript
Raw Normal View History

2020-05-04 12:44:12 +02:00
define(['jQuery', 'loading', 'libraryMenu', 'globalize', 'fnchecked'], function ($, loading, libraryMenu, globalize) {
'use strict';
2018-10-23 01:05:09 +03:00
function loadDeleteFolders(page, user, mediaFolders) {
2020-05-04 12:44:12 +02:00
ApiClient.getJSON(ApiClient.getUrl('Channels', {
SupportsMediaDeletion: true
})).then(function (channelsResult) {
var i;
var length;
var folder;
var isChecked;
var checkedAttribute;
2020-05-04 12:44:12 +02:00
var html = '';
for (i = 0, length = mediaFolders.length; i < length; i++) {
folder = mediaFolders[i];
isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id);
2020-05-04 12:44:12 +02:00
checkedAttribute = isChecked ? ' checked="checked"' : '';
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
}
for (i = 0, length = channelsResult.Items.length; i < length; i++) {
folder = channelsResult.Items[i];
isChecked = user.Policy.EnableContentDeletion || -1 != user.Policy.EnableContentDeletionFromFolders.indexOf(folder.Id);
2020-05-04 12:44:12 +02:00
checkedAttribute = isChecked ? ' checked="checked"' : '';
html += '<label><input type="checkbox" is="emby-checkbox" class="chkFolder" data-id="' + folder.Id + '" ' + checkedAttribute + '><span>' + folder.Name + '</span></label>';
}
2020-05-04 12:44:12 +02:00
$('.deleteAccess', page).html(html).trigger('create');
$('#chkEnableDeleteAllFolders', page).checked(user.Policy.EnableContentDeletion).trigger('change');
});
2018-10-23 01:05:09 +03:00
}
function loadAuthProviders(page, user, providers) {
if (providers.length > 1) {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldSelectLoginProvider').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldSelectLoginProvider').classList.add('hide');
}
2018-10-23 01:05:09 +03:00
var currentProviderId = user.Policy.AuthenticationProviderId;
2020-05-04 12:44:12 +02:00
page.querySelector('.selectLoginProvider').innerHTML = providers.map(function (provider) {
var selected = provider.Id === currentProviderId || providers.length < 2 ? ' selected' : '';
return '<option value="' + provider.Id + '"' + selected + '>' + provider.Name + '</option>';
});
2018-10-23 01:05:09 +03:00
}
2019-03-22 00:12:01 -07:00
function loadPasswordResetProviders(page, user, providers) {
if (providers.length > 1) {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldSelectPasswordResetProvider').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldSelectPasswordResetProvider').classList.add('hide');
}
2019-03-22 00:12:01 -07:00
var currentProviderId = user.Policy.PasswordResetProviderId;
2020-05-04 12:44:12 +02:00
page.querySelector('.selectPasswordResetProvider').innerHTML = providers.map(function (provider) {
var selected = provider.Id === currentProviderId || providers.length < 2 ? ' selected' : '';
return '<option value="' + provider.Id + '"' + selected + '>' + provider.Name + '</option>';
});
2019-03-22 00:12:01 -07:00
}
2018-10-23 01:05:09 +03:00
function loadUser(page, user) {
currentUser = user;
2020-05-04 12:44:12 +02:00
ApiClient.getJSON(ApiClient.getUrl('Auth/Providers')).then(function (providers) {
loadAuthProviders(page, user, providers);
});
2020-05-04 12:44:12 +02:00
ApiClient.getJSON(ApiClient.getUrl('Auth/PasswordResetProviders')).then(function (providers) {
loadPasswordResetProviders(page, user, providers);
2019-03-22 00:12:01 -07:00
});
2020-05-04 12:44:12 +02:00
ApiClient.getJSON(ApiClient.getUrl('Library/MediaFolders', {
IsHidden: false
})).then(function (folders) {
loadDeleteFolders(page, user, folders.Items);
});
if (user.Policy.IsDisabled) {
2020-05-04 12:44:12 +02:00
$('.disabledUserBanner', page).show();
} else {
2020-05-04 12:44:12 +02:00
$('.disabledUserBanner', page).hide();
}
2020-05-04 12:44:12 +02:00
$('#txtUserName', page).prop('disabled', '').removeAttr('disabled');
$('#fldConnectInfo', page).show();
$('.lnkEditUserPreferences', page).attr('href', 'mypreferencesmenu.html?userId=' + user.Id);
libraryMenu.setTitle(user.Name);
2020-05-04 12:44:12 +02:00
page.querySelector('.username').innerHTML = user.Name;
$('#txtUserName', page).val(user.Name);
$('#chkIsAdmin', page).checked(user.Policy.IsAdministrator);
$('#chkDisabled', page).checked(user.Policy.IsDisabled);
$('#chkIsHidden', page).checked(user.Policy.IsHidden);
$('#chkRemoteControlSharedDevices', page).checked(user.Policy.EnableSharedDeviceControl);
$('#chkEnableRemoteControlOtherUsers', page).checked(user.Policy.EnableRemoteControlOfOtherUsers);
$('#chkEnableDownloading', page).checked(user.Policy.EnableContentDownloading);
$('#chkManageLiveTv', page).checked(user.Policy.EnableLiveTvManagement);
$('#chkEnableLiveTvAccess', page).checked(user.Policy.EnableLiveTvAccess);
$('#chkEnableMediaPlayback', page).checked(user.Policy.EnableMediaPlayback);
$('#chkEnableAudioPlaybackTranscoding', page).checked(user.Policy.EnableAudioPlaybackTranscoding);
$('#chkEnableVideoPlaybackTranscoding', page).checked(user.Policy.EnableVideoPlaybackTranscoding);
$('#chkEnableVideoPlaybackRemuxing', page).checked(user.Policy.EnablePlaybackRemuxing);
$('#chkForceRemoteSourceTranscoding', page).checked(user.Policy.ForceRemoteSourceTranscoding);
$('#chkRemoteAccess', page).checked(null == user.Policy.EnableRemoteAccess || user.Policy.EnableRemoteAccess);
$('#chkEnableSyncTranscoding', page).checked(user.Policy.EnableSyncTranscoding);
$('#chkEnableConversion', page).checked(user.Policy.EnableMediaConversion || false);
$('#chkEnableSharing', page).checked(user.Policy.EnablePublicSharing);
$('#txtRemoteClientBitrateLimit', page).val(user.Policy.RemoteClientBitrateLimit / 1e6 || '');
$('#txtLoginAttemptsBeforeLockout', page).val(user.Policy.LoginAttemptsBeforeLockout || '0');
loading.hide();
2018-10-23 01:05:09 +03:00
}
function onSaveComplete(page, user) {
2020-05-04 12:44:12 +02:00
Dashboard.navigate('userprofiles.html');
loading.hide();
2020-05-04 12:44:12 +02:00
require(['toast'], function (toast) {
toast(globalize.translate('SettingsSaved'));
});
2018-10-23 01:05:09 +03:00
}
function saveUser(user, page) {
2020-05-04 12:44:12 +02:00
user.Name = $('#txtUserName', page).val();
user.Policy.IsAdministrator = $('#chkIsAdmin', page).checked();
user.Policy.IsHidden = $('#chkIsHidden', page).checked();
user.Policy.IsDisabled = $('#chkDisabled', page).checked();
user.Policy.EnableRemoteControlOfOtherUsers = $('#chkEnableRemoteControlOtherUsers', page).checked();
user.Policy.EnableLiveTvManagement = $('#chkManageLiveTv', page).checked();
user.Policy.EnableLiveTvAccess = $('#chkEnableLiveTvAccess', page).checked();
user.Policy.EnableSharedDeviceControl = $('#chkRemoteControlSharedDevices', page).checked();
user.Policy.EnableMediaPlayback = $('#chkEnableMediaPlayback', page).checked();
user.Policy.EnableAudioPlaybackTranscoding = $('#chkEnableAudioPlaybackTranscoding', page).checked();
user.Policy.EnableVideoPlaybackTranscoding = $('#chkEnableVideoPlaybackTranscoding', page).checked();
user.Policy.EnablePlaybackRemuxing = $('#chkEnableVideoPlaybackRemuxing', page).checked();
user.Policy.ForceRemoteSourceTranscoding = $('#chkForceRemoteSourceTranscoding', page).checked();
user.Policy.EnableContentDownloading = $('#chkEnableDownloading', page).checked();
user.Policy.EnableSyncTranscoding = $('#chkEnableSyncTranscoding', page).checked();
user.Policy.EnableMediaConversion = $('#chkEnableConversion', page).checked();
user.Policy.EnablePublicSharing = $('#chkEnableSharing', page).checked();
user.Policy.EnableRemoteAccess = $('#chkRemoteAccess', page).checked();
user.Policy.RemoteClientBitrateLimit = parseInt(1e6 * parseFloat($('#txtRemoteClientBitrateLimit', page).val() || '0'));
user.Policy.LoginAttemptsBeforeLockout = parseInt($('#txtLoginAttemptsBeforeLockout', page).val() || '0');
user.Policy.AuthenticationProviderId = page.querySelector('.selectLoginProvider').value;
user.Policy.PasswordResetProviderId = page.querySelector('.selectPasswordResetProvider').value;
user.Policy.EnableContentDeletion = $('#chkEnableDeleteAllFolders', page).checked();
user.Policy.EnableContentDeletionFromFolders = user.Policy.EnableContentDeletion ? [] : $('.chkFolder', page).get().filter(function (c) {
return c.checked;
}).map(function (c) {
2020-05-04 12:44:12 +02:00
return c.getAttribute('data-id');
});
ApiClient.updateUser(user).then(function () {
ApiClient.updateUserPolicy(user.Id, user.Policy).then(function () {
onSaveComplete(page, user);
});
});
2018-10-23 01:05:09 +03:00
}
function onSubmit() {
2020-05-04 12:44:12 +02:00
var page = $(this).parents('.page')[0];
loading.show();
getUser().then(function (result) {
saveUser(result, page);
});
return false;
2018-10-23 01:05:09 +03:00
}
function getUser() {
2020-05-04 12:44:12 +02:00
var userId = getParameterByName('userId');
return ApiClient.getUser(userId);
2018-10-23 01:05:09 +03:00
}
function loadData(page) {
loading.show();
getUser().then(function (user) {
loadUser(page, user);
});
2018-10-23 01:05:09 +03:00
}
2018-10-23 01:05:09 +03:00
var currentUser;
2020-05-04 12:44:12 +02:00
$(document).on('pageinit', '#editUserPage', function () {
$('.editUserProfileForm').off('submit', onSubmit).on('submit', onSubmit);
this.querySelector('.sharingHelp').innerHTML = globalize.translate('OptionAllowLinkSharingHelp', 30);
2018-10-23 01:05:09 +03:00
var page = this;
2020-05-04 12:44:12 +02:00
$('#chkEnableDeleteAllFolders', this).on('change', function () {
if (this.checked) {
2020-05-04 12:44:12 +02:00
$('.deleteAccess', page).hide();
} else {
2020-05-04 12:44:12 +02:00
$('.deleteAccess', page).show();
}
});
ApiClient.getServerConfiguration().then(function (config) {
if (config.EnableRemoteAccess) {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldRemoteAccess').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('.fldRemoteAccess').classList.add('hide');
}
});
2020-05-04 12:44:12 +02:00
}).on('pagebeforeshow', '#editUserPage', function () {
loadData(this);
});
});