fix decrypt creds and add Events
This commit is contained in:
parent
06cc971090
commit
baee7ba135
|
@ -19,7 +19,9 @@ class AuthorizeForm(forms.Form):
|
|||
self.user = kwargs.pop('user', None)
|
||||
self.org = kwargs.pop('org', None)
|
||||
self.code = kwargs.pop('code', None)
|
||||
self.pw = kwargs.pop('pw', None)
|
||||
self.presentation_definition = kwargs.pop('presentation_definition', [])
|
||||
self.subject_did = None
|
||||
|
||||
reg = r'({})'.format('|'.join(self.presentation_definition))
|
||||
|
||||
|
@ -49,7 +51,12 @@ class AuthorizeForm(forms.Form):
|
|||
txt = _('There are some problems with this credentials')
|
||||
raise ValidationError(txt)
|
||||
|
||||
self.list_credentials.append(c)
|
||||
cred = self.user.decrypt_data(
|
||||
c.data,
|
||||
self.pw
|
||||
)
|
||||
self.subject_did = c.subject_did
|
||||
self.list_credentials.append(cred)
|
||||
|
||||
if not self.code:
|
||||
txt = _("There isn't code in request")
|
||||
|
@ -69,13 +76,14 @@ class AuthorizeForm(forms.Form):
|
|||
return
|
||||
|
||||
def get_verificable_presentation(self):
|
||||
did = self.list_credentials[0].subject_did
|
||||
did = self.subject_did
|
||||
vp_template = get_template('credentials/verifiable_presentation.json')
|
||||
vc_list = json.dumps([json.loads(x.data) for x in self.list_credentials])
|
||||
vc_list = json.dumps([json.loads(x) for x in self.list_credentials])
|
||||
|
||||
context = {
|
||||
"holder_did": did.did,
|
||||
"verifiable_credential_list": vc_list
|
||||
}
|
||||
unsigned_vp = vp_template.render(context)
|
||||
self.vp = create_verifiable_presentation(did.key_material, unsigned_vp)
|
||||
key_material = did.get_key_material(self.pw)
|
||||
self.vp = create_verifiable_presentation(key_material, unsigned_vp)
|
||||
|
|
|
@ -13,6 +13,7 @@ from django.contrib import messages
|
|||
|
||||
from oidc4vp.models import Authorization, Organization, OAuth2VPToken
|
||||
from idhub.mixins import UserView
|
||||
from idhub.models import Event
|
||||
|
||||
from oidc4vp.forms import AuthorizeForm
|
||||
from utils.idhub_ssikit import verify_presentation
|
||||
|
@ -43,6 +44,11 @@ class AuthorizeView(UserView, FormView):
|
|||
kwargs['presentation_definition'] = vps
|
||||
kwargs["org"] = self.get_org()
|
||||
kwargs["code"] = self.request.GET.get('code')
|
||||
enc_pw = self.request.session["key_did"]
|
||||
kwargs['pw'] = self.request.user.decrypt_data(
|
||||
enc_pw,
|
||||
self.request.user.password+self.request.session._session_key
|
||||
)
|
||||
return kwargs
|
||||
|
||||
def get_form(self, form_class=None):
|
||||
|
@ -55,12 +61,12 @@ class AuthorizeView(UserView, FormView):
|
|||
authorization = form.save()
|
||||
if not authorization or authorization.status_code != 200:
|
||||
messages.error(self.request, _("Error sending credential!"))
|
||||
return super().form_valid(form)
|
||||
return redirect(self.success_url)
|
||||
try:
|
||||
authorization = authorization.json()
|
||||
except:
|
||||
messages.error(self.request, _("Error sending credential!"))
|
||||
return super().form_valid(form)
|
||||
return redirect(self.success_url)
|
||||
|
||||
verify = authorization.get('verify')
|
||||
result, msg = verify.split(",")
|
||||
|
@ -74,8 +80,16 @@ class AuthorizeView(UserView, FormView):
|
|||
elif authorization.get('response'):
|
||||
txt = authorization.get('response')
|
||||
messages.success(self.request, txt)
|
||||
cred = form.credentials.first()
|
||||
verifier = form.org.name
|
||||
if cred and verifier:
|
||||
Event.set_EV_CREDENTIAL_PRESENTED(cred, verifier)
|
||||
txt2 = f"Verifier {verifier} send: " + txt
|
||||
Event.set_EV_USR_SEND_VP(txt2, self.request.user)
|
||||
url = reverse_lazy('idhub:user_dashboard')
|
||||
return redirect(url)
|
||||
|
||||
return super().form_valid(form)
|
||||
return redirect(self.success_url)
|
||||
|
||||
def get_org(self):
|
||||
client_id = self.request.GET.get("client_id")
|
||||
|
|
Loading…
Reference in New Issue