AusweisApp
 
Lade ...
Suche ...
Keine Treffer
WorkflowContext.h
gehe zur Dokumentation dieser Datei
1
4
5#pragma once
6
7#include "CardConnection.h"
8#include "ECardApiResult.h"
9#include "FailureCode.h"
10#include "GlobalStatus.h"
11#include "ReaderInfo.h"
13
14#include <QElapsedTimer>
15#include <QSharedPointer>
16#include <QString>
17#include <optional>
18
19namespace governikus
20{
21defineEnumType(Action,
22 AUTH,
23 SELF,
24 PIN,
26 REMOTE_SERVICE)
27
28class WorkflowContext
29 : public QObject
30{
31 Q_OBJECT
32
33 private:
34 const Action mAction;
35 const bool mActivateUi;
36 bool mStateApproved;
37 bool mWorkflowKilled;
38 QString mCurrentState;
39 QList<ReaderManagerPluginType> mReaderPluginTypes;
40 QString mReaderName;
41 QSharedPointer<CardConnection> mCardConnection;
42 int mCardVanishedDuringPacePinCount;
43 QElapsedTimer mCardVanishedDuringPacePinTimer;
44 QString mCan;
45 QString mPin;
46 QString mPuk;
47 PacePasswordId mEstablishPaceChannelType;
48 QScopedPointer<EstablishPaceChannelOutput> mPaceOutputData;
49 ReaderInfo mExpectedReader;
50 CardReturnCode mLastPaceResult;
51 GlobalStatus mStatus;
52 std::optional<FailureCode> mFailureCode;
53 ECardApiResult mStartPaosResult;
54 bool mWorkflowFinished;
55 bool mWorkflowCancelled;
56 bool mWorkflowCancelledInState;
57 bool mNextWorkflowPending;
58 bool mCurrentReaderHasEidCardButInsufficientApduLength;
59 int mProgressValue;
60 QString mProgressMessage;
61 bool mShowRemoveCardFeedback;
62 QString mClaimedBy;
63 bool mInterruptRequested;
64 bool mInitialInputErrorShown;
65 bool mCardInitiallyAppeared;
66
67 private Q_SLOTS:
68 void onWorkflowCancelled();
69
70 Q_SIGNALS:
71 void fireStateApprovedChanged(bool pApproved);
72 void fireStateChanged(const QString& pNewState);
73 void fireReaderPluginTypesChanged(bool pExplicitStart = false);
74 void fireReaderInfoChanged();
75 void fireReaderNameChanged();
76 void fireCardConnectionChanged();
77 void fireAcceptedEidTypesChanged();
78 void fireEidTypeMismatchChanged();
79 void fireCanChanged();
80 void firePinChanged();
81 void firePukChanged();
82 void firePaceResultUpdated();
83 void fireResultChanged();
84 void fireCanAllowedModeChanged();
85 void firePasswordTypeChanged();
86 void fireProgressChanged();
87 void fireRemoveCardFeedbackChanged();
88 void fireInitialInputErrorShownChanged();
89
90 void fireCancelWorkflow();
91
92 void fireNextWorkflowPending();
93
94 public:
95 explicit WorkflowContext(const Action mAction, bool pActivateUi = true);
96 ~WorkflowContext() override;
97
98 [[nodiscard]] Action getAction() const
99 {
100 return mAction;
101 }
102
103
104 [[nodiscard]] bool isActivateUi() const
105 {
106 return mActivateUi;
107 }
108
109
110 [[nodiscard]] bool wasClaimed() const;
111 void claim(const QObject* pClaimant);
112
113 void setStateApproved(bool pApproved = true);
114 [[nodiscard]] bool isStateApproved() const;
115
116 void killWorkflow(GlobalStatus::Code pCode = GlobalStatus::Code::Workflow_Cancellation_By_User);
117 [[nodiscard]] bool isWorkflowKilled() const;
118
119 [[nodiscard]] const QString& getCurrentState() const;
120 void setCurrentState(const QString& pNewState);
121
122 [[nodiscard]] bool isSmartCardUsed() const;
123
124 [[nodiscard]] const QList<ReaderManagerPluginType>& getReaderPluginTypes() const;
125 void setReaderPluginTypes(const QList<ReaderManagerPluginType>& pReaderPluginTypes);
126
127 [[nodiscard]] const QString& getReaderName() const;
128 void setReaderName(const QString& pReaderName);
129
130 [[nodiscard]] const QSharedPointer<CardConnection>& getCardConnection() const;
131 [[nodiscard]] bool getCardInitiallyAppeared() const;
132 void resetCardInitiallyAppeared();
133 void setCardConnection(const QSharedPointer<CardConnection>& pCardConnection);
134 void resetCardConnection();
135 void setCardInitiallyAppeared();
136
137 [[nodiscard]] bool isNpaRepositioningRequired() const;
138 void setNpaPositionVerified();
139 void handleWrongNpaPosition();
140
141 [[nodiscard]] virtual bool isRequestTransportPin() const;
142
143 [[nodiscard]] const QString& getPuk() const;
144 void setPuk(const QString& pPuk);
145
146 [[nodiscard]] const QString& getCan() const;
147 void setCan(const QString& pCan);
148
149 [[nodiscard]] const QString& getPin() const;
150 void setPin(const QString& pPin);
151
152 [[nodiscard]] PacePasswordId getEstablishPaceChannelType() const;
153 void setEstablishPaceChannelType(PacePasswordId pType);
154
155 virtual void resetPacePasswords();
156
157 [[nodiscard]] EstablishPaceChannelOutput* getPaceOutputData() const;
158 void setPaceOutputData(const EstablishPaceChannelOutput& pPaceOutputData);
159
160 bool isPinBlocked();
161 [[nodiscard]] CardReturnCode getLastPaceResult() const;
162 void setLastPaceResult(CardReturnCode pLastPaceResult);
163 void resetLastPaceResult();
164
165 void rememberReader();
166 [[nodiscard]] bool remembersReader() const;
167 [[nodiscard]] bool isExpectedReader() const;
168 [[nodiscard]] const ReaderInfo& getExpectedReader() const;
169
170 [[nodiscard]] int getExpectedRetryCounter() const;
171 void setExpectedRetryCounter(int pExpectedRetryCounter);
172
173 [[nodiscard]] const GlobalStatus& getStatus() const;
174 void setStatus(const GlobalStatus& pResult);
175
176 [[nodiscard]] std::optional<FailureCode> getFailureCode() const;
177 void setFailureCode(const FailureCode& pFailure);
178
179 [[nodiscard]] const ECardApiResult& getStartPaosResult() const;
180 void setStartPaosResult(const ECardApiResult& pStartPaosResult);
181
182 [[nodiscard]] bool isWorkflowFinished() const;
183 void setWorkflowFinished(bool pWorkflowFinished);
184
185 [[nodiscard]] bool isWorkflowCancelled() const;
186 [[nodiscard]] bool isWorkflowCancelledInState() const;
187 void setWorkflowCancelledInState();
188
189 [[nodiscard]] virtual bool isCanAllowedMode() const;
190
191 [[nodiscard]] bool hasNextWorkflowPending() const;
192 void setNextWorkflowPending(bool pNextWorkflowPending);
193
194 [[nodiscard]] bool currentReaderHasEidCardButInsufficientApduLength() const;
195 void setCurrentReaderHasEidCardButInsufficientApduLength(bool pState);
196
197 [[nodiscard]] int getProgressValue() const
198 {
199 return mProgressValue;
200 }
201
202
203 [[nodiscard]] const QString& getProgressMessage() const
204 {
205 return mProgressMessage;
206 }
207
208
209 void setProgress(int pValue, const QString& pMessage);
210
211 [[nodiscard]] bool showRemoveCardFeedback() const
212 {
213 return mShowRemoveCardFeedback;
214 }
215
216
217 void setInterruptRequested(bool pInterruptRequested);
218 [[nodiscard]] bool interruptRequested() const
219 {
220 return mInterruptRequested;
221 }
222
223
224 void setRemoveCardFeedback(bool pEnabled);
225
226 [[nodiscard]] virtual QList<AcceptedEidType> getAcceptedEidTypes() const = 0;
227
228 [[nodiscard]] bool eidTypeMismatch() const;
229 [[nodiscard]] bool isMobileEidTypeAllowed(const MobileEidType& mobileEidType) const;
230
231 [[nodiscard]] bool isInitialInputErrorShown() const;
232 void setInitialInputErrorShown();
233};
234
235} // namespace governikus
#define defineEnumType(enumName,...)
Definition EnumHelper.h:81
Defines the AccessRight and AccessRole enum.
Definition CommandApdu.h:17
PERSONALIZATION
Definition MsgTypes.h:30
AUTH
Definition MsgTypes.h:29