Leosac  0.7.0
OpenSourceAccessControl
AuditFwd.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014-2016 Leosac
3 
4  This file is part of Leosac.
5 
6  Leosac is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Affero General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Leosac is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Affero General Public License for more details.
15 
16  You should have received a copy of the GNU Affero General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include <cstddef>
23 #include <flagset.hpp>
24 #include <memory>
25 #include <odb/lazy-ptr.hxx>
26 
27 namespace Leosac
28 {
29 namespace Audit
30 {
31 using AuditEntryId = unsigned long;
32 
33 class Factory;
34 
39 class IAuditEntry;
40 using IAuditEntryPtr = std::shared_ptr<IAuditEntry>;
41 
42 class IAuditTracker;
43 using IAuditTrackerPtr = std::shared_ptr<IAuditTracker>;
44 
45 class IUserEvent;
46 using IUserEventPtr = std::shared_ptr<IUserEvent>;
47 
48 class IGroupEvent;
49 using IGroupEventPtr = std::shared_ptr<IGroupEvent>;
50 
51 class IWSAPICall;
52 using IWSAPICallPtr = std::shared_ptr<IWSAPICall>;
53 
55 using IUserGroupMembershipEventPtr = std::shared_ptr<IUserGroupMembershipEvent>;
56 
57 class ICredentialEvent;
58 using ICredentialEventPtr = std::shared_ptr<ICredentialEvent>;
59 
60 class IScheduleEvent;
61 using IScheduleEventPtr = std::shared_ptr<IScheduleEvent>;
62 
63 class IDoorEvent;
64 using IDoorEventPtr = std::shared_ptr<IDoorEvent>;
65 
66 class IAccessPointEvent;
67 using IAccessPointEventPtr = std::shared_ptr<IAccessPointEvent>;
68 
69 class IUpdateEvent;
70 using IUpdateEventPtr = std::shared_ptr<IUpdateEvent>;
71 
72 class IZoneEvent;
73 using IZoneEventPtr = std::shared_ptr<IZoneEvent>;
74 
79 class AuditEntry;
80 using AuditEntryLPtr = odb::lazy_shared_ptr<AuditEntry>;
81 using AuditEntryPtr = std::shared_ptr<AuditEntry>;
82 using AuditEntryWPtr = std::weak_ptr<AuditEntry>;
83 
84 class AuditTracker;
85 using AuditTrackerPtr = std::shared_ptr<AuditTracker>;
86 using AuditTrackerWPtr = std::weak_ptr<AuditTracker>;
87 
88 class WSAPICall;
89 using WSAPICallUPtr = std::unique_ptr<WSAPICall>;
90 using WSAPICallPtr = std::shared_ptr<WSAPICall>;
91 
92 class UserEvent;
93 using UserEventPtr = std::shared_ptr<UserEvent>;
94 
95 class GroupEvent;
96 using GroupEventPtr = std::shared_ptr<GroupEvent>;
97 
99 using UserGroupMembershipEventPtr = std::shared_ptr<UserGroupMembershipEvent>;
100 
101 class CredentialEvent;
102 using CredentialEventPtr = std::shared_ptr<CredentialEvent>;
103 
104 class ScheduleEvent;
105 using ScheduleEventPtr = std::shared_ptr<ScheduleEvent>;
106 
107 class DoorEvent;
108 using DoorEventPtr = std::shared_ptr<DoorEvent>;
109 
110 class AccessPointEvent;
111 using AccessPointEventPtr = std::shared_ptr<AccessPointEvent>;
112 
113 class UpdateEvent;
114 using UpdateEventPtr = std::shared_ptr<UpdateEvent>;
115 
116 class ZoneEvent;
117 using ZoneEventPtr = std::shared_ptr<ZoneEvent>;
118 
119 enum class EventType
120 {
121  WSAPI_CALL,
122  USER_CREATED,
123  USER_DELETED,
124  USER_EDITED,
130 
142 
146 
150 
151  DOOR_CREATED,
152  DOOR_UPDATED,
153  DOOR_DELETED,
163 
167 
169  UPDATE_ACKED,
171 
172  ZONE_CREATED,
173  ZONE_UPDATED,
174  ZONE_DELETED,
175 
176  LAST__
177 };
178 
179 using EventMask = FlagSet<EventType>;
180 }
181 }
std::weak_ptr< AuditTracker > AuditTrackerWPtr
Definition: AuditFwd.hpp:86
odb::lazy_shared_ptr< AuditEntry > AuditEntryLPtr
Definition: AuditFwd.hpp:80
Implementation of IAuditEntry, backed by ODB.
Definition: AuditEntry.hpp:45
std::shared_ptr< DoorEvent > DoorEventPtr
Definition: AuditFwd.hpp:108
Provides an implementation of IGroupEvent.
Definition: GroupEvent.hpp:33
std::shared_ptr< ZoneEvent > ZoneEventPtr
Definition: AuditFwd.hpp:117
This is the header file for a generated source file, GitSHA1.cpp.
Provides an implementation of IDoorEvent.
Definition: DoorEvent.hpp:33
std::shared_ptr< ScheduleEvent > ScheduleEventPtr
Definition: AuditFwd.hpp:105
std::unique_ptr< WSAPICall > WSAPICallUPtr
Definition: AuditFwd.hpp:89
Provides an implementation of IZoneEvent.
Definition: ZoneEvent.hpp:33
std::shared_ptr< IWSAPICall > IWSAPICallPtr
Definition: AuditFwd.hpp:52
unsigned long AuditEntryId
Definition: AuditFwd.hpp:31
Interface to audit object that take care of tracking user/group membership change.
Interface that describes an Audit object for group related event.
Definition: IGroupEvent.hpp:36
std::shared_ptr< IAuditEntry > IAuditEntryPtr
Definition: AuditFwd.hpp:40
std::shared_ptr< IGroupEvent > IGroupEventPtr
Definition: AuditFwd.hpp:49
Implementation of IAuditTracker, backed by ODB.
An attempt to change the password failed.
Audit interface to Schedule related events.
std::shared_ptr< IZoneEvent > IZoneEventPtr
Definition: AuditFwd.hpp:73
Provides an implementation of IUserEvent.
Definition: UserEvent.hpp:33
std::shared_ptr< IScheduleEvent > IScheduleEventPtr
Definition: AuditFwd.hpp:61
Base interface to Audit object.
Definition: IAuditEntry.hpp:47
std::shared_ptr< UserGroupMembershipEvent > UserGroupMembershipEventPtr
Definition: AuditFwd.hpp:99
std::shared_ptr< IUserEvent > IUserEventPtr
Definition: AuditFwd.hpp:46
Interface that describes an Audit object for zone related event.
Definition: IZoneEvent.hpp:32
std::shared_ptr< AuditEntry > AuditEntryPtr
Definition: AuditFwd.hpp:81
std::shared_ptr< AuditTracker > AuditTrackerPtr
Definition: AuditFwd.hpp:85
std::shared_ptr< ICredentialEvent > ICredentialEventPtr
Definition: AuditFwd.hpp:58
std::shared_ptr< IAccessPointEvent > IAccessPointEventPtr
Definition: AuditFwd.hpp:67
The AuditTracker class provides the ability to "track" the audit log and acknowledge its entries...
FlagSet< EventType > EventMask
Definition: AuditFwd.hpp:179
Provides an implementation of IScheduleEvent.
std::shared_ptr< IUserGroupMembershipEvent > IUserGroupMembershipEventPtr
Definition: AuditFwd.hpp:55
Interface for update-related event.
Provides an implementation of ICredentialEvent.
An audit entry dedicated to tracing API call.
Definition: IWSAPICall.hpp:39
Interface that describes an Audit object for AccessPoint related event.
std::shared_ptr< IAuditTracker > IAuditTrackerPtr
Definition: AuditFwd.hpp:43
std::shared_ptr< UpdateEvent > UpdateEventPtr
Definition: AuditFwd.hpp:114
std::shared_ptr< IDoorEvent > IDoorEventPtr
Definition: AuditFwd.hpp:64
std::shared_ptr< IUpdateEvent > IUpdateEventPtr
Definition: AuditFwd.hpp:70
Provides an implementation of IUserGroupMembershipEvent.
std::shared_ptr< AccessPointEvent > AccessPointEventPtr
Definition: AuditFwd.hpp:111
std::shared_ptr< WSAPICall > WSAPICallPtr
Definition: AuditFwd.hpp:90
Interface that describes an Audit object for door related event.
Definition: IDoorEvent.hpp:32
std::shared_ptr< UserEvent > UserEventPtr
Definition: AuditFwd.hpp:93
std::shared_ptr< CredentialEvent > CredentialEventPtr
Definition: AuditFwd.hpp:102
Provides an implementation of IUpdateEvent.
Definition: UpdateEvent.hpp:33
Audit interface to Credential related events.
Provides the implementation of IWSAPICall.
Definition: WSAPICall.hpp:33
std::shared_ptr< GroupEvent > GroupEventPtr
Definition: AuditFwd.hpp:96
Provide static methods to instanciate various Audit objects.
Provides an implementation of IAccessPointEvent.
std::weak_ptr< AuditEntry > AuditEntryWPtr
Definition: AuditFwd.hpp:82
Interface that describes an Audit object when a user-related event happens.
Definition: IUserEvent.hpp:37