from django.core.management.base import BaseCommand from django.contrib.sites.models import Site from allauth.socialaccount.models import SocialApp from dotenv import load_dotenv import os class Command(BaseCommand): help = 'Sets up social authentication apps' def handle(self, *args, **kwargs): # Load environment variables load_dotenv() # Get environment variables google_client_id = os.getenv('GOOGLE_CLIENT_ID') google_client_secret = os.getenv('GOOGLE_CLIENT_SECRET') discord_client_id = os.getenv('DISCORD_CLIENT_ID') discord_client_secret = os.getenv('DISCORD_CLIENT_SECRET') if not all([google_client_id, google_client_secret, discord_client_id, discord_client_secret]): self.stdout.write(self.style.ERROR('Missing required environment variables')) return # Get or create the default site site, _ = Site.objects.get_or_create( id=1, defaults={ 'domain': 'localhost:8000', 'name': 'localhost' } ) # Set up Google google_app, created = SocialApp.objects.get_or_create( provider='google', defaults={ 'name': 'Google', 'client_id': google_client_id, 'secret': google_client_secret, } ) if not created: google_app.client_id = google_client_id google_app.[SECRET-REMOVED] google_app.save() google_app.sites.add(site) # Set up Discord discord_app, created = SocialApp.objects.get_or_create( provider='discord', defaults={ 'name': 'Discord', 'client_id': discord_client_id, 'secret': discord_client_secret, } ) if not created: discord_app.client_id = discord_client_id discord_app.[SECRET-REMOVED] discord_app.save() discord_app.sites.add(site) self.stdout.write(self.style.SUCCESS('Successfully set up social auth apps'))