<%init> use OpenXPKI::Client::HTML::Mason::CRR; use OpenXPKI::Exception; use English; use Data::Dumper; if (!defined $ARGS{'workflow_type'}) { # no form data is present, let user search for cert $m->comp('/service/create_crr/search.mhtml'); } else { # protect against XSRF by checking for $__session_id (see # /service/workflow/activity/autohandler for details) if (! $m->request_args()->{'__session_id'}) { die "This looks like XSRF to me ..."; } # form has been submitted, try to create CRR object my $crr; eval { $crr = OpenXPKI::Client::HTML::Mason::CRR->new({ %ARGS, client => $context->{client}, }); $crr->validate(); }; if (my $exc = OpenXPKI::Exception->caught()) { # failed for some reason, redisplay form with errors $m->comp('/service/create_crr/form.html', crr => $crr, cert_identifier => $ARGS{'cert_identifier'}, ); return; } elsif ($EVAL_ERROR) { # crashed, display error page my $error = $EVAL_ERROR; $m->comp('/service/create_crr/error.mhtml', error => $error, ); return; } # try to create workflow from CRR object eval { $crr->create_workflow(); }; if ($EVAL_ERROR) { my $error = $EVAL_ERROR; # crashed, display error page $m->comp('/service/create_crr/error.mhtml', error => $error, ); } else { # everything is fine, display freshly created workflow return $m->comp ('/service/workflow/show_instance.html', type => $crr->get_workflow_type(), id => $crr->get_workflow_id(), ); } }