pokemon-showdown-client/index.template.html
Guangcong Luo 644d5ccf91 Support Google login (two-factor auth) (#999)
This doesn't support setting accounts up for Google login: that still
has to be manually done via the database by setting the email field to
`username@gmail.com@`, where the second `@` denotes that it's using
Gmail login.

If the email field does end in `@`, `getassertion` will note this by
sending `;;@gmail`, to convey that the server is expecting a Google
login token rather than a password.

Upon receiving `;;@gmail`, the client will replace the password box will
with a Google login button, and then send the resulting Google login
token to the server in the `password` field. The server will validate
the "password" using the Google server libraries, and otherwise handle
the login as normal.

Note that Google login requires various features that a paranoid person
might disable; most notably 3rd-party cookies.

Fixes Zarel/Pokemon-Showdown#3394
2017-09-13 16:20:38 -04:00

176 lines
7.9 KiB
HTML

<!DOCTYPE html>
<!--
.............
,...................
,..................========
....~=##############=======+
...##################=======.
..=######+..., +##=======,..
..=###### ., ..... +=====+,....
###########~,.. ======
.....##############~=====+.....,
..........###########====......
............#######,==......
=###.,........+#####+ .......
####################~......,
#################+======,
++++++++++++ =======+
Pokemon Showdown - http://pokemonshowdown.com/
MIT license
Viewing source? We're open source! Why not check out our GitHub
repository and come help out?
server: http://github.com/Zarel/Pokemon-Showdown
client: http://github.com/Zarel/Pokemon-Showdown-Client (you are here)
Also feel free to visit us in the Development chatroom:
http://play.pokemonshowdown.com/development
-->
<html>
<head>
<meta charset="utf-8" />
<meta id="viewport" name="viewport" content="width=device-width" />
<title>Showdown!</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<link rel="shortcut icon" href="//play.pokemonshowdown.com/favicon.ico" id="dynamic-favicon" />
<link rel="icon" sizes="128x128" href="//play.pokemonshowdown.com/favicon-128.png" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/client.css?" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/sim-types.css?" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/battle.css?" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/utilichart.css?" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/font-awesome.css?" />
<link rel="stylesheet" href="//play.pokemonshowdown.com/style/jquery.slider.min.css?" />
<!-- meta name="mobile-web-app-capable" content="yes" / -->
<!-- meta name="apple-mobile-web-app-capable" content="yes" / -->
<meta name="robots" content="noindex" />
<meta name="google-signin-client_id" content="912270888098-jjnre816lsuhc5clj3vbcn4o2q7p4qvk.apps.googleusercontent.com">
<script>
var Config = {};
</script>
<!--[if lte IE 8]><script>
document.location.replace('http://pokemonshowdown.com/autodownload/win');
</script><![endif]-->
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
if (!(/^(.*)\.psim\.us$/i.test(document.location.hostname))) {
ga('create', 'UA-26211653-1', 'pokemonshowdown.com');
} else {
ga('create', 'UA-26211653-2', 'psim.us');
}
ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
<script>
window.onerror = function(err, uri, line) {
var msg = uri + ':' + line + ': ' + err;
if ('ga' in window) {
ga('send', 'event', 'Client error', msg);
} else {
alert('ERROR: ' + msg);
}
return false;
};
</script>
</head>
<body>
<div id="header" class="header">
<img class="logo" src="//play.pokemonshowdown.com/pokemonshowdownbeta.png" srcset="//play.pokemonshowdown.com/pokemonshowdownbeta@2x.png 2x" alt="Pok&eacute;mon Showdown! (beta)" width="146" height="44" /><div class="maintabbarbottom"></div>
</div>
<div class="ps-room scrollable" id="mainmenu"><div class="mainmenuwrapper">
<div class="leftmenu">
<div class="activitymenu">
<div class="pmbox">
<div class="pm-window news-embed" data-newsid="<!-- newsid -->">
<h3><button class="closebutton" tabindex="-1"><i class="fa fa-times-circle"></i></button><button class="minimizebutton" tabindex="-1"><i class="fa fa-minus-circle"></i></button>News</h3>
<div class="pm-log" style="max-height:none">
<!-- news -->
</div>
</div>
</div>
</div>
<div class="mainmenu">
<div id="loading-message" class="mainmessage">Initializing... <noscript>FAILED<br /><br />Pok&eacute;mon Showdown requires JavaScript.</noscript></div>
</div>
</div>
<div class="rightmenu">
</div>
<div class="mainmenufooter">
<small><a href="//pokemonshowdown.com/" target="_blank"><strong>Pokémon Showdown</strong></a> | <a href="http://smogon.com/" target="_blank"><strong>Smogon</strong></a><br><a href="//dex.pokemonshowdown.com/" target="_blank">Pokédex</a> | <a href="//pokemonshowdown.com/replay/" target="_blank">Replays</a> | <a href="//pokemonshowdown.com/rules" target="_blank">Rules</a> | <a href="//pokemonshowdown.com/credits" target="_blank">Credits</a> | <a href="http://smogon.com/forums/" target="_blank">Forum</a></small>
</div>
</div></div>
<script>
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading libraries...';
</script>
<script src="//play.pokemonshowdown.com/js/lib/jquery-2.1.4.min.js"></script>
<script src="//play.pokemonshowdown.com/js/lib/jquery-cookie.js"></script>
<script src="//play.pokemonshowdown.com/js/lib/autoresize.jquery.min.js?"></script>
<script src="//play.pokemonshowdown.com/js/lib/jquery.json-2.3.min.js"></script>
<script src="//play.pokemonshowdown.com/js/lib/soundmanager2-nodebug-jsmin.js?"></script>
<script>
soundManager.setup({url: '//play.pokemonshowdown.com/swf/'});
</script>
<script src="//play.pokemonshowdown.com/js/lib/html-css-sanitizer-minified.js?"></script>
<script src="//play.pokemonshowdown.com/js/lib/lodash.core.js?"></script>
<script src="//play.pokemonshowdown.com/js/lib/backbone.js?"></script>
<script src="//play.pokemonshowdown.com/js/lib/d3.v3.min.js"></script>
<script>
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading data...';
</script>
<script src="//play.pokemonshowdown.com/config/config.js?"></script>
<script src="//play.pokemonshowdown.com/js/battledata.js?"></script>
<script src="//play.pokemonshowdown.com/js/storage.js?"></script>
<script src="//play.pokemonshowdown.com/data/pokedex-mini.js?"></script>
<script src="//play.pokemonshowdown.com/data/typechart.js?"></script>
<script src="//play.pokemonshowdown.com/js/battle.js?"></script>
<script src="//play.pokemonshowdown.com/js/lib/sockjs-1.1.1-nwjsfix.min.js"></script>
<script src="//play.pokemonshowdown.com/js/lib/color-thief.min.js"></script>
<script>
document.getElementById('loading-message').innerHTML += ' DONE<br />Loading client...';
</script>
<script src="//play.pokemonshowdown.com/js/client.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-topbar.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-mainmenu.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-teambuilder.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-ladder.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-chat.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-chat-tournament.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-battle-tooltips.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-battle.js?"></script>
<script src="//play.pokemonshowdown.com/js/client-rooms.js?"></script>
<script src="//play.pokemonshowdown.com/data/graphics.js?"></script>
<script>
var app = new App();
</script>
<script src="//play.pokemonshowdown.com/js/lib/jquery.slider.min.js?"></script>
<script src="//play.pokemonshowdown.com/data/pokedex.js?"></script>
<script src="//play.pokemonshowdown.com/data/moves.js?"></script>
<script src="//play.pokemonshowdown.com/data/items.js?"></script>
<script src="//play.pokemonshowdown.com/data/abilities.js?"></script>
<script src="//play.pokemonshowdown.com/data/search-index.js?"></script>
<script src="//play.pokemonshowdown.com/data/teambuilder-tables.js?"></script>
<script src="//play.pokemonshowdown.com/js/search.js?"></script>
<script src="//play.pokemonshowdown.com/data/aliases.js?" async="async"></script>
</body>
</html>