mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-23 16:43:29 +01:00
d4b6d7646c
Implement user deletion across all IDP-ss. Expires all user peers when the user is deleted. Users are permanently removed from a local store, but in IDP, we remove Netbird attributes for the user untilUserDeleteFromIDPEnabled setting is not enabled. To test, an admin user should remove any additional users. Until the UI incorporates this feature, use a curl DELETE request targeting the /users/<USER_ID> management endpoint. Note that this request only removes user attributes and doesn't trigger a delete from the IDP. To enable user removal from the IdP, set UserDeleteFromIDPEnabled to true in account settings. Until we have a UI for this, make this change directly in the store file. Store the deleted email addresses in encrypted in activity store.
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
package activity
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
SystemInitiator = "sys"
|
|
)
|
|
|
|
// Event represents a network/system activity event.
|
|
type Event struct {
|
|
// Timestamp of the event
|
|
Timestamp time.Time
|
|
// Activity that was performed during the event
|
|
Activity Activity
|
|
// ID of the event (can be empty, meaning that it wasn't yet generated)
|
|
ID uint64
|
|
// InitiatorID is the ID of an object that initiated the event (e.g., a user)
|
|
InitiatorID string
|
|
// InitiatorEmail is the email address of an object that initiated the event. This will be set on deleted users only
|
|
InitiatorEmail string
|
|
// TargetID is the ID of an object that was effected by the event (e.g., a peer)
|
|
TargetID string
|
|
// AccountID is the ID of an account where the event happened
|
|
AccountID string
|
|
|
|
// Meta of the event, e.g. deleted peer information like name, IP, etc
|
|
Meta map[string]any
|
|
}
|
|
|
|
// Copy the event
|
|
func (e *Event) Copy() *Event {
|
|
|
|
meta := make(map[string]any, len(e.Meta))
|
|
for key, value := range e.Meta {
|
|
meta[key] = value
|
|
}
|
|
|
|
return &Event{
|
|
Timestamp: e.Timestamp,
|
|
Activity: e.Activity,
|
|
ID: e.ID,
|
|
InitiatorID: e.InitiatorID,
|
|
InitiatorEmail: e.InitiatorEmail,
|
|
TargetID: e.TargetID,
|
|
AccountID: e.AccountID,
|
|
Meta: meta,
|
|
}
|
|
}
|