ImagingTools Core SDK
CUserVerificationControllerComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QThread>
7
8// ACF includes
9#include <icomp/CComponentBase.h>
10
11// ImtCore includes
12#include <imtbase/IObjectCollection.h>
13#include <imtauth/IUserVerificationController.h>
14
15
16namespace imtauth
17{
18
19
20class CUserVerificationControllerComp: public icomp::CComponentBase, virtual public IUserVerificationController
21{
22public:
23 typedef icomp::CComponentBase BaseClass;
24
25 I_BEGIN_COMPONENT(CUserVerificationControllerComp);
26 I_REGISTER_INTERFACE(IUserVerificationController);
27 I_ASSIGN(m_userVerificationCollectionCompPtr, "UserVerificationCollection", "User verification collection", false, "UserVerificationCollection");
28 I_ASSIGN(m_codeValidityPeriodAttrPtr, "CodeValidityPeriod", "Code validity period (in secs)", false, 180);
29 I_END_COMPONENT;
30
31 CUserVerificationControllerComp();
32
33 // reimplemented (imtauth::IUserVerificationController)
34 virtual const imtauth::IUserVerification* GetVerificationData(const QByteArray& verificationId) const override;
35 virtual bool GenerateVerificationData(const QByteArray& userId, imtauth::IUserVerification* userVerificationPtr = nullptr) override;
36 virtual bool VerifyUser(const QByteArray& userId, const QByteArray& verificationCode) const override;
37
38 // reimplemented (icomp::CComponentBase)
39 virtual void OnComponentCreated() override;
40 virtual void OnComponentDestroyed() override;
41
42private:
43 int GenerateCode(int min, int max) const;
44
45 class CheckExpiredVerificationDataThread: public QThread
46 {
47 public:
48 CheckExpiredVerificationDataThread(CUserVerificationControllerComp& parent);
49 void Start();
50 protected:
51 // reimplemented (QThread)
52 virtual void run() override;
53
54 private:
55 CUserVerificationControllerComp& m_parent;
56 };
57
58private:
59 I_REF(imtbase::IObjectCollection, m_userVerificationCollectionCompPtr);
60 I_ATTR(int, m_codeValidityPeriodAttrPtr);
61
62private:
63 CheckExpiredVerificationDataThread m_checkExpiredVerificationDataThread;
64};
65
66
67
68} // namespace imtauth
69
70