1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/scripts/connectlogin.js

314 lines
10 KiB
JavaScript
Raw Normal View History

2016-06-18 13:26:42 -04:00
define([], function () {
2014-10-21 08:42:02 -04:00
function login(page, username, password) {
2016-07-22 13:30:39 -04:00
Dashboard.showLoadingMsg();
2014-10-21 08:42:02 -04:00
2015-12-14 10:43:03 -05:00
ConnectionManager.loginToConnect(username, password).then(function () {
2014-10-21 08:42:02 -04:00
2016-07-22 13:30:39 -04:00
Dashboard.hideLoadingMsg();
2015-05-20 12:28:55 -04:00
Dashboard.navigate('selectserver.html');
2014-10-21 08:42:02 -04:00
2015-12-14 10:43:03 -05:00
}, function () {
2014-10-25 14:32:58 -04:00
2016-07-22 13:30:39 -04:00
Dashboard.hideLoadingMsg();
2014-10-21 08:42:02 -04:00
Dashboard.alert({
message: Globalize.translate('MessageInvalidUser'),
title: Globalize.translate('HeaderLoginFailure')
});
2016-06-18 13:26:42 -04:00
page.querySelector('#txtManualPassword').value = '';
2014-10-21 08:42:02 -04:00
});
}
2015-05-05 11:24:47 -04:00
function handleConnectionResult(page, result) {
2016-07-22 13:30:39 -04:00
Dashboard.hideLoadingMsg();
2015-05-13 00:55:19 -04:00
2015-05-05 11:24:47 -04:00
switch (result.State) {
case MediaBrowser.ConnectionState.SignedIn:
{
var apiClient = result.ApiClient;
2015-05-20 12:28:55 -04:00
Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient);
2016-03-16 01:33:31 -04:00
Dashboard.navigate('home.html');
2015-05-05 11:24:47 -04:00
}
break;
case MediaBrowser.ConnectionState.ServerSignIn:
{
2015-05-20 13:29:26 -04:00
Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id, false, 'none');
2015-05-05 11:24:47 -04:00
}
break;
case MediaBrowser.ConnectionState.ServerSelection:
{
2015-05-20 13:29:26 -04:00
Dashboard.navigate('selectserver.html', false, 'none');
2015-05-05 11:24:47 -04:00
}
break;
case MediaBrowser.ConnectionState.ConnectSignIn:
{
loadMode(page, 'welcome');
}
break;
2016-02-21 17:17:38 -05:00
case MediaBrowser.ConnectionState.ServerUpdateNeeded:
{
Dashboard.alert({
message: Globalize.translate('ServerUpdateNeeded', '<a href="https://emby.media">https://emby.media</a>')
});
}
break;
2015-05-06 08:56:26 -04:00
case MediaBrowser.ConnectionState.Unavailable:
{
Dashboard.alert({
message: Globalize.translate("MessageUnableToConnectToServer"),
title: Globalize.translate("HeaderConnectionFailure")
});
}
break;
2015-05-05 11:24:47 -04:00
default:
break;
}
}
function loadAppConnection(page) {
2016-07-22 13:30:39 -04:00
Dashboard.showLoadingMsg();
2015-05-05 11:24:47 -04:00
2015-12-14 10:43:03 -05:00
ConnectionManager.connect().then(function (result) {
2015-05-05 11:24:47 -04:00
handleConnectionResult(page, result);
});
}
function loadPage(page) {
2015-05-06 08:56:26 -04:00
var mode = getParameterByName('mode') || 'auto';
2015-05-05 11:24:47 -04:00
2015-05-06 08:56:26 -04:00
if (mode == 'auto') {
2015-05-05 11:24:47 -04:00
2015-05-28 19:37:43 -04:00
if (AppInfo.isNativeApp) {
2015-05-05 11:24:47 -04:00
loadAppConnection(page);
return;
}
mode = 'connect';
}
loadMode(page, mode);
}
function loadMode(page, mode) {
if (mode == 'welcome') {
2016-06-18 13:26:42 -04:00
page.querySelector('.connectLoginForm').classList.add('hide');
page.querySelector('.welcomeContainer').classList.remove('hide');
page.querySelector('.manualServerForm').classList.add('hide');
page.querySelector('.signupForm').classList.add('hide');
2015-05-05 11:24:47 -04:00
}
else if (mode == 'connect') {
2016-06-18 13:26:42 -04:00
page.querySelector('.connectLoginForm').classList.remove('hide');
page.querySelector('.welcomeContainer').classList.add('hide');
page.querySelector('.manualServerForm').classList.add('hide');
page.querySelector('.signupForm').classList.add('hide');
2015-05-05 11:24:47 -04:00
}
else if (mode == 'manualserver') {
2016-06-18 13:26:42 -04:00
page.querySelector('.manualServerForm').classList.remove('hide');
page.querySelector('.connectLoginForm').classList.add('hide');
page.querySelector('.welcomeContainer').classList.add('hide');
page.querySelector('.signupForm').classList.add('hide');
2015-06-13 19:56:59 -04:00
}
else if (mode == 'signup') {
2016-06-18 13:26:42 -04:00
page.querySelector('.manualServerForm').classList.add('hide');
page.querySelector('.connectLoginForm').classList.add('hide');
page.querySelector('.welcomeContainer').classList.add('hide');
page.querySelector('.signupForm').classList.remove('hide');
2015-06-15 00:17:12 -04:00
initSignup(page);
2015-05-05 11:24:47 -04:00
}
}
2015-05-13 00:55:19 -04:00
function skip() {
Dashboard.navigate('selectserver.html');
}
2016-06-18 13:26:42 -04:00
function requireCaptcha() {
return !AppInfo.isNativeApp && window.location.href.toLowerCase().indexOf('https') == 0;
}
2015-05-19 15:15:40 -04:00
2016-06-18 13:26:42 -04:00
function supportInAppSignup() {
return AppInfo.isNativeApp;
return AppInfo.isNativeApp || window.location.href.toLowerCase().indexOf('https') == 0;
2015-05-19 15:15:40 -04:00
}
2016-06-18 13:26:42 -04:00
function initSignup(page) {
if (!supportInAppSignup()) {
return;
}
if (!requireCaptcha()) {
return;
}
2015-05-19 15:15:40 -04:00
2016-06-18 13:26:42 -04:00
require(['https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit'], function () {
2015-05-19 15:15:40 -04:00
2016-06-18 13:26:42 -04:00
});
2015-05-19 15:15:40 -04:00
}
2016-06-18 13:26:42 -04:00
function submitManualServer(page) {
2015-06-13 19:56:59 -04:00
2016-06-18 13:26:42 -04:00
var host = page.querySelector('#txtServerHost').value;
var port = page.querySelector('#txtServerPort').value;
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
if (port) {
host += ':' + port;
}
2015-06-13 19:56:59 -04:00
2016-07-22 13:30:39 -04:00
Dashboard.showLoadingMsg();
2015-06-13 19:56:59 -04:00
2016-06-18 13:26:42 -04:00
ConnectionManager.connectToAddress(host).then(function (result) {
2015-06-13 19:56:59 -04:00
2016-06-18 13:26:42 -04:00
handleConnectionResult(page, result);
2015-06-13 19:56:59 -04:00
2016-06-18 13:26:42 -04:00
}, function () {
handleConnectionResult(page, {
State: MediaBrowser.ConnectionState.Unavailable
});
2015-06-13 19:56:59 -04:00
});
}
2016-06-18 13:26:42 -04:00
function submit(page) {
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
var user = page.querySelector('#txtManualName').value;
var password = page.querySelector('#txtManualPassword').value;
login(page, user, password);
2015-06-15 00:17:12 -04:00
}
2016-06-18 13:26:42 -04:00
return function (view, params) {
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
function onSubmit(e) {
submit(view);
e.preventDefault();
return false;
2015-06-15 00:17:12 -04:00
}
2016-06-18 13:26:42 -04:00
function onManualServerSubmit(e) {
submitManualServer(view);
e.preventDefault();
return false;
2015-06-15 00:17:12 -04:00
}
2016-06-18 13:26:42 -04:00
function onSignupFormSubmit(e) {
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
if (!supportInAppSignup()) {
e.preventDefault();
return false;
}
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
var page = view;
2015-05-06 23:11:51 -04:00
2016-06-18 13:26:42 -04:00
ConnectionManager.signupForConnect(page.querySelector('#txtSignupEmail', page).value, page.querySelector('#txtSignupUsername', page).value, page.querySelector('#txtSignupPassword', page).value, page.querySelector('#txtSignupPasswordConfirm', page).value).then(function () {
2015-05-06 23:11:51 -04:00
2016-06-18 13:26:42 -04:00
Dashboard.alert({
message: Globalize.translate('MessageThankYouForConnectSignUp'),
callback: function () {
Dashboard.navigate('connectlogin.html?mode=welcome');
}
});
}, function (result) {
if (result.errorCode == 'passwordmatch') {
Dashboard.alert({
message: Globalize.translate('ErrorMessagePasswordNotMatchConfirm')
});
}
else if (result.errorCode == 'USERNAME_IN_USE') {
Dashboard.alert({
message: Globalize.translate('ErrorMessageUsernameInUse')
});
}
else if (result.errorCode == 'EMAIL_IN_USE') {
Dashboard.alert({
message: Globalize.translate('ErrorMessageEmailInUse')
});
} else {
Dashboard.alert({
message: Globalize.translate('DefaultErrorMessage')
});
}
2015-05-06 23:11:51 -04:00
2016-06-18 13:26:42 -04:00
});
e.preventDefault();
return false;
}
2015-05-19 15:15:40 -04:00
2016-06-18 13:26:42 -04:00
view.querySelector('.btnSkipConnect').addEventListener('click', skip);
2015-06-15 00:17:12 -04:00
2016-06-18 13:26:42 -04:00
view.querySelector('.connectLoginForm').addEventListener('submit', onSubmit);
view.querySelector('.manualServerForm').addEventListener('submit', onManualServerSubmit);
view.querySelector('.signupForm').addEventListener('submit', onSignupFormSubmit);
view.querySelector('.btnSignupForConnect').addEventListener('click', function (e) {
2015-06-15 00:17:12 -04:00
if (supportInAppSignup()) {
2016-06-18 13:26:42 -04:00
e.preventDefault();
e.stopPropagation();
2015-06-15 00:17:12 -04:00
Dashboard.navigate('connectlogin.html?mode=signup');
return false;
}
});
2016-06-18 13:26:42 -04:00
view.querySelector('.btnCancelSignup').addEventListener('click', function () {
2015-06-16 00:52:01 -04:00
history.back();
});
2016-06-18 13:26:42 -04:00
view.querySelector('.btnCancelManualServer').addEventListener('click', function () {
2015-06-16 00:52:01 -04:00
history.back();
});
2016-06-18 13:26:42 -04:00
view.querySelector('.btnWelcomeNext').addEventListener('click', function () {
2015-06-16 00:52:01 -04:00
Dashboard.navigate('connectlogin.html?mode=connect');
});
2016-06-18 13:26:42 -04:00
var terms = view.querySelector('.terms');
2015-10-08 13:54:38 -04:00
terms.innerHTML = Globalize.translate('LoginDisclaimer') + "<div style='margin-top:5px;'><a href='http://emby.media/terms' target='_blank'>" + Globalize.translate('TermsOfUse') + "</a></div>";
if (AppInfo.isNativeApp) {
terms.classList.add('hide');
2016-06-18 13:26:42 -04:00
view.querySelector('.tvAppInfo').classList.add('hide');
2015-10-08 13:54:38 -04:00
} else {
terms.classList.remove('hide');
2016-06-18 13:26:42 -04:00
view.querySelector('.tvAppInfo').classList.remove('hide');
2015-05-05 11:24:47 -04:00
}
2016-06-18 13:26:42 -04:00
view.addEventListener('viewbeforeshow', function () {
2015-05-05 11:24:47 -04:00
2016-06-18 13:26:42 -04:00
var page = this;
2015-05-05 11:24:47 -04:00
2016-06-18 13:26:42 -04:00
page.querySelector('#txtSignupEmail').value = '';
page.querySelector('#txtSignupUsername').value = '';
page.querySelector('#txtSignupPassword').value = '';
page.querySelector('#txtSignupPasswordConfirm').value = '';
2015-05-06 08:56:26 -04:00
2016-06-18 13:26:42 -04:00
if (browserInfo.safari && AppInfo.isNativeApp) {
// With apple we can't even have a link to the site
page.querySelector('.embyIntroDownloadMessage').innerHTML = Globalize.translate('EmbyIntroDownloadMessageWithoutLink');
} else {
var link = '<a href="http://emby.media" target="_blank">http://emby.media</a>';
page.querySelector('.embyIntroDownloadMessage').innerHTML = Globalize.translate('EmbyIntroDownloadMessage', link);
}
2015-05-05 11:24:47 -04:00
});
2014-10-21 08:42:02 -04:00
2016-06-18 13:26:42 -04:00
view.addEventListener('viewshow', function () {
loadPage(view);
});
};
});