diff --git a/oidc4vp/forms.py b/oidc4vp/forms.py index cdef22e..9a8633e 100644 --- a/oidc4vp/forms.py +++ b/oidc4vp/forms.py @@ -45,34 +45,44 @@ from oidc4vp.models import Organization class AuthorizeForm(forms.Form): - organization = forms.ChoiceField(choices=[]) + # organization = forms.ChoiceField(choices=[]) def __init__(self, *args, **kwargs): # import pdb; pdb.set_trace() + self.data = kwargs.get('data', {}).copy() self.user = kwargs.pop('user', None) self.presentation_definition = kwargs.pop('presentation_definition', []) + + reg = r'({})'.format('|'.join(self.presentation_definition)) + self.credentials = self.user.vcredentials.filter( - schema__type__in=self.presentation_definition + schema__type__iregex=reg ) super().__init__(*args, **kwargs) - self.fields['organization'].choices = [ - (x.id, x.name) for x in Organization.objects.filter() - if x.response_uri != settings.RESPONSE_URI - ] + for vp in self.presentation_definition: + vp = vp.lower() + choices = [ + (str(x.id), x.schema.type.lower()) for x in self.credentials.filter( + schema__type__iexact=vp) + ] + self.fields[vp.lower()] = forms.ChoiceField( + widget=forms.RadioSelect, + choices=choices + ) def save(self, commit=True): - self.org = Organization.objects.filter( - id=self.data['organization'] - ) - if not self.org.exists(): - return + # self.org = Organization.objects.filter( + # id=self.data['organization'] + # ) + # if not self.org.exists(): + # return - self.org = self.org[0] + # self.org = self.org[0] - if commit: - url = self.org.demand_authorization() - if url.status_code == 200: - return url.json().get('redirect_uri') + # if commit: + # url = self.org.demand_authorization() + # if url.status_code == 200: + # return url.json().get('redirect_uri') return diff --git a/oidc4vp/views.py b/oidc4vp/views.py index 5a5427e..48ea8b7 100644 --- a/oidc4vp/views.py +++ b/oidc4vp/views.py @@ -7,6 +7,7 @@ from django.http import HttpResponse, Http404 from django.shortcuts import get_object_or_404, redirect from django.utils.translation import gettext_lazy as _ from django.urls import reverse_lazy +from django.contrib import messages from oidc4vp.models import Authorization, Organization from idhub.mixins import UserView