1 /*! 2 * \brief Manager for AccessRights 3 * 4 * \copyright Copyright (c) 2020-2021 Governikus GmbH & Co. KG, Germany 5 */ 6 7 #pragma once 8 9 #include "asn1/CVCertificate.h" 10 #include "paos/retrieve/DidAuthenticateEac1.h" 11 12 #include <QDebug> 13 #include <QObject> 14 #include <QPointer> 15 #include <QSharedPointer> 16 17 class test_ChatModel; 18 19 namespace governikus 20 { 21 22 class AccessRightManager 23 : public QObject 24 { 25 Q_OBJECT 26 27 private: 28 friend class ::test_ChatModel; 29 30 public: 31 explicit AccessRightManager(QSharedPointer<DIDAuthenticateEAC1> pDIDAuthenticateEAC1, QSharedPointer<const CVCertificate> pTerminalCvc); 32 33 getTerminalCvc()34 [[nodiscard]] const QSharedPointer<const CVCertificate>& getTerminalCvc() const 35 { 36 return mTerminalCvc; 37 } 38 39 getOptionalAccessRights()40 [[nodiscard]] const QSet<AccessRight>& getOptionalAccessRights() const 41 { 42 return mOptionalAccessRights; 43 } 44 45 getRequiredAccessRights()46 [[nodiscard]] const QSet<AccessRight>& getRequiredAccessRights() const 47 { 48 return mRequiredAccessRights; 49 } 50 51 getEffectiveAccessRights()52 [[nodiscard]] const QSet<AccessRight>& getEffectiveAccessRights() const 53 { 54 return mEffectiveAccessRights; 55 } 56 57 58 void operator+=(AccessRight pAccessRight); 59 void operator-=(AccessRight pAccessRight); 60 void operator=(const QSet<AccessRight>& pAccessRights); 61 operator QByteArray() const; 62 63 Q_SIGNALS: 64 void fireEffectiveAccessRightsChanged(); 65 66 private: 67 QSharedPointer<const CVCertificate> mTerminalCvc; 68 QSharedPointer<DIDAuthenticateEAC1> mDIDAuthenticateEAC1; 69 QSet<AccessRight> mOptionalAccessRights; 70 QSet<AccessRight> mEffectiveAccessRights; 71 QSet<AccessRight> mRequiredAccessRights; 72 73 void removeForbiddenAccessRights(QSet<AccessRight>& pAccessRights); 74 }; 75 76 } // namespace governikus 77