<%args> $limit => 10 $start => 1 $page => undef $show_approval_buttons => undef $creator => '%' $wf_type => 'I18N_OPENXPKI_WF_TYPE_CERTIFICATE_SIGNING_REQUEST'

<% i18nGettext ('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_SHOW_PENDING_REQUESTS_TITLE') %>

<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_SHOW_PENDING_REQUESTS_DESC') %>

% if ($creator ne '%') {

<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_SHOW_PENDING_REQUESTS_LIMITED_TO_CREATOR', '__CREATOR__' => $creator) %>

% } % if ($show_approval_buttons) { <& /service/open_form.mhtml, 'action' => $context->{menu}->get_root()."/service/workflow/bulk_approval.html" &> % } % if ($creator eq '%') { % } % foreach my $res (@results) { % if ($show_approval_buttons) { % } % if ($creator eq '%') { % } % }
<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_APPROVE') %>
<% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_SERIAL') %> <% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_TICKETS') %> <% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_LAST_UPDATE') %> <% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_CSR_CERT_SUBJECT') %> <% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_CSR_CERT_PROFILE') %> <% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_WORKFLOW_CSR_CERT_ROLE') %><% i18nGettext('I18N_OPENXPKI_CLIENT_HTML_MASON_CREATOR') %>
<% $res->{'SERIAL'} %> % foreach my $ticket (@{ $res->{'TICKETS'} }) { <% $ticket->{ID} %>
% }
<% $res->{'LAST_UPDATE'} %> <% $res->{'SUBJECT'} %> % foreach my $san (@{ $res->{'SUBJECT_ALT_NAMES'} }) { % if ($san =~ m{ \A DNS:(.*) \z }xms) { % if (! gethostbyname($1)) {
<% $san %> % } % else {
<% $san %> % } % } % else {
<% $san %> % } % }
<% i18nGettext($res->{'PROFILE'}) %> <% i18nGettext($res->{'ROLE'}) %><% $res->{'CREATOR'} %>
% if ($show_approval_buttons) { <& /service/send_form.mhtml &> <& /service/close_form.mhtml &> % } <%init> use OpenXPKI::Serialization::Simple; use Data::Dumper; my $ser = OpenXPKI::Serialization::Simple->new(); my $search_context = [ { KEY => 'creator', VALUE => $creator, } ]; my @results; my $nr_msg = $context->{client}->send_receive_command_msg( "search_workflow_instances_count", { "TYPE" => $wf_type, 'CONTEXT' => $search_context, 'STATE' => [ 'PENDING', 'APPROVAL' ], }, ); my $count = $nr_msg->{PARAMS}; my $pageInfo; if (! defined $show_approval_buttons) { $pageInfo = $m->comp('/lib/paging.mhtml', totalEntries => $count, entriesPerPage => $limit, page => $page, start => $start, url => 'show_pending_requests.html', ); } my %optional_params; if (defined $pageInfo) { $optional_params{LIMIT} = $limit; $optional_params{START} = $pageInfo->first - 1; } my $msg = $context->{client}->send_receive_command_msg( "search_workflow_instances", { "TYPE" => $wf_type, 'CONTEXT' => $search_context, 'STATE' => [ 'PENDING', 'APPROVAL' ], %optional_params, }, ); my @instances; if (defined $msg->{PARAMS} && ref $msg->{PARAMS} eq 'ARRAY') { @instances = @{ $msg->{PARAMS} }; } # TODO - error handling foreach my $instance (@instances) { my $wf_info = $context->{client}->send_receive_command_msg( 'get_workflow_info', { WORKFLOW => $wf_type, ID => $instance->{'WORKFLOW.WORKFLOW_SERIAL'}, }, ); # TODO - error handling $m->comp('/lib/debug.mhtml', 'level' => 10, 'msg' => Dumper $wf_info, ); my $wf_context = $wf_info->{PARAMS}->{WORKFLOW}->{CONTEXT}; my $san_ref = $ser->deserialize($wf_context->{'cert_subject_alt_name'}); $m->comp('/lib/debug.mhtml', 'level' => 10, 'msg' => Dumper $san_ref, ); my @subject_alt_names; if (defined $san_ref && ref $san_ref eq 'ARRAY') { foreach my $san_pair (@{ $san_ref }) { push @subject_alt_names, $san_pair->[0] . ':' . $san_pair->[1]; } } $m->comp('/lib/debug.mhtml', 'level' => 10, 'msg' => Dumper \@subject_alt_names, ); # TODO - error handling my @tickets; if (exists $wf_context->{'ticket'}) { my $tickets = $ser->deserialize($wf_context->{'ticket'}); foreach my $key (keys %{ $tickets }) { my $ticket_entry; $ticket_entry->{ID} = $tickets->{$key}; my $url_msg = $context->{client}->send_receive_command_msg( 'get_url_for_ticket', { NOTIFIER => $key, TICKET => $tickets->{$key}, }, ); $ticket_entry->{URL} = $url_msg->{PARAMS}; push @tickets, $ticket_entry; } } push @results, { 'SERIAL' => $instance->{'WORKFLOW.WORKFLOW_SERIAL'}, 'LAST_UPDATE' => $instance->{'WORKFLOW.WORKFLOW_LAST_UPDATE'}, 'SUBJECT' => $wf_context->{'cert_subject'}, 'SUBJECT_ALT_NAMES' => \@subject_alt_names, 'PROFILE' => $wf_context->{'cert_profile'}, 'ROLE' => $wf_context->{'cert_role'}, 'CREATOR' => $wf_context->{'creator'}, 'TICKETS' => \@tickets, }; }