diff --git a/requirements/base.in b/requirements/base.in index e319619d85d0f23b7fee16d86e0c3da1a0f0d4c1..962a298f6a18f7690943f1df7e8af0c61a963e5a 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,5 +1,4 @@ Django==2.2.4 djangorestframework==3.10.2 -django-social-authsch==0.1 django-solo==1.1.3 django-import-export==1.2.0 diff --git a/src/authsch/__init__.py b/src/authsch/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/authsch/apps.py b/src/authsch/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..13882bac31bad2b60b80e7ab11c2e860621bfcd0 --- /dev/null +++ b/src/authsch/apps.py @@ -0,0 +1,6 @@ +# Original: https://git.sch.bme.hu/kszk/devteam/django-authsch +from django.apps import AppConfig + + +class AuthschConfig(AppConfig): + name = 'authsch' diff --git a/src/authsch/authentication.py b/src/authsch/authentication.py new file mode 100644 index 0000000000000000000000000000000000000000..b7e105ad0ce84b42d37440064dd17785425491d9 --- /dev/null +++ b/src/authsch/authentication.py @@ -0,0 +1,35 @@ +# Original: https://git.sch.bme.hu/kszk/devteam/django-authsch +# store schacc in username field +from social_core.backends.oauth import BaseOAuth2 + + +class AuthSCHOAuth2(BaseOAuth2): + """AuthSCH OAuth2 authentication backend""" + name = 'authsch' + ID_KEY = 'internal_id' + AUTHORIZATION_URL = 'https://auth.sch.bme.hu/site/login' + ACCESS_TOKEN_URL = 'https://auth.sch.bme.hu/oauth2/token' + ACCESS_TOKEN_METHOD = 'POST' + REFRESH_TOKEN_URL = 'https://auth.sch.bme.hu/oauth2/token' + DEFAULT_SCOPE = ['basic', 'mail', 'givenName', 'sn', 'linkedAccounts'] + EXTRA_DATA = [ + ('internal_id', 'id'), + ('expires_in', 'expires'), + ('refresh_token', 'refresh_token'), + ] + + def get_user_details(self, response): + """Return user details from AuthSCH account""" + return { + 'username': response.get('linkedAccounts').get('schacc'), + 'email': response.get('mail'), + 'first_name': response.get('givenName'), + 'last_name': response.get('sn') + } + + def user_data(self, access_token, *args, **kwargs): + """Loads user data from service""" + return self.get_json( + 'https://auth.sch.bme.hu/api/profile/', + params={'access_token': access_token} + ) diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py index fa4afc6fa9a812faa4d6ddd0c096c85cf72c7cdb..1e962159b7490c15c588b254605fc59f90cdb792 100644 --- a/src/kszkepzes/settings/base.py +++ b/src/kszkepzes/settings/base.py @@ -27,7 +27,6 @@ DEBUG = True ALLOWED_HOSTS = [] - # Application definition INSTALLED_APPS = [