46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
"""
|
|
OpenID Adapter for Steam
|
|
|
|
The Steam login API is simple OpenID but requires extra API calls
|
|
for basic resources such as usernames.
|
|
|
|
Resources:
|
|
|
|
* Steam Web API Documentation
|
|
https://steamcommunity.com/dev
|
|
|
|
* Steam Partner API documentation
|
|
https://partner.steamgames.com/doc/features/auth#website
|
|
"""
|
|
from django.urls import reverse
|
|
|
|
from allauth.socialaccount.providers.openid.views import (
|
|
OpenIDCallbackView,
|
|
OpenIDLoginView,
|
|
)
|
|
|
|
from .provider import SteamOpenIDProvider
|
|
|
|
|
|
STEAM_OPENID_URL = "https://steamcommunity.com/openid"
|
|
|
|
|
|
class SteamOpenIDLoginView(OpenIDLoginView):
|
|
provider = SteamOpenIDProvider
|
|
|
|
def get_form(self):
|
|
items = dict(list(self.request.GET.items()) + list(self.request.POST.items()))
|
|
items["openid"] = STEAM_OPENID_URL
|
|
return self.form_class(items)
|
|
|
|
def get_callback_url(self):
|
|
return reverse(steam_callback)
|
|
|
|
|
|
class SteamOpenIDCallbackView(OpenIDCallbackView):
|
|
provider = SteamOpenIDProvider
|
|
|
|
|
|
steam_login = SteamOpenIDLoginView.as_view()
|
|
steam_callback = SteamOpenIDCallbackView.as_view()
|