/usr/share/pyshared/social_auth/backends/steam.py is in python-django-social-auth 0.7.23-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | """Steam OpenId support"""
import re
import urllib
import urllib2
from django.utils import simplejson
from social_auth.backends import OpenIdAuth, OpenIDBackend
from social_auth.exceptions import AuthFailed
from social_auth.utils import setting
STEAM_ID = re.compile('steamcommunity.com/openid/id/(.*?)$')
USER_INFO = 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?'
class SteamBackend(OpenIDBackend):
"""Steam OpenId authentication backend"""
name = 'steam'
def get_user_id(self, details, response):
"""Return user unique id provided by service"""
return self._user_id(response)
def get_user_details(self, response):
user_id = self._user_id(response)
url = USER_INFO + urllib.urlencode({'key': setting('STEAM_API_KEY'),
'steamids': user_id})
details = {}
try:
player = simplejson.load(urllib2.urlopen(url))
except (ValueError, IOError):
pass
else:
if len(player['response']['players']) > 0:
player = player['response']['players'][0]
details = {'username': player.get('personaname'),
'email': '',
'fullname': '',
'first_name': '',
'last_name': '',
'player': player}
return details
def extra_data(self, user, uid, response, details):
return details['player']
def _user_id(self, response):
match = STEAM_ID.search(response.identity_url)
if match is None:
raise AuthFailed(self, 'Missing Steam Id')
return match.group(1)
class SteamAuth(OpenIdAuth):
"""Steam OpenId authentication"""
AUTH_BACKEND = SteamBackend
def openid_url(self):
"""Return Steam OpenId service url"""
return 'http://steamcommunity.com/openid'
@classmethod
def enabled(cls):
"""Steam OpenId is enabled when STEAM_API_KEY is defined"""
return setting('STEAM_API_KEY') is not None
# Backend definition
BACKENDS = {
'steam': SteamAuth
}
|