ImagingTools Core SDK
CLdapUserCollectionControllerComp.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#include <iprm/IEnableableParam.h>
11#include <imod/TModelWrap.h>
12
13// ImtCore includes
14#include <imtbase/IObjectCollection.h>
15#include <imtbase/CObjectCollection.h>
16#include <imtauth/IUserInfo.h>
17
18
19namespace imtauth
20{
21
22
23class CLdapUserCollectionControllerComp:
24 public icomp::CComponentBase,
25 public imod::TModelWrap<imtbase::CObjectCollection>
26{
27public:
28 typedef icomp::CComponentBase BaseClass;
29 typedef imod::TModelWrap<imtbase::CObjectCollection> BaseClass2;
30
31 I_BEGIN_COMPONENT(CLdapUserCollectionControllerComp);
32 I_REGISTER_INTERFACE(imod::IModel)
33 I_REGISTER_INTERFACE(imtbase::IObjectCollection)
34 I_ASSIGN(m_checkIntervalAttrPtr, "CheckInterval", "The interval for synchronization LDAP users (in secs)", false, 60);
35 I_END_COMPONENT;
36
37 CLdapUserCollectionControllerComp();
38
39protected:
40 // reimplemented (icomp::CComponentBase)
41 virtual void OnComponentCreated() override;
42 virtual void OnComponentDestroyed() override;
43
44private:
45 class CheckLdapUsersThread: public QThread
46 {
47 public:
48 CheckLdapUsersThread(CLdapUserCollectionControllerComp& parent);
49 void Start();
50 QByteArrayList GetLdapUserIds() const;
51 const imtauth::IUserInfo* GetUserInfoFromLdapUserId(const QByteArray& userId) const;
52
53 protected:
54 // reimplemented (QThread)
55 virtual void run() override;
56
57 private:
58 CLdapUserCollectionControllerComp& m_parent;
59 };
60
61protected:
62 CheckLdapUsersThread m_checkLdapUsersThreadThread;
63
64protected:
65 I_ATTR(int, m_checkIntervalAttrPtr);
66};
67
68
69} // namespace imtauth
70
71