2020-07-09 13:47:58 +01:00
|
|
|
import loading from 'loading';
|
|
|
|
import libraryMenu from 'libraryMenu';
|
|
|
|
import globalize from 'globalize';
|
|
|
|
import 'emby-button';
|
|
|
|
|
|
|
|
/* eslint-disable indent */
|
2018-10-23 01:05:09 +03:00
|
|
|
|
|
|
|
function loadUser(page, params) {
|
2020-07-11 14:04:11 +01:00
|
|
|
const userid = params.userId;
|
2019-11-06 13:43:39 +03:00
|
|
|
ApiClient.getUser(userid).then(function (user) {
|
|
|
|
Dashboard.getCurrentUser().then(function (loggedInUser) {
|
|
|
|
libraryMenu.setTitle(user.Name);
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.username').innerHTML = user.Name;
|
2020-07-11 14:04:11 +01:00
|
|
|
let showPasswordSection = true;
|
|
|
|
let showLocalAccessSection = false;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-30 16:07:13 +02:00
|
|
|
if (user.ConnectLinkType == 'Guest') {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.localAccessSection').classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
showPasswordSection = false;
|
|
|
|
} else if (user.HasConfiguredPassword) {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('#btnResetPassword').classList.remove('hide');
|
|
|
|
page.querySelector('#fldCurrentPassword').classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
showLocalAccessSection = true;
|
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('#btnResetPassword').classList.add('hide');
|
|
|
|
page.querySelector('#fldCurrentPassword').classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (showPasswordSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.passwordSection').classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.passwordSection').classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if (showLocalAccessSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.localAccessSection').classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.localAccessSection').classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-07-11 14:04:11 +01:00
|
|
|
const txtEasyPassword = page.querySelector('#txtEasyPassword');
|
2020-05-04 12:44:12 +02:00
|
|
|
txtEasyPassword.value = '';
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (user.HasConfiguredEasyPassword) {
|
2020-05-04 12:44:12 +02:00
|
|
|
txtEasyPassword.placeholder = '******';
|
|
|
|
page.querySelector('#btnResetEasyPassword').classList.remove('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
} else {
|
2020-05-04 12:44:12 +02:00
|
|
|
txtEasyPassword.removeAttribute('placeholder');
|
|
|
|
txtEasyPassword.placeholder = '';
|
|
|
|
page.querySelector('#btnResetEasyPassword').classList.add('hide');
|
2019-11-06 13:43:39 +03:00
|
|
|
}
|
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('.chkEnableLocalEasyPassword').checked = user.Configuration.EnableLocalPassword;
|
2019-11-02 20:38:58 +03:00
|
|
|
|
2020-07-09 13:47:58 +01:00
|
|
|
import('autoFocuser').then(({default: autoFocuser}) => {
|
2019-11-02 20:38:58 +03:00
|
|
|
autoFocuser.autoFocus(page);
|
|
|
|
});
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|
2020-05-04 12:44:12 +02:00
|
|
|
page.querySelector('#txtCurrentPassword').value = '';
|
|
|
|
page.querySelector('#txtNewPassword').value = '';
|
|
|
|
page.querySelector('#txtNewPasswordConfirm').value = '';
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-09 13:47:58 +01:00
|
|
|
export default function (view, params) {
|
2018-10-23 01:05:09 +03:00
|
|
|
function saveEasyPassword() {
|
2020-07-11 14:04:11 +01:00
|
|
|
const userId = params.userId;
|
|
|
|
const easyPassword = view.querySelector('#txtEasyPassword').value;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (easyPassword) {
|
|
|
|
ApiClient.updateEasyPassword(userId, easyPassword).then(function () {
|
|
|
|
onEasyPasswordSaved(userId);
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
onEasyPasswordSaved(userId);
|
|
|
|
}
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function onEasyPasswordSaved(userId) {
|
2019-11-06 13:43:39 +03:00
|
|
|
ApiClient.getUser(userId).then(function (user) {
|
2020-05-04 12:44:12 +02:00
|
|
|
user.Configuration.EnableLocalPassword = view.querySelector('.chkEnableLocalEasyPassword').checked;
|
2019-11-06 13:43:39 +03:00
|
|
|
ApiClient.updateUserConfiguration(user.Id, user.Configuration).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
|
2020-07-09 13:47:58 +01:00
|
|
|
import('toast').then(({default: toast}) => {
|
2020-08-16 20:34:39 +09:00
|
|
|
toast(globalize.translate('SettingsSaved'));
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
loadUser(view, params);
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function savePassword() {
|
2020-07-11 14:04:11 +01:00
|
|
|
const userId = params.userId;
|
|
|
|
let currentPassword = view.querySelector('#txtCurrentPassword').value;
|
|
|
|
const newPassword = view.querySelector('#txtNewPassword').value;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
if (view.querySelector('#fldCurrentPassword').classList.contains('hide')) {
|
2019-01-10 20:32:17 +00:00
|
|
|
// Firefox does not respect autocomplete=off, so clear it if the field is supposed to be hidden (and blank)
|
|
|
|
// This should only happen when user.HasConfiguredPassword is false, but this information is not passed on
|
2020-05-04 12:44:12 +02:00
|
|
|
currentPassword = '';
|
2019-01-10 20:32:17 +00:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
|
2020-07-09 13:47:58 +01:00
|
|
|
import('toast').then(({default: toast}) => {
|
2020-05-04 12:44:12 +02:00
|
|
|
toast(globalize.translate('PasswordSaved'));
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
loadUser(view, params);
|
|
|
|
}, function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-05-04 12:44:12 +02:00
|
|
|
title: globalize.translate('HeaderLoginFailure'),
|
|
|
|
message: globalize.translate('MessageInvalidUser')
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function onSubmit(e) {
|
2020-07-11 14:04:11 +01:00
|
|
|
const form = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
if (form.querySelector('#txtNewPassword').value != form.querySelector('#txtNewPasswordConfirm').value) {
|
2020-07-09 13:47:58 +01:00
|
|
|
import('toast').then(({default: toast}) => {
|
2020-05-04 12:44:12 +02:00
|
|
|
toast(globalize.translate('PasswordMatchError'));
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
loading.show();
|
|
|
|
savePassword();
|
|
|
|
}
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
return false;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function onLocalAccessSubmit(e) {
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
saveEasyPassword();
|
|
|
|
e.preventDefault();
|
|
|
|
return false;
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function resetPassword() {
|
2020-07-11 14:04:11 +01:00
|
|
|
const msg = globalize.translate('PasswordResetConfirmation');
|
2020-07-09 13:47:58 +01:00
|
|
|
import('confirm').then(({default: confirm}) => {
|
2020-08-01 00:18:24 +09:00
|
|
|
confirm(msg, globalize.translate('HeaderResetPassword')).then(function () {
|
2020-07-11 14:04:11 +01:00
|
|
|
const userId = params.userId;
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
ApiClient.resetUserPassword(userId).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-05-04 12:44:12 +02:00
|
|
|
message: globalize.translate('PasswordResetComplete'),
|
2020-08-01 00:18:24 +09:00
|
|
|
title: globalize.translate('HeaderResetPassword')
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
loadUser(view, params);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function resetEasyPassword() {
|
2020-07-11 14:04:11 +01:00
|
|
|
const msg = globalize.translate('PinCodeResetConfirmation');
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-07-09 13:47:58 +01:00
|
|
|
import('confirm').then(({default: confirm}) => {
|
2020-05-04 12:44:12 +02:00
|
|
|
confirm(msg, globalize.translate('HeaderPinCodeReset')).then(function () {
|
2020-07-11 14:04:11 +01:00
|
|
|
const userId = params.userId;
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
ApiClient.resetEasyPassword(userId).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-05-04 12:44:12 +02:00
|
|
|
message: globalize.translate('PinCodeResetComplete'),
|
|
|
|
title: globalize.translate('HeaderPinCodeReset')
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
loadUser(view, params);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
2020-05-04 12:44:12 +02:00
|
|
|
view.querySelector('.updatePasswordForm').addEventListener('submit', onSubmit);
|
|
|
|
view.querySelector('.localAccessForm').addEventListener('submit', onLocalAccessSubmit);
|
|
|
|
view.querySelector('#btnResetEasyPassword').addEventListener('click', resetEasyPassword);
|
|
|
|
view.querySelector('#btnResetPassword').addEventListener('click', resetPassword);
|
|
|
|
view.addEventListener('viewshow', function () {
|
2019-11-06 13:43:39 +03:00
|
|
|
loadUser(view, params);
|
|
|
|
});
|
2020-07-10 13:54:05 +01:00
|
|
|
}
|
2020-07-09 13:47:58 +01:00
|
|
|
|
|
|
|
/* eslint-enable indent */
|