ImagingTools Core SDK
CSimpleLoginComp.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// ACF includes
6#include <icomp/CComponentBase.h>
7#include <iauth/ILogin.h>
8#include <iauth/IRightsProvider.h>
9
10// ImtCore includes
11#include <imtauth/IAccessTokenController.h>
12#include <imtauth/IUserPermissionsController.h>
13
14
15namespace imtauthgql
16{
17
18
19class CSimpleLoginComp:
20 public icomp::CComponentBase,
21 virtual public iauth::ILogin,
22 virtual public iauth::IRightsProvider,
23 virtual public imtauth::IUserPermissionsController,
24 virtual public imtauth::IAccessTokenController
25{
26public:
27 typedef icomp::CComponentBase BaseClass;
28
29 I_BEGIN_COMPONENT(CSimpleLoginComp);
30 I_REGISTER_INTERFACE(ILogin);
31 I_REGISTER_INTERFACE(IRightsProvider);
32 I_REGISTER_INTERFACE(IAccessTokenProvider);
33 I_REGISTER_INTERFACE(IAccessTokenController);
34 I_REGISTER_INTERFACE(IUserPermissionsController);
35 I_END_COMPONENT;
36
37 // reimplemented (iauth::ILogin)
38 virtual iauth::CUser* GetLoggedUser() const override;
39 virtual bool Login(const QString& userName, const QString& password) override;
40 virtual bool Logout() override;
41
42 // reimplemented (iauth::IRightsProvider)
43 virtual bool HasRight(
44 const QByteArray& operationId,
45 bool beQuiet = false) const override;
46
47 // reimplemented (imtauth::IUserPermissionsController)
48 virtual QByteArrayList GetPermissions(const QByteArray& userId) const override;
49 virtual void SetPermissions(const QByteArray& userId, const QByteArrayList& permissions) override;
50
51 // reimplemented (imtauth::IAccessTokenProvider)
52 virtual QByteArray GetToken(const QByteArray& userId) const override;
53
54 // reimplemented (imtauth::IAccessTokenController)
55 virtual bool SetToken(const QByteArray& userId, const QByteArray& accessToken) override;
56
57private:
58 mutable iauth::CUser m_loggedUser;
59 QByteArray m_loggedUserId;
60 QByteArray m_loggedUserPassword;
61 QByteArray m_loggedUserToken;
62 QByteArrayList m_userPermissionIds;
63};
64
65
66} // namespace imtauthgql
67
68
Authentication GraphQL API Layer Module.