jellyfish-web/src/controllers/dashboard/users/userpasswordpage.js

192 lines
7.9 KiB
JavaScript
Raw Normal View History

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;
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;
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');
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');
showLocalAccessSection = true;
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('#btnResetPassword').classList.add('hide');
page.querySelector('#fldCurrentPassword').classList.add('hide');
}
if (showPasswordSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
2020-05-04 12:44:12 +02:00
page.querySelector('.passwordSection').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('.passwordSection').classList.add('hide');
}
if (showLocalAccessSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
2020-05-04 12:44:12 +02:00
page.querySelector('.localAccessSection').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
page.querySelector('.localAccessSection').classList.add('hide');
}
2020-07-11 14:04:11 +01:00
const txtEasyPassword = page.querySelector('#txtEasyPassword');
2020-05-04 12:44:12 +02:00
txtEasyPassword.value = '';
if (user.HasConfiguredEasyPassword) {
2020-05-04 12:44:12 +02:00
txtEasyPassword.placeholder = '******';
page.querySelector('#btnResetEasyPassword').classList.remove('hide');
} else {
2020-05-04 12:44:12 +02:00
txtEasyPassword.removeAttribute('placeholder');
txtEasyPassword.placeholder = '';
page.querySelector('#btnResetEasyPassword').classList.add('hide');
}
2020-05-04 12:44:12 +02:00
page.querySelector('.chkEnableLocalEasyPassword').checked = user.Configuration.EnableLocalPassword;
2019-11-02 20:38:58 +03:00
import('autoFocuser').then(({default: autoFocuser}) => {
2019-11-02 20:38:58 +03:00
autoFocuser.autoFocus(page);
});
});
});
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
}
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;
if (easyPassword) {
ApiClient.updateEasyPassword(userId, easyPassword).then(function () {
onEasyPasswordSaved(userId);
});
} else {
onEasyPasswordSaved(userId);
}
2018-10-23 01:05:09 +03:00
}
function onEasyPasswordSaved(userId) {
ApiClient.getUser(userId).then(function (user) {
2020-05-04 12:44:12 +02:00
user.Configuration.EnableLocalPassword = view.querySelector('.chkEnableLocalEasyPassword').checked;
ApiClient.updateUserConfiguration(user.Id, user.Configuration).then(function () {
loading.hide();
import('toast').then(({default: toast}) => {
2020-08-16 20:34:39 +09:00
toast(globalize.translate('SettingsSaved'));
});
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;
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
}
ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function () {
loading.hide();
import('toast').then(({default: toast}) => {
2020-05-04 12:44:12 +02:00
toast(globalize.translate('PasswordSaved'));
});
loadUser(view, params);
}, function () {
loading.hide();
Dashboard.alert({
2020-05-04 12:44:12 +02:00
title: globalize.translate('HeaderLoginFailure'),
message: globalize.translate('MessageInvalidUser')
});
});
2018-10-23 01:05:09 +03:00
}
function onSubmit(e) {
2020-07-11 14:04:11 +01:00
const form = this;
2020-05-04 12:44:12 +02:00
if (form.querySelector('#txtNewPassword').value != form.querySelector('#txtNewPasswordConfirm').value) {
import('toast').then(({default: toast}) => {
2020-05-04 12:44:12 +02:00
toast(globalize.translate('PasswordMatchError'));
});
} else {
loading.show();
savePassword();
}
e.preventDefault();
return false;
2018-10-23 01:05:09 +03:00
}
function onLocalAccessSubmit(e) {
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');
import('confirm').then(({default: confirm}) => {
confirm(msg, globalize.translate('HeaderResetPassword')).then(function () {
2020-07-11 14:04:11 +01:00
const userId = params.userId;
loading.show();
ApiClient.resetUserPassword(userId).then(function () {
loading.hide();
Dashboard.alert({
2020-05-04 12:44:12 +02:00
message: globalize.translate('PasswordResetComplete'),
title: globalize.translate('HeaderResetPassword')
});
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');
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;
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')
});
loadUser(view, params);
});
});
});
2018-10-23 01:05:09 +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 () {
loadUser(view, params);
});
2020-07-10 13:54:05 +01:00
}
/* eslint-enable indent */