-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
provider.py
39 lines (31 loc) · 1.13 KB
/
provider.py
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
try:
from urllib.parse import parse_qsl
except ImportError:
from urlparse import parse_qsl
from django.core.urlresolvers import reverse
from django.utils.http import urlencode
from allauth.socialaccount.providers.base import Provider
class OAuth2Provider(Provider):
def get_login_url(self, request, **kwargs):
url = reverse(self.id + "_login")
if kwargs:
url = url + '?' + urlencode(kwargs)
return url
def get_auth_params(self, request, action):
settings = self.get_settings()
ret = settings.get('AUTH_PARAMS', {})
dynamic_auth_params = request.GET.get('auth_params', None)
if dynamic_auth_params:
ret.update(dict(parse_qsl(dynamic_auth_params)))
return ret
def get_scope(self, request):
settings = self.get_settings()
scope = settings.get('SCOPE')
if scope is None:
scope = self.get_default_scope()
dynamic_scope = request.GET.get('scope', None)
if dynamic_scope:
scope.extend(dynamic_scope.split(','))
return scope
def get_default_scope(self):
return []