mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
loginpage.js
This commit is contained in:
parent
6c56234171
commit
e706f8bee0
1 changed files with 52 additions and 26 deletions
|
@ -1,23 +1,31 @@
|
||||||
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function(appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) {
|
define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layoutManager", "browser", "cardStyle", "emby-checkbox"], function (appHost, appSettings, dom, connectionManager, loading, layoutManager, browser) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var enableFocusTransform = !browser.slow && !browser.edge;
|
var enableFocusTransform = !browser.slow && !browser.edge;
|
||||||
|
|
||||||
function authenticateUserByName(page, apiClient, username, password) {
|
function authenticateUserByName(page, apiClient, username, password) {
|
||||||
loading.show();
|
loading.show();
|
||||||
apiClient.authenticateUserByName(username, password).then(function(result) {
|
apiClient.authenticateUserByName(username, password).then(function (result) {
|
||||||
var user = result.User;
|
var user = result.User;
|
||||||
var serverId = getParameterByName("serverid");
|
var serverId = getParameterByName("serverid");
|
||||||
var newUrl = user.Policy.IsAdministrator && !serverId ? "dashboard.html" : "home.html";
|
var newUrl;
|
||||||
|
|
||||||
|
if (user.Policy.IsAdministrator && !serverId) {
|
||||||
|
newUrl = "dashboard.html";
|
||||||
|
} else {
|
||||||
|
newUrl = "home.html";
|
||||||
|
}
|
||||||
|
|
||||||
loading.hide();
|
loading.hide();
|
||||||
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
Dashboard.onServerChanged(user.Id, result.AccessToken, apiClient);
|
||||||
Dashboard.navigate(newUrl);
|
Dashboard.navigate(newUrl);
|
||||||
}, function(response) {
|
}, function (response) {
|
||||||
page.querySelector("#txtManualName").value = "";
|
page.querySelector("#txtManualName").value = "";
|
||||||
page.querySelector("#txtManualPassword").value = "";
|
page.querySelector("#txtManualPassword").value = "";
|
||||||
loading.hide();
|
loading.hide();
|
||||||
|
|
||||||
if (response.status === 401) {
|
if (response.status === 401) {
|
||||||
require(["toast"], function(toast) {
|
require(["toast"], function (toast) {
|
||||||
toast(Globalize.translate("MessageInvalidUser"));
|
toast(Globalize.translate("MessageInvalidUser"));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -34,8 +42,18 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
context.querySelector(".manualLoginForm").classList.remove("hide");
|
context.querySelector(".manualLoginForm").classList.remove("hide");
|
||||||
context.querySelector(".visualLoginForm").classList.add("hide");
|
context.querySelector(".visualLoginForm").classList.add("hide");
|
||||||
context.querySelector(".btnManual").classList.add("hide");
|
context.querySelector(".btnManual").classList.add("hide");
|
||||||
focusPassword ? context.querySelector("#txtManualPassword").focus() : context.querySelector("#txtManualName").focus();
|
|
||||||
showCancel ? context.querySelector(".btnCancel").classList.remove("hide") : context.querySelector(".btnCancel").classList.add("hide");
|
if (focusPassword) {
|
||||||
|
context.querySelector("#txtManualPassword").focus();
|
||||||
|
} else {
|
||||||
|
context.querySelector("#txtManualName").focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showCancel) {
|
||||||
|
context.querySelector(".btnCancel").classList.remove("hide");
|
||||||
|
} else {
|
||||||
|
context.querySelector(".btnCancel").classList.add("hide");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"];
|
var metroColors = ["#6FBD45", "#4BB3DD", "#4164A5", "#E12026", "#800080", "#E1B222", "#008040", "#0094FF", "#FF00C7", "#FF870F", "#7F0037"];
|
||||||
|
@ -49,22 +67,25 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
if (str) {
|
if (str) {
|
||||||
var character = String(str.substr(0, 1).charCodeAt());
|
var character = String(str.substr(0, 1).charCodeAt());
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
|
|
||||||
for (var i = 0; i < character.length; i++) {
|
for (var i = 0; i < character.length; i++) {
|
||||||
sum += parseInt(character.charAt(i));
|
sum += parseInt(character.charAt(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
var index = String(sum).substr(-1);
|
var index = String(sum).substr(-1);
|
||||||
return metroColors[index];
|
return metroColors[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
return getRandomMetroColor();
|
return getRandomMetroColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadUserList(context, apiClient, users) {
|
function loadUserList(context, apiClient, users) {
|
||||||
var html = "";
|
var html = "";
|
||||||
|
|
||||||
for (var i = 0; i < users.length; i++) {
|
for (var i = 0; i < users.length; i++) {
|
||||||
var user = users[i];
|
var user = users[i];
|
||||||
|
|
||||||
// TODO move card creation code to Card component
|
// TODO move card creation code to Card component
|
||||||
|
|
||||||
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
var cssClass = "card squareCard scalableCard squareCard-scalable";
|
||||||
|
|
||||||
if (layoutManager.tv) {
|
if (layoutManager.tv) {
|
||||||
|
@ -76,13 +97,13 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
}
|
}
|
||||||
|
|
||||||
var cardBoxCssClass = "cardBox cardBox-bottompadded";
|
var cardBoxCssClass = "cardBox cardBox-bottompadded";
|
||||||
|
|
||||||
html += '<button type="button" class="' + cssClass + '">';
|
html += '<button type="button" class="' + cssClass + '">';
|
||||||
html += '<div class="' + cardBoxCssClass + '">';
|
html += '<div class="' + cardBoxCssClass + '">';
|
||||||
html += '<div class="cardScalable">';
|
html += '<div class="cardScalable">';
|
||||||
html += '<div class="cardPadder cardPadder-square"></div>';
|
html += '<div class="cardPadder cardPadder-square"></div>';
|
||||||
html += '<div class="cardContent" data-haspw="' + user.HasPassword + '" data-username="' + user.Name + '" data-userid="' + user.Id + '">';
|
html += '<div class="cardContent" data-haspw="' + user.HasPassword + '" data-username="' + user.Name + '" data-userid="' + user.Id + '">';
|
||||||
var imgUrl;
|
var imgUrl;
|
||||||
|
|
||||||
if (user.PrimaryImageTag) {
|
if (user.PrimaryImageTag) {
|
||||||
imgUrl = apiClient.getUserImageUrl(user.Id, {
|
imgUrl = apiClient.getUserImageUrl(user.Id, {
|
||||||
width: 300,
|
width: 300,
|
||||||
|
@ -95,6 +116,7 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
imgUrl = "assets/img/avatar.png";
|
imgUrl = "assets/img/avatar.png";
|
||||||
html += '<div class="cardImageContainer coveredImage coveredImage-noScale" style="background-image:url(\'' + imgUrl + "');background-color:" + background + ';"></div>';
|
html += '<div class="cardImageContainer coveredImage coveredImage-noScale" style="background-image:url(\'' + imgUrl + "');background-color:" + background + ';"></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
html += '<div class="cardFooter visualCardBox-cardFooter">';
|
||||||
|
@ -103,13 +125,19 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
html += "</div>";
|
html += "</div>";
|
||||||
html += "</button>";
|
html += "</button>";
|
||||||
}
|
}
|
||||||
|
|
||||||
context.querySelector("#divUsers").innerHTML = html;
|
context.querySelector("#divUsers").innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
return function(view, params) {
|
return function (view, params) {
|
||||||
function getApiClient() {
|
function getApiClient() {
|
||||||
var serverId = params.serverid;
|
var serverId = params.serverid;
|
||||||
return serverId ? connectionManager.getOrCreateApiClient(serverId) : ApiClient;
|
|
||||||
|
if (serverId) {
|
||||||
|
return connectionManager.getOrCreateApiClient(serverId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ApiClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
function showVisualForm() {
|
function showVisualForm() {
|
||||||
|
@ -122,14 +150,16 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
view.querySelector("#divUsers").addEventListener("click", function(e) {
|
view.querySelector("#divUsers").addEventListener("click", function (e) {
|
||||||
var card = dom.parentWithClass(e.target, "card");
|
var card = dom.parentWithClass(e.target, "card");
|
||||||
var cardContent = card ? card.querySelector(".cardContent") : null;
|
var cardContent = card ? card.querySelector(".cardContent") : null;
|
||||||
|
|
||||||
if (cardContent) {
|
if (cardContent) {
|
||||||
var context = view;
|
var context = view;
|
||||||
var id = cardContent.getAttribute("data-userid");
|
var id = cardContent.getAttribute("data-userid");
|
||||||
var name = cardContent.getAttribute("data-username");
|
var name = cardContent.getAttribute("data-username");
|
||||||
var haspw = cardContent.getAttribute("data-haspw");
|
var haspw = cardContent.getAttribute("data-haspw");
|
||||||
|
|
||||||
if (id === 'manual') {
|
if (id === 'manual') {
|
||||||
context.querySelector("#txtManualName").value = "";
|
context.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(context, true);
|
showManualForm(context, true);
|
||||||
|
@ -142,33 +172,30 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
view.querySelector(".manualLoginForm").addEventListener("submit", function (e) {
|
||||||
view.querySelector(".manualLoginForm").addEventListener("submit", function(e) {
|
|
||||||
appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);
|
appSettings.enableAutoLogin(view.querySelector(".chkRememberLogin").checked);
|
||||||
var apiClient = getApiClient();
|
var apiClient = getApiClient();
|
||||||
authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value);
|
authenticateUserByName(view, apiClient, view.querySelector("#txtManualName").value, view.querySelector("#txtManualPassword").value);
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
view.querySelector(".btnForgotPassword").addEventListener("click", function () {
|
||||||
view.querySelector(".btnForgotPassword").addEventListener("click", function() {
|
|
||||||
Dashboard.navigate("forgotpassword.html");
|
Dashboard.navigate("forgotpassword.html");
|
||||||
});
|
});
|
||||||
|
|
||||||
view.querySelector(".btnCancel").addEventListener("click", showVisualForm);
|
view.querySelector(".btnCancel").addEventListener("click", showVisualForm);
|
||||||
|
view.querySelector(".btnManual").addEventListener("click", function () {
|
||||||
view.querySelector(".btnManual").addEventListener("click", function() {
|
|
||||||
view.querySelector("#txtManualName").value = "";
|
view.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(view, true);
|
showManualForm(view, true);
|
||||||
});
|
});
|
||||||
|
view.addEventListener("viewshow", function (e) {
|
||||||
view.addEventListener("viewshow", function(e) {
|
|
||||||
loading.show();
|
loading.show();
|
||||||
|
|
||||||
if (!appHost.supports('multiserver')) {
|
if (!appHost.supports('multiserver')) {
|
||||||
view.querySelector(".btnSelectServer").classList.add("hide");
|
view.querySelector(".btnSelectServer").classList.add("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
var apiClient = getApiClient();
|
var apiClient = getApiClient();
|
||||||
apiClient.getPublicUsers().then(function(users) {
|
apiClient.getPublicUsers().then(function (users) {
|
||||||
if (users.length) {
|
if (users.length) {
|
||||||
showVisualForm();
|
showVisualForm();
|
||||||
loadUserList(view, apiClient, users);
|
loadUserList(view, apiClient, users);
|
||||||
|
@ -176,13 +203,12 @@ define(["apphost", "appSettings", "dom", "connectionManager", "loading", "layout
|
||||||
view.querySelector("#txtManualName").value = "";
|
view.querySelector("#txtManualName").value = "";
|
||||||
showManualForm(view, false, false);
|
showManualForm(view, false, false);
|
||||||
}
|
}
|
||||||
}).catch().then(function() {
|
}).catch().then(function () {
|
||||||
loading.hide();
|
loading.hide();
|
||||||
});
|
});
|
||||||
|
apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function (options) {
|
||||||
apiClient.getJSON(apiClient.getUrl("Branding/Configuration")).then(function(options) {
|
|
||||||
view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || "";
|
view.querySelector(".disclaimer").textContent = options.LoginDisclaimer || "";
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue