Project

General

Profile

Elektronische Signatur » History » Version 4

Carsten Rose, 12.04.2021 17:46

1 1 Carsten Rose
h1. Elektronische Signatur
2
3
* Person A loest im Tool eine Email aus, die an Person B gesendet wird.
4
* Die Email enthaelt eine URL mit einem zeitlich beschraenktes Einmal-Token.
5
* Person B empfaengt die Email und klickt auf dem Link.
6
* Bei Aufruf der URL wird entweder ein Form geoeffnet (um weitere Information abzufragen) oder der Link loest direkt eine Action aus das etwas bestaetigt wird.
7
8
9 2 Carsten Rose
h1. Approval Mail ausloesen - Page: application
10 1 Carsten Rose
11 2 Carsten Rose
* QFQ Record: a) Logik um die Approval Mail auszuloesen, b) Den Link anzubieten um das versenden zu starten.
12 1 Carsten Rose
<pre>
13
#
14
# {{action:SE::w}}'='sendApprovalMail'
15
# {{appId:RE}}
16
#
17 2 Carsten Rose
18
# Logic to send email with AUTH token
19 1 Carsten Rose
10 {
20
  # Take care that the SIP variable is cleared after first use.
21
  sql = SELECT '' FROM (SELECT '') AS fake WHERE '{{action:SE::w}}'='sendApprovalMail'
22
23
  # Be sure an auth token is defined
24
  20.sql = UPDATE Application SET auth='{{random:V}}' WHERE auth='' AND id={{appId:S}}
25
26
  30 {
27
    sql = SELECT n.text AS _body
28
                  n.title AS _subject
29
                  app.auth AS _auth
30
                  QDATE_FORMAT(app.deadline) AS _deadline
31
            FROM Note AS n, Application AS app
32
            WHERE n.reference='Email Template: Approve Mail'
33
              AND app.id={{appId:R}}
34
35
    40.sql = SELECT 'to:<email>|from:<email>|subject:{{subject:R}}|body:{{body}}|grid:<grid>|xid:<xId>' AS _sendmail
36
  }
37
38
}
39
40 2 Carsten Rose
# Logic to show application status
41
100 {
42 1 Carsten Rose
43 2 Carsten Rose
  sql = SELECT ...
44 1 Carsten Rose
45 2 Carsten Rose
  # Link to initiate email
46
  110.sql = SELECT 'p:{{pageAlias:T}}&action=sendApprovalMail&appId={{appId:R}}|q:An approval mail will be sent|s|b:Send mail' AS _link
47
            FROM Application AS app 
48
            WHERE app.id={{appId:R}}
49
}
50
</pre>
51 1 Carsten Rose
52 3 Carsten Rose
* Email Template (z.B. Note Record) mit Variablen. Achtung: evtl darf der Text nicht HTML SpecialChar kodiert werden.
53 1 Carsten Rose
<pre>
54
Dear {{name:R}}
55
...
56
Please click {{baseUrl:Y}}/index.php?id=confirmation&auth={{auth:R}}.
57
...
58
The applicants deadline is {{deadline:R}}.
59
...
60
</pre>
61
62 2 Carsten Rose
h1. Approval - Page: approval
63 1 Carsten Rose
64 3 Carsten Rose
 * Seite wird nicht im Menu angezeigt.
65
 * Seite ist ohne Zugriffsbeschraenkung (fe group) aufrufbar.
66 1 Carsten Rose
<pre>
67 3 Carsten Rose
#
68
# {{auth:CE:alnumx}}
69
# {{action:SE}} = 'approved'
70
#
71
72
10 {
73
  sql = SELECT app.id AS _appId
74
           FROM Application AS app
75
           WHERE '{{auth:CE:alnumx}}'=app.auth
76
             AND NOW()<app.deadline
77
78
  altsql = SELECT IF('{{auth:R}}'='', 'Invalid URL', 'Unknown or expired token') 
79
  20 {
80
    sql = SELECT 'Applicant: ', app.name, ', ', app.firstName, '<br>'
81
                 , 'Applicaton: ', app.title
82
                 , 'p:{{pageAlias:T}}&action=approve&appId={{appId:R}}|t:Approve|s|b' AS _link, ' '
83
                 , 'p:{{pageAlias:T}}&action=deny&appId={{appId:R}}|t:Deny|s|b' AS _link
84
  }
85
}
86 1 Carsten Rose
</pre>
87 3 Carsten Rose
88 1 Carsten Rose
89 3 Carsten Rose
90
form={{SELECT 'approve' FROM Application AS app WHERE app.auth='{{auth:CE:alnumx}}' AND NOW()<app.deadline}} 
91 4 Carsten Rose
r={{SELECT app.id FROM Application AS app WHERE app.auth='{{auth:CE:alnumx}}' AND NOW()<app.deadline}}