mirror of
https://github.com/netbirdio/netbird.git
synced 2025-06-20 01:38:41 +02:00
Merge pull request #776 from netbirdio/feature/activity_events_for_pat
feature/activity_events_for_pat
This commit is contained in:
commit
769388cd21
@ -83,6 +83,10 @@ const (
|
|||||||
AccountPeerLoginExpirationDisabled
|
AccountPeerLoginExpirationDisabled
|
||||||
// AccountPeerLoginExpirationDurationUpdated indicates that a user updated peer login expiration duration for the account
|
// AccountPeerLoginExpirationDurationUpdated indicates that a user updated peer login expiration duration for the account
|
||||||
AccountPeerLoginExpirationDurationUpdated
|
AccountPeerLoginExpirationDurationUpdated
|
||||||
|
// PersonalAccessTokenCreated indicates that a user created a personal access token
|
||||||
|
PersonalAccessTokenCreated
|
||||||
|
// PersonalAccessTokenDeleted indicates that a user deleted a personal access token
|
||||||
|
PersonalAccessTokenDeleted
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -168,6 +172,10 @@ const (
|
|||||||
AccountPeerLoginExpirationDisabledMessage string = "Peer login expiration disabled for the account"
|
AccountPeerLoginExpirationDisabledMessage string = "Peer login expiration disabled for the account"
|
||||||
// AccountPeerLoginExpirationDurationUpdatedMessage is a human-readable text message of the AccountPeerLoginExpirationDurationUpdated activity
|
// AccountPeerLoginExpirationDurationUpdatedMessage is a human-readable text message of the AccountPeerLoginExpirationDurationUpdated activity
|
||||||
AccountPeerLoginExpirationDurationUpdatedMessage string = "Peer login expiration duration updated"
|
AccountPeerLoginExpirationDurationUpdatedMessage string = "Peer login expiration duration updated"
|
||||||
|
// PersonalAccessTokenCreatedMessage is a human-readable text message of the PersonalAccessTokenCreated activity
|
||||||
|
PersonalAccessTokenCreatedMessage string = "Personal access token created"
|
||||||
|
// PersonalAccessTokenDeletedMessage is a human-readable text message of the PersonalAccessTokenDeleted activity
|
||||||
|
PersonalAccessTokenDeletedMessage string = "Personal access token deleted"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Activity that triggered an Event
|
// Activity that triggered an Event
|
||||||
@ -258,6 +266,10 @@ func (a Activity) Message() string {
|
|||||||
return AccountPeerLoginExpirationDisabledMessage
|
return AccountPeerLoginExpirationDisabledMessage
|
||||||
case AccountPeerLoginExpirationDurationUpdated:
|
case AccountPeerLoginExpirationDurationUpdated:
|
||||||
return AccountPeerLoginExpirationDurationUpdatedMessage
|
return AccountPeerLoginExpirationDurationUpdatedMessage
|
||||||
|
case PersonalAccessTokenCreated:
|
||||||
|
return PersonalAccessTokenCreatedMessage
|
||||||
|
case PersonalAccessTokenDeleted:
|
||||||
|
return PersonalAccessTokenDeletedMessage
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_ACTIVITY"
|
return "UNKNOWN_ACTIVITY"
|
||||||
}
|
}
|
||||||
@ -348,6 +360,10 @@ func (a Activity) StringCode() string {
|
|||||||
return "account.setting.peer.login.expiration.enable"
|
return "account.setting.peer.login.expiration.enable"
|
||||||
case AccountPeerLoginExpirationDisabled:
|
case AccountPeerLoginExpirationDisabled:
|
||||||
return "account.setting.peer.login.expiration.disable"
|
return "account.setting.peer.login.expiration.disable"
|
||||||
|
case PersonalAccessTokenCreated:
|
||||||
|
return "personal.access.token.create"
|
||||||
|
case PersonalAccessTokenDeleted:
|
||||||
|
return "personal.access.token.delete"
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_ACTIVITY"
|
return "UNKNOWN_ACTIVITY"
|
||||||
}
|
}
|
||||||
|
@ -232,6 +232,9 @@ func (am *DefaultAccountManager) CreatePAT(accountID string, executingUserID str
|
|||||||
return nil, status.Errorf(status.Internal, "failed to save account: %v", err)
|
return nil, status.Errorf(status.Internal, "failed to save account: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta := map[string]any{"name": pat.Name}
|
||||||
|
am.storeEvent(executingUserID, targetUserId, accountID, activity.PersonalAccessTokenCreated, meta)
|
||||||
|
|
||||||
return pat, nil
|
return pat, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,6 +270,10 @@ func (am *DefaultAccountManager) DeletePAT(accountID string, executingUserID str
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return status.Errorf(status.Internal, "Failed to delete hashed token index: %s", err)
|
return status.Errorf(status.Internal, "Failed to delete hashed token index: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
meta := map[string]any{"name": pat.Name}
|
||||||
|
am.storeEvent(executingUserID, targetUserID, accountID, activity.PersonalAccessTokenDeleted, meta)
|
||||||
|
|
||||||
delete(user.PATs, tokenID)
|
delete(user.PATs, tokenID)
|
||||||
|
|
||||||
err = am.Store.SaveAccount(account)
|
err = am.Store.SaveAccount(account)
|
||||||
|
@ -4,6 +4,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"github.com/netbirdio/netbird/management/server/activity"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -31,6 +33,7 @@ func TestUser_CreatePAT_ForSameUser(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
pat, err := am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockTokenName, mockExpiresIn)
|
pat, err := am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockTokenName, mockExpiresIn)
|
||||||
@ -65,6 +68,7 @@ func TestUser_CreatePAT_ForDifferentUser(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = am.CreatePAT(mockAccountID, mockUserID, mockTargetUserId, mockTokenName, mockExpiresIn)
|
_, err = am.CreatePAT(mockAccountID, mockUserID, mockTargetUserId, mockTokenName, mockExpiresIn)
|
||||||
@ -82,6 +86,7 @@ func TestUser_CreatePAT_WithWrongExpiration(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockTokenName, mockWrongExpiresIn)
|
_, err = am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockTokenName, mockWrongExpiresIn)
|
||||||
@ -99,6 +104,7 @@ func TestUser_CreatePAT_WithEmptyName(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockEmptyTokenName, mockExpiresIn)
|
_, err = am.CreatePAT(mockAccountID, mockUserID, mockUserID, mockEmptyTokenName, mockExpiresIn)
|
||||||
@ -124,6 +130,7 @@ func TestUser_DeletePAT(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
err = am.DeletePAT(mockAccountID, mockUserID, mockUserID, mockTokenID1)
|
err = am.DeletePAT(mockAccountID, mockUserID, mockUserID, mockTokenID1)
|
||||||
@ -155,6 +162,7 @@ func TestUser_GetPAT(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
pat, err := am.GetPAT(mockAccountID, mockUserID, mockUserID, mockTokenID1)
|
pat, err := am.GetPAT(mockAccountID, mockUserID, mockUserID, mockTokenID1)
|
||||||
@ -189,6 +197,7 @@ func TestUser_GetAllPATs(t *testing.T) {
|
|||||||
|
|
||||||
am := DefaultAccountManager{
|
am := DefaultAccountManager{
|
||||||
Store: store,
|
Store: store,
|
||||||
|
eventStore: &activity.InMemoryEventStore{},
|
||||||
}
|
}
|
||||||
|
|
||||||
pats, err := am.GetAllPATs(mockAccountID, mockUserID, mockUserID)
|
pats, err := am.GetAllPATs(mockAccountID, mockUserID, mockUserID)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user