ImagingTools Core SDK
CPersonalAccessTokenManagerComp.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 <ilog/TLoggerCompWrap.h>
7
8// ImtCore includes
9#include <imtauth/IPersonalAccessTokenManager.h>
10#include <imtbase/IObjectCollection.h>
11
12
13namespace imtauth
14{
15
16
17class CPersonalAccessTokenManagerComp:
18 public ilog::CLoggerComponentBase,
20{
21public:
22 typedef ilog::CLoggerComponentBase BaseClass;
23
24 I_BEGIN_COMPONENT(CPersonalAccessTokenManagerComp);
25 I_REGISTER_INTERFACE(imtauth::IPersonalAccessTokenManager);
26 I_ASSIGN(m_tokenCollectionCompPtr, "TokenCollection", "Personal access token collection", true, "PersonalAccessTokenCollection");
27 I_ASSIGN(m_tokenFactoryCompPtr, "TokenFactory", "Personal access token factory", true, "PersonalAccessTokenFactory");
28 I_END_COMPONENT;
29
30 // reimplemented (imtauth::IPersonalAccessTokenManager)
31 virtual TokenCreationResult CreateToken(
32 const QByteArray& userId,
33 const QString& name,
34 const QString& description,
35 const QByteArrayList& scopes,
36 const QDateTime& expiresAt) override;
37 virtual bool ValidateToken(const QByteArray& rawToken, QByteArray& userId, QByteArray& tokenId, QByteArrayList& scopes) const override;
38 virtual QByteArrayList GetTokenIds(const QByteArray& userId) const override;
39 virtual IPersonalAccessTokenSharedPtr GetToken(const QByteArray& tokenId) const override;
40 virtual bool RevokeToken(const QByteArray& tokenId) override;
41 virtual bool UpdateLastUsedAt(const QByteArray& tokenId) override;
42 virtual bool DeleteToken(const QByteArray& tokenId) override;
43
44 // reimplemented (iser::ISerializable)
45 virtual bool Serialize(iser::IArchive& archive) override;
46
47private:
48 QByteArray GenerateRandomToken() const;
49 QByteArray HashToken(const QByteArray& rawToken) const;
50 QByteArray ExtractTokenId(const QByteArray& rawToken) const;
51
52private:
53 I_REF(imtbase::IObjectCollection, m_tokenCollectionCompPtr);
54 I_FACT(imtauth::IPersonalAccessToken, m_tokenFactoryCompPtr);
55};
56
57
58} // namespace imtauth
59
60