mirror of
https://github.com/smogon/pokemon-showdown-client.git
synced 2026-04-25 07:57:01 -05:00
Correctly synchronise sid and username across domains
This commit is contained in:
parent
03dd6a2586
commit
d672ae57b5
|
|
@ -73,6 +73,7 @@ foreach ($reqs as $reqData) {
|
|||
$challengeprefix = verifyCrossDomainRequest();
|
||||
$out['assertion'] = $users->getAssertion($curuser['userid'], $serverhostname, null,
|
||||
$challengekeyid, $challenge, $challengeprefix);
|
||||
$out['sid'] = $users->sid;
|
||||
break;
|
||||
case 'register':
|
||||
$serverhostname = '' . getServerHostName(@$reqData['serverid']);
|
||||
|
|
@ -102,6 +103,7 @@ foreach ($reqs as $reqData) {
|
|||
$out['curuser'] = $user;
|
||||
$out['assertion'] = $users->getAssertion($user['userid'],
|
||||
$serverhostname, $user, $challengekeyid, $challenge, $challengeprefix);
|
||||
$out['sid'] = $users->sid;
|
||||
$out['actionsuccess'] = true;
|
||||
if ($curuser && $serverhostname) {
|
||||
$out['sessiontoken'] = $users->getSessionToken($serverhostname) . '::' . $serverhostname;
|
||||
|
|
|
|||
|
|
@ -23,18 +23,25 @@ $sid = isset($_COOKIE['sid']) ? $_COOKIE['sid'] : '';
|
|||
?>
|
||||
<!DOCTYPE html>
|
||||
<script src="/js/jquery-1.9.0.min.js"></script>
|
||||
<script src="/js/jquery-cookie.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
var origin = <?php echo json_encode($origin) ?>;
|
||||
$(window).on('message', function($e) {
|
||||
var e = $e.originalEvent;
|
||||
if (e.origin !== origin) return;
|
||||
if (e.data.prefs) {
|
||||
localStorage.setItem('showdown_prefs', e.data.prefs);
|
||||
if (e.data.username) {
|
||||
$.cookie('showdown_username', e.data.username, {expires: 14});
|
||||
}
|
||||
if (e.data.sid) {
|
||||
$.cookie('sid', e.data.username, {expires: 14});
|
||||
}
|
||||
if (e.data.teams) {
|
||||
localStorage.setItem('showdown_teams', e.data.teams);
|
||||
}
|
||||
if (e.data.prefs) {
|
||||
localStorage.setItem('showdown_prefs', e.data.prefs);
|
||||
}
|
||||
});
|
||||
var message = {
|
||||
upkeep: <?php echo json_encode($upkeep) ?>,
|
||||
|
|
|
|||
|
|
@ -308,6 +308,8 @@ var Tools = {
|
|||
|
||||
resourcePrefix: 'http://play.pokemonshowdown.com/',
|
||||
|
||||
postCrossDomainMessage: function(data) {},
|
||||
|
||||
showInterstice: (function() {
|
||||
var patterns = (function(whitelist) {
|
||||
var patterns = [];
|
||||
|
|
|
|||
28
js/sim.js
28
js/sim.js
|
|
@ -2512,6 +2512,7 @@ function updateMe() {
|
|||
$.cookie('showdown_username', me.name, {
|
||||
expires: 14
|
||||
});
|
||||
Tools.postCrossDomainMessage({username: me.name});
|
||||
} else {
|
||||
$('#userbar').html(notifybutton + '<i class="icon-user" style="color:#999"></i> ' + sanitize(me.name) + mutebutton + ' <button onclick="return rooms[\'lobby\'].formRename()" style="font-size:9pt">Choose name</button>');
|
||||
}
|
||||
|
|
@ -3210,6 +3211,9 @@ function overlaySubmit(e, overlayType) {
|
|||
challenge: me.challenge
|
||||
}, Tools.safeJson(function (data) {
|
||||
if (!data) data = {};
|
||||
if (data.sid !== undefined) {
|
||||
Tools.postCrossDomainMessage({sid: data.sid});
|
||||
}
|
||||
var token = data.assertion;
|
||||
if (data.curuser && data.curuser.loggedin) {
|
||||
me.registered = data.curuser;
|
||||
|
|
@ -3260,6 +3264,9 @@ function overlaySubmit(e, overlayType) {
|
|||
challenge: me.challenge
|
||||
}, Tools.safeJson(function (data) {
|
||||
if (!data) data = {};
|
||||
if (data.sid !== undefined) {
|
||||
Tools.postCrossDomainMessage({sid: data.sid});
|
||||
}
|
||||
var token = data.assertion;
|
||||
if (data.curuser && data.curuser.loggedin) {
|
||||
me.registered = data.curuser;
|
||||
|
|
@ -3562,27 +3569,28 @@ teams = (function() {
|
|||
$(window).on('message', function($e) {
|
||||
var e = $e.originalEvent;
|
||||
if (e.origin !== origin) return;
|
||||
if (e.data.sid) {
|
||||
$.cookie('sid', e.data.sid);
|
||||
}
|
||||
Tools.postCrossDomainMessage = function(data) {
|
||||
return e.source.postMessage(data, origin);
|
||||
};
|
||||
// sid
|
||||
$.cookie('sid', e.data.sid);
|
||||
// teams
|
||||
if (e.data.teams) {
|
||||
cookieTeams = false;
|
||||
teams = $.parseJSON(e.data.teams);
|
||||
}
|
||||
Teambuilder.writeTeams = function() {
|
||||
e.source.postMessage({
|
||||
teams: $.toJSON(teams)
|
||||
}, origin);
|
||||
Tools.postCrossDomainMessage({teams: $.toJSON(teams)});
|
||||
};
|
||||
// prefs
|
||||
if (e.data.prefs) {
|
||||
Tools.prefs.data = $.parseJSON(e.data.prefs);
|
||||
}
|
||||
Tools.prefs.save = function() {
|
||||
e.source.postMessage({
|
||||
prefs: $.toJSON(this.data)
|
||||
}, origin);
|
||||
Tools.postCrossDomainMessage({prefs: $.toJSON(this.data)});
|
||||
};
|
||||
connect(e.data.upkeep, e.data.username || $.cookie('showdown_username'));
|
||||
// connect
|
||||
connect(e.data.upkeep, e.data.username);
|
||||
});
|
||||
var $iframe = $(
|
||||
'<iframe src="http://play.pokemonshowdown.com/crossdomain.php?prefix=' +
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user