37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 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"),
 | 
						|
            ),
 | 
						|
        )
 |