ImagingTools Core SDK
CSimpleLoginWrapComp.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 <ibase/IApplicationInfo.h>
10#include <icomp/CComponentBase.h>
11#include <iauth/ILogin.h>
12#include <iauth/IRightsProvider.h>
13#include <iprm/IEnableableParam.h>
14
15// ImtCore includes
16#include <imtclientgql/TClientRequestManagerCompWrap.h>
17#include <imtauth/IAccessTokenProvider.h>
18#include <imtauth/IPermissionChecker.h>
19#include <imtauth/CUserInfo.h>
20#include <imtauth/ISuperuserProvider.h>
21#include <imtauth/IUserPermissionsController.h>
22#include <imtauth/ILoginInfoProvider.h>
23
24
25namespace imtauthgql
26{
27
28
29class CSimpleLoginWrapComp:
30 public imtclientgql::CClientRequestManagerCompBase,
31 public iauth::ILogin,
32 public iauth::IRightsProvider,
33 public imtauth::IAccessTokenProvider,
34 virtual public imtauth::IUserPermissionsController,
35 virtual public imtauth::ILoginInfoProvider
36{
37public:
38 typedef imtclientgql::CClientRequestManagerCompBase BaseClass;
39
40 I_BEGIN_COMPONENT(CSimpleLoginWrapComp);
41 I_REGISTER_INTERFACE(ILogin);
42 I_REGISTER_INTERFACE(IRightsProvider);
43 I_REGISTER_INTERFACE(IAccessTokenProvider);
44 I_REGISTER_INTERFACE(imtauth::IUserPermissionsController);
45 I_REGISTER_INTERFACE(imtauth::ILoginInfoProvider);
46 I_ASSIGN(m_userInfoFactCompPtr, "UserFactory", "Factory used for creation of the new user", true, "UserFactory");
47 I_ASSIGN(m_checkPermissionCompPtr, "PermissionChecker", "Checker of the permissions", false, "PermissionChecker");
48 I_ASSIGN(m_superuserProviderCompPtr, "SuperuserProvider", "Superuser provider", false, "SuperuserProvider");
49 I_ASSIGN(m_applicationInfoCompPtr, "ApplicationInfo", "Application Info", true, "");
50 I_END_COMPONENT;
51
52 CSimpleLoginWrapComp();
53
54 // reimplemented (iauth::ILogin)
55 virtual iauth::CUser* GetLoggedUser() const override;
56 virtual bool Login(const QString& userName, const QString& password) override;
57 virtual bool Logout() override;
58
59 // Additional login methods
60 virtual bool LoginWithRefreshToken(const QString& userName, const QByteArray& refreshToken);
61 virtual QByteArray GetRefreshToken() const;
62
63 // reimplemented (iauth::IRightsProvider)
64 virtual bool HasRight(
65 const QByteArray& operationId,
66 bool beQuiet = false) const override;
67
68 // reimplemented (imtauth::IAccessTokenProvider)
69 virtual QByteArray GetToken(const QByteArray& userId) const override;
70
71 // reimplemented (imtauth::IUserPermissionsController)
72 virtual QByteArrayList GetPermissions(const QByteArray& userId) const override;
73 virtual void SetPermissions(const QByteArray& userId, const QByteArrayList& permissions) override;
74
75 // reimplemented (imtauth::ILoginInfoProvider)
76 virtual QByteArray GetLoggedUserId() const override;
77 virtual imtauth::IUserInfoUniquePtr GetLoggedUserInfo() const override;
78
79private:
80 mutable iauth::CUser m_loggedUser;
81 QByteArray m_loggedUserId;
82 QByteArray m_loggedUserName;
83 QByteArray m_loggedUserPassword;
84 QByteArray m_loggedUserToken;
85 QByteArray m_loggedUserRefreshToken;
86 QByteArrayList m_userPermissionIds;
87 imtauth::IUserInfoSharedPtr m_userInfoPtr;
88 imtgql::IGqlContextSharedPtr m_gqlContextSharedPtr;
89
90protected:
91 I_FACT(imtauth::IUserInfo, m_userInfoFactCompPtr);
92 I_REF(imtauth::IPermissionChecker, m_checkPermissionCompPtr);
93 I_REF(imtauth::ISuperuserProvider, m_superuserProviderCompPtr);
94 I_REF(ibase::IApplicationInfo, m_applicationInfoCompPtr);
95};
96
97
98} // namespace imtauthgql
99
100
Authentication GraphQL API Layer Module.