2020-03-29 20:22:38 +02:00
|
|
|
define(["loading", "libraryMenu", "globalize", "emby-button"], function (loading, libraryMenu, globalize) {
|
2018-10-23 01:05:09 +03:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
function loadUser(page, params) {
|
|
|
|
var 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);
|
|
|
|
page.querySelector(".username").innerHTML = user.Name;
|
|
|
|
var showPasswordSection = true;
|
|
|
|
var showLocalAccessSection = false;
|
|
|
|
|
|
|
|
if ("Guest" == user.ConnectLinkType) {
|
|
|
|
page.querySelector(".localAccessSection").classList.add("hide");
|
|
|
|
showPasswordSection = false;
|
|
|
|
} else if (user.HasConfiguredPassword) {
|
|
|
|
page.querySelector("#btnResetPassword").classList.remove("hide");
|
|
|
|
page.querySelector("#fldCurrentPassword").classList.remove("hide");
|
|
|
|
showLocalAccessSection = true;
|
|
|
|
} else {
|
|
|
|
page.querySelector("#btnResetPassword").classList.add("hide");
|
|
|
|
page.querySelector("#fldCurrentPassword").classList.add("hide");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (showPasswordSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
|
|
|
page.querySelector(".passwordSection").classList.remove("hide");
|
|
|
|
} else {
|
|
|
|
page.querySelector(".passwordSection").classList.add("hide");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (showLocalAccessSection && (loggedInUser.Policy.IsAdministrator || user.Policy.EnableUserPreferenceAccess)) {
|
|
|
|
page.querySelector(".localAccessSection").classList.remove("hide");
|
|
|
|
} else {
|
|
|
|
page.querySelector(".localAccessSection").classList.add("hide");
|
|
|
|
}
|
|
|
|
|
2018-10-23 01:05:09 +03:00
|
|
|
var txtEasyPassword = page.querySelector("#txtEasyPassword");
|
2019-11-06 13:43:39 +03:00
|
|
|
txtEasyPassword.value = "";
|
|
|
|
|
|
|
|
if (user.HasConfiguredEasyPassword) {
|
|
|
|
txtEasyPassword.placeholder = "******";
|
|
|
|
page.querySelector("#btnResetEasyPassword").classList.remove("hide");
|
|
|
|
} else {
|
|
|
|
txtEasyPassword.removeAttribute("placeholder");
|
|
|
|
txtEasyPassword.placeholder = "";
|
|
|
|
page.querySelector("#btnResetEasyPassword").classList.add("hide");
|
|
|
|
}
|
|
|
|
|
|
|
|
page.querySelector(".chkEnableLocalEasyPassword").checked = user.Configuration.EnableLocalPassword;
|
2019-11-02 20:38:58 +03:00
|
|
|
|
|
|
|
require(["autoFocuser"], function (autoFocuser) {
|
|
|
|
autoFocuser.autoFocus(page);
|
|
|
|
});
|
2019-11-06 13:43:39 +03: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
|
|
|
|
|
|
|
return function (view, params) {
|
2018-10-23 01:05:09 +03:00
|
|
|
function saveEasyPassword() {
|
2019-11-06 13:43:39 +03:00
|
|
|
var userId = params.userId;
|
|
|
|
var 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) {
|
2019-11-06 13:43:39 +03:00
|
|
|
ApiClient.getUser(userId).then(function (user) {
|
|
|
|
user.Configuration.EnableLocalPassword = view.querySelector(".chkEnableLocalEasyPassword").checked;
|
|
|
|
ApiClient.updateUserConfiguration(user.Id, user.Configuration).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
|
|
|
|
require(["toast"], function (toast) {
|
2020-03-26 14:25:16 +01:00
|
|
|
toast(globalize.translate("MessageSettingsSaved"));
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
loadUser(view, params);
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function savePassword() {
|
2019-11-06 13:43:39 +03:00
|
|
|
var userId = params.userId;
|
|
|
|
var currentPassword = view.querySelector("#txtCurrentPassword").value;
|
|
|
|
var newPassword = view.querySelector("#txtNewPassword").value;
|
|
|
|
|
2019-01-14 22:54:41 +00: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
|
|
|
|
currentPassword = "";
|
|
|
|
}
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
ApiClient.updateUserPassword(userId, currentPassword, newPassword).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
|
|
|
|
require(["toast"], function (toast) {
|
2020-03-26 14:25:16 +01:00
|
|
|
toast(globalize.translate("PasswordSaved"));
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
loadUser(view, params);
|
|
|
|
}, function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-03-26 14:25:16 +01: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) {
|
|
|
|
var form = this;
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
if (form.querySelector("#txtNewPassword").value != form.querySelector("#txtNewPasswordConfirm").value) {
|
|
|
|
require(["toast"], function (toast) {
|
2020-03-26 14:25:16 +01: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-03-26 14:25:16 +01:00
|
|
|
var msg = globalize.translate("PasswordResetConfirmation");
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
require(["confirm"], function (confirm) {
|
2020-03-26 14:25:16 +01:00
|
|
|
confirm(msg, globalize.translate("PasswordResetHeader")).then(function () {
|
2018-10-23 01:05:09 +03:00
|
|
|
var userId = params.userId;
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
ApiClient.resetUserPassword(userId).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-03-26 14:25:16 +01:00
|
|
|
message: globalize.translate("PasswordResetComplete"),
|
|
|
|
title: globalize.translate("PasswordResetHeader")
|
2019-11-06 13:43:39 +03:00
|
|
|
});
|
|
|
|
loadUser(view, params);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2018-10-23 01:05:09 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function resetEasyPassword() {
|
2020-03-26 14:25:16 +01:00
|
|
|
var msg = globalize.translate("PinCodeResetConfirmation");
|
2019-11-06 13:43:39 +03:00
|
|
|
|
|
|
|
require(["confirm"], function (confirm) {
|
2020-03-26 14:25:16 +01:00
|
|
|
confirm(msg, globalize.translate("HeaderPinCodeReset")).then(function () {
|
2018-10-23 01:05:09 +03:00
|
|
|
var userId = params.userId;
|
2019-11-06 13:43:39 +03:00
|
|
|
loading.show();
|
|
|
|
ApiClient.resetEasyPassword(userId).then(function () {
|
|
|
|
loading.hide();
|
|
|
|
Dashboard.alert({
|
2020-03-26 14:25:16 +01: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
|
|
|
|
|
|
|
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);
|
|
|
|
});
|
|
|
|
};
|
2019-01-10 20:32:17 +00:00
|
|
|
});
|