SSO login

and example env file
This commit is contained in:
2024-02-06 22:37:00 +01:00
parent aad9343569
commit d1aabd53dc
7 changed files with 40 additions and 4 deletions
+6
View File
@@ -0,0 +1,6 @@
SPOTIFY_ENCODED_ID=<Spotify-API-Token>
OIDC_RP_CLIENT_ID=<OIDC-Client-ID>
OIDC_RP_CLIENT_SECRET=<OIDC-Client-Secret>
OIDC_OP_AUTHORIZATION_ENDPOINT=https://auth.yourwebsite.com/application/o/authorize/
OIDC_OP_TOKEN_ENDPOINT=https://auth.yourwebsite.com/application/o/token/
OIDC_OP_USER_ENDPOINT=https://auth.yourwebsite.com/application/o/userinfo/
+17
View File
@@ -1,4 +1,8 @@
from pathlib import Path
import os
import dotenv
dotenv.load_dotenv()
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -15,6 +19,7 @@ INSTALLED_APPS = [
'playlist.apps.PlaylistConfig',
'django.contrib.admin',
'django.contrib.auth',
'mozilla_django_oidc',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
@@ -73,6 +78,18 @@ AUTH_PASSWORD_VALIDATORS = [
},
]
AUTHENTICATION_BACKENDS = (
'mozilla_django_oidc.auth.OIDCAuthenticationBackend',
'django.contrib.auth.backends.ModelBackend',
)
OIDC_RP_CLIENT_ID = os.getenv('OIDC_RP_CLIENT_ID')
OIDC_RP_CLIENT_SECRET = os.getenv('OIDC_RP_CLIENT_SECRET')
OIDC_OP_AUTHORIZATION_ENDPOINT = os.getenv('OIDC_OP_AUTHORIZATION_ENDPOINT')
OIDC_OP_TOKEN_ENDPOINT = os.getenv('OIDC_OP_TOKEN_ENDPOINT')
OIDC_OP_USER_ENDPOINT = os.getenv('OIDC_OP_USER_ENDPOINT')
LOGIN_REDIRECT_URL = "/"
LOGOUT_REDIRECT_URL = "/"
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
+1
View File
@@ -19,5 +19,6 @@ from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('oidc/', include('mozilla_django_oidc.urls')),
path('', include('playlist.urls')),
]
+9
View File
@@ -0,0 +1,9 @@
{% if user.is_authenticated %}
<p>Current user: {{ user.email }}</p>
<form action="{% url 'oidc_logout' %}" method="post">
{% csrf_token %}
<input type="submit" value="logout">
</form>
{% else %}
<a href="{% url 'oidc_authentication_init' %}">Login</a>
{% endif %}
+2 -1
View File
@@ -4,5 +4,6 @@ from . import views
urlpatterns = [
path('track/<str:spotify_id>', views.TrackDetailView.as_view()),
path('track', views.NominateView.as_view()),
path('', views.TrackListView.as_view()),
#path('', views.TrackListView.as_view()),
path('', views.AuthView.as_view()),
]
+4 -3
View File
@@ -11,6 +11,10 @@ spt = spotify.Spotify()
# TODO auth mixins
class AuthView(View):
def get(self, request):
return TemplateResponse(request, "Login.html", {})
class TrackListView(View):
def get(self, request):
return HttpResponse("..")
@@ -40,7 +44,6 @@ class NominateView(View):
# Album artists
album_artists = []
for artist in json["album"]["artists"]:
#album_artists.append(Artist.objects.from_json(artist))
album_artists.append(from_json(Artist, artist))
del json["album"]["artists"]
@@ -53,12 +56,10 @@ class NominateView(View):
# Track artists
track_artists = []
for artist in json["artists"]:
#track_artists.append(Artist.objects.from_json(artist))
track_artists.append(from_json(Artist, artist))
del json["artists"]
# Track
#track = Track.objects.from_json(json)
track = from_json(Track, json)
for artist in track_artists:
track.artists.add(artist)
+1
View File
@@ -2,3 +2,4 @@ Django
requests
pillow
python-dotenv
mozilla-django-oidc