ImagingTools Core SDK
CUserGroupInfo.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/IUserGroupInfo.h>
8#include <imtauth/CUserBaseInfo.h>
9
10
11namespace imtauth
12{
13
14
15class CUserGroupInfo: virtual public IUserGroupInfo, public CUserBaseInfo
16{
17 typedef CUserBaseInfo BaseClass;
18
19public:
20 CUserGroupInfo();
21
22 // reimplemented (IUserGroupInfo)
23 virtual UserIds GetUsers() const override;
24 virtual void SetUsers(const UserIds& users) override;
25 virtual void AddUser(const QByteArray& userId) override;
26 virtual bool RemoveUser(const QByteArray& userId) override;
27 virtual GroupIds GetParentGroups() const override;
28 virtual bool AddParentGroup(const QByteArray& parentGroupId) override;
29 virtual bool RemoveParentGroup(const QByteArray& parentGroupId) override;
30 virtual const imtauth::IUserInfoProvider* GetUserProvider() const override;
31
32 // reimplemented (IUserBaseInfo)
33 virtual RoleIds GetRoles(const QByteArray& productId) const override;
34 virtual FeatureIds GetPermissions(const QByteArray& productId = QByteArray()) const override;
35
36 // reimplemented (iser::ISerializable)
37 virtual bool Serialize(iser::IArchive &archive) override;
38
39 // reimplemented (iser::IChangeable)
40 virtual bool CopyFrom(const IChangeable &object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
41 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
42 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
43
44protected:
45 QByteArrayList GetParentGroups(const QByteArray& groupId) const;
46 void GetParentGroupList(const IUserGroupInfo& userGroupInfo, QByteArrayList& groupList) const;
47
48protected:
49 IUserGroupInfo::UserIds m_userIds;
50 IUserGroupInfo::GroupIds m_parentGroupIds;
51 imtauth::IUserInfoProvider* m_userInfoProviderPtr;
52};
53
54
55typedef imtbase::TIdentifiableWrap<CUserGroupInfo> CIdentifiableUserGroupInfo;
56
57
58} // namespace imtauth
59
60
61