31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook auth oidc provider app config"""
 | 
						|
from django.apps import AppConfig
 | 
						|
from django.db.utils import InternalError, OperationalError, ProgrammingError
 | 
						|
from django.urls import include, path
 | 
						|
from structlog import get_logger
 | 
						|
 | 
						|
LOGGER = get_logger()
 | 
						|
 | 
						|
class PassbookProviderOIDCConfig(AppConfig):
 | 
						|
    """passbook auth oidc provider app config"""
 | 
						|
 | 
						|
    name = 'passbook.providers.oidc'
 | 
						|
    label = 'passbook_providers_oidc'
 | 
						|
    verbose_name = 'passbook Providers.OIDC'
 | 
						|
 | 
						|
    def ready(self):
 | 
						|
        try:
 | 
						|
            from Cryptodome.PublicKey import RSA
 | 
						|
            from oidc_provider.models import RSAKey
 | 
						|
            if not RSAKey.objects.exists():
 | 
						|
                key = RSA.generate(2048)
 | 
						|
                rsakey = RSAKey(key=key.exportKey('PEM').decode('utf8'))
 | 
						|
                rsakey.save()
 | 
						|
                LOGGER.info("Created key")
 | 
						|
        except (OperationalError, ProgrammingError, InternalError):
 | 
						|
            pass
 | 
						|
        from passbook.root import urls
 | 
						|
        urls.urlpatterns.append(
 | 
						|
            path('application/oidc/', include('oidc_provider.urls', namespace='oidc_provider')),
 | 
						|
        )
 |