39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""passbook OIDC IDP Forms"""
 | 
						|
 | 
						|
from django import forms
 | 
						|
from oauth2_provider.generators import (generate_client_id,
 | 
						|
                                        generate_client_secret)
 | 
						|
from oidc_provider.models import Client
 | 
						|
 | 
						|
from passbook.providers.oidc.models import OpenIDProvider
 | 
						|
 | 
						|
 | 
						|
class OIDCProviderForm(forms.ModelForm):
 | 
						|
    """OpenID Client form"""
 | 
						|
 | 
						|
    def __init__(self, *args, **kwargs):
 | 
						|
        # Correctly load data from 1:1 rel
 | 
						|
        if 'instance' in kwargs and kwargs['instance']:
 | 
						|
            kwargs['instance'] = kwargs['instance'].oidc_client
 | 
						|
        super().__init__(*args, **kwargs)
 | 
						|
        self.fields['client_id'].initial = generate_client_id()
 | 
						|
        self.fields['client_secret'].initial = generate_client_secret()
 | 
						|
 | 
						|
    def save(self, *args, **kwargs):
 | 
						|
        response = super().save(*args, **kwargs)
 | 
						|
        # Check if openidprovider class instance exists
 | 
						|
        if not OpenIDProvider.objects.filter(oidc_client=self.instance).exists():
 | 
						|
            OpenIDProvider.objects.create(oidc_client=self.instance)
 | 
						|
        return response
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        model = Client
 | 
						|
        fields = [
 | 
						|
            'name', 'client_type', 'client_id', 'client_secret', 'response_types',
 | 
						|
            'jwt_alg', 'reuse_consent', 'require_consent', '_redirect_uris', '_scope'
 | 
						|
        ]
 | 
						|
        # exclude = ['owner', 'website_url', 'terms_url', 'contact_email', 'logo', ]
 | 
						|
        labels = {
 | 
						|
            'client_secret': "Client Secret"
 | 
						|
        }
 |