ImagingTools Core SDK
CRole.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// ImtCore includes
6#include <imtbase/TIdentifiableWrap.h>
7#include <imtauth/IRole.h>
8
9
10namespace imtauth
11{
12
13
14class CRole: virtual public IRole
15{
16
17public:
18 CRole();
19
20 void SetParentRoleProvider(const imtauth::IRoleInfoProvider* parentRoleProvider);
21
22 // reimplemented (iser::IRole)
23 virtual const IRoleInfoProvider* GetParentRolesProvider() const override;
24 virtual const imtlic::IFeatureInfoProvider* GetPermissionProvider() const override;
25 virtual QByteArray GetRoleId() const override;
26 virtual void SetRoleId(const QByteArray& id) override;
27 virtual QString GetRoleName() const override;
28 virtual void SetRoleName(const QString& name) override;
29 virtual QString GetRoleDescription() const override;
30 virtual void SetRoleDescription(const QString& description) override;
31 virtual IRole::FeatureIds GetPermissions() const override;
32 virtual IRole::FeatureIds GetLocalPermissions() const override;
33 virtual void SetLocalPermissions(const IRole::FeatureIds& permissions) override;
34 virtual IRole::FeatureIds GetProhibitions() const override;
35 virtual void SetProhibitions(const IRole::FeatureIds& prohibitions) override;
36 virtual QByteArrayList GetIncludedRoles() const override;
37 virtual QByteArray GetProductId() const override;
38 virtual void SetProductId(const QByteArray& productId) override;
39 virtual bool IncludeRole(const QByteArray& roleId) override;
40 virtual void ExcludeRole(const QByteArray& roleId) override;
41 virtual bool IsDefault() const override;
42 virtual void SetDefault(bool isDefault) override;
43 virtual bool IsGuest() const override;
44 virtual void SetGuest(bool isGuest) override;
45
46 // reimplemented (iser::ISerializable)
47 virtual bool Serialize(iser::IArchive& archive) override;
48
49 // reimplemented (iser::IChangeable)
50 virtual int GetSupportedOperations() const override;
51 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
52 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
53 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
54
55protected:
56 QByteArrayList GetParentRoles(const QByteArray& roleId) const;
57 void GetParentRoleList(const IRole& role, QByteArrayList& roleList) const;
58
59protected:
60 const imtlic::IFeatureInfoProvider* m_permissionProviderPtr;
61
62private:
63 QByteArray m_roleId;
64 QByteArray m_productId;
65 QString m_roleName;
66 QString m_roleDescription;
67 IRole::FeatureIds m_rolePermissions;
68 IRole::FeatureIds m_roleRestrictions;
69 QByteArrayList m_parents;
70 bool m_isDefault;
71 bool m_isGuest;
72
73 const imtauth::IRoleInfoProvider* m_roleInfoProviderPtr;
74};
75
76
77typedef imtbase::TIdentifiableWrap<CRole> CIdentifiableRoleInfo;
78
79
80} // namespace imtauth
81
82