get the credentials from form

This commit is contained in:
Cayo Puigdefabregas 2023-12-01 17:10:21 +01:00
parent 8da426ef34
commit d8c9e0b8b3
2 changed files with 27 additions and 16 deletions

View File

@ -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

View File

@ -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