From b852198f67a7d2093a642e498abba351f759e181 Mon Sep 17 00:00:00 2001 From: Pascal Fischer Date: Mon, 20 Mar 2023 11:44:12 +0100 Subject: [PATCH] codacy and lint hints --- management/server/account.go | 4 ++-- management/server/account_test.go | 5 ++++- management/server/file_store_test.go | 10 ++++++--- management/server/http/pat_handler.go | 16 +++++++++++++++ management/server/personal_access_token.go | 11 ++++++---- management/server/user.go | 7 ++----- management/server/user_test.go | 24 ++++++++++++++-------- 7 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 management/server/http/pat_handler.go diff --git a/management/server/account.go b/management/server/account.go index f098dfc68..d3f7df028 100644 --- a/management/server/account.go +++ b/management/server/account.go @@ -1127,8 +1127,8 @@ func (am *DefaultAccountManager) GetAccountFromPAT(token string) (*Account, *Use if prefix != PATPrefix { return nil, nil, fmt.Errorf("token invalid") } - secret := token[len(PATPrefix) : len(PATPrefix)+PATsecretLength] - encodedChecksum := token[len(PATPrefix)+PATsecretLength : len(PATPrefix)+PATsecretLength+PATChecksumLength] + secret := token[len(PATPrefix) : len(PATPrefix)+PATSecretLength] + encodedChecksum := token[len(PATPrefix)+PATSecretLength : len(PATPrefix)+PATSecretLength+PATChecksumLength] verificationChecksum, err := base62.Decode(encodedChecksum) if err != nil { diff --git a/management/server/account_test.go b/management/server/account_test.go index b602f4231..fa932023a 100644 --- a/management/server/account_test.go +++ b/management/server/account_test.go @@ -488,7 +488,10 @@ func TestAccountManager_GetAccountFromPAT(t *testing.T) { AutoGroups: nil, PATs: []PersonalAccessToken{pat}, } - store.SaveAccount(account) + err := store.SaveAccount(account) + if err != nil { + t.Fatalf("Error when saving account: %s", err) + } am := DefaultAccountManager{ Store: store, diff --git a/management/server/file_store_test.go b/management/server/file_store_test.go index 030749501..838af50fb 100644 --- a/management/server/file_store_test.go +++ b/management/server/file_store_test.go @@ -7,9 +7,10 @@ import ( "testing" "time" - "github.com/netbirdio/netbird/util" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/netbirdio/netbird/util" ) type accounts struct { @@ -384,6 +385,9 @@ func TestFileStore_GetTokenIDByHashedToken(t *testing.T) { hashedToken := accounts.Accounts["bf1c8084-ba50-4ce7-9439-34653001fc3b"].Users["f4f6d672-63fb-11ec-90d6-0242ac120003"].PATs[0].HashedToken tokenID, err := store.GetTokenIDByHashedToken(hashedToken) + if err != nil { + t.Fatal(err) + } expectedTokenID := accounts.Accounts["bf1c8084-ba50-4ce7-9439-34653001fc3b"].Users["f4f6d672-63fb-11ec-90d6-0242ac120003"].PATs[0].ID assert.Equal(t, expectedTokenID, tokenID) @@ -433,8 +437,8 @@ func TestFileStore_GetUserByTokenID(t *testing.T) { t.Fatal(err) } - tokenId := accounts.Accounts["bf1c8084-ba50-4ce7-9439-34653001fc3b"].Users["f4f6d672-63fb-11ec-90d6-0242ac120003"].PATs[0].ID - user, err := store.GetUserByTokenID(tokenId) + tokenID := accounts.Accounts["bf1c8084-ba50-4ce7-9439-34653001fc3b"].Users["f4f6d672-63fb-11ec-90d6-0242ac120003"].PATs[0].ID + user, err := store.GetUserByTokenID(tokenID) if err != nil { t.Fatal(err) } diff --git a/management/server/http/pat_handler.go b/management/server/http/pat_handler.go new file mode 100644 index 000000000..40199fcd6 --- /dev/null +++ b/management/server/http/pat_handler.go @@ -0,0 +1,16 @@ +package http + +import ( + "github.com/netbirdio/netbird/management/server" + "github.com/netbirdio/netbird/management/server/jwtclaims" +) + +// PATHandler is the nameserver group handler of the account +type PATHandler struct { + accountManager server.AccountManager + claimsExtractor *jwtclaims.ClaimsExtractor +} + +func NewPATsHandler(accountManager server.AccountManager, authCfg AuthCfg) { + +} diff --git a/management/server/personal_access_token.go b/management/server/personal_access_token.go index 27456ec08..7416a9e0b 100644 --- a/management/server/personal_access_token.go +++ b/management/server/personal_access_token.go @@ -13,10 +13,13 @@ import ( const ( // PATPrefix is the globally used, 4 char prefix for personal access tokens - PATPrefix = "nbp_" - PATsecretLength = 30 - PATLength = 40 + PATPrefix = "nbp_" + // PATSecretLength number of characters used for the secret inside the token + PATSecretLength = 30 + // PATChecksumLength number of characters used for the encoded checksum of the secret inside the token PATChecksumLength = 6 + // PATLength total number of characters used for the token + PATLength = 40 ) // PersonalAccessToken holds all information about a PAT including a hashed version of it for verification @@ -51,7 +54,7 @@ func CreateNewPAT(description string, expirationInDays int, createdBy string) (* } func generateNewToken() (string, string, error) { - secret, err := b.Random(PATsecretLength) + secret, err := b.Random(PATSecretLength) if err != nil { return "", "", err } diff --git a/management/server/user.go b/management/server/user.go index 682749475..fcebe006d 100644 --- a/management/server/user.go +++ b/management/server/user.go @@ -206,11 +206,8 @@ func (am *DefaultAccountManager) AddPATToUser(accountID string, userID string, p user.PATs = append(user.PATs, pat) - if err = am.Store.SaveAccount(account); err != nil { - return err - } - - return nil + err = am.Store.SaveAccount(account) + return err } // SaveUser saves updates a given user. If the user doesn't exit it will throw status.NotFound error. diff --git a/management/server/user_test.go b/management/server/user_test.go index 41f009ee3..1c81827ac 100644 --- a/management/server/user_test.go +++ b/management/server/user_test.go @@ -20,7 +20,10 @@ func TestUser_AddPATToUser(t *testing.T) { Name: "peer name", Status: &PeerStatus{Connected: true, LastSeen: time.Now()}, } - store.SaveAccount(account) + err := store.SaveAccount(account) + if err != nil { + t.Fatalf("Error when saving account: %s", err) + } am := DefaultAccountManager{ Store: store, @@ -39,7 +42,7 @@ func TestUser_AddPATToUser(t *testing.T) { token := "someToken" pat := PersonalAccessToken{ - ID: "tokenId", + ID: "tokenID", Description: "some Description", HashedToken: token, ExpirationDate: time.Time{}, @@ -48,20 +51,23 @@ func TestUser_AddPATToUser(t *testing.T) { LastUsed: time.Time{}, } - am.AddPATToUser("account_id", "testuser", pat) + err = am.AddPATToUser("account_id", "testuser", pat) + if err != nil { + t.Fatalf("Error when adding PAT to user: %s", err) + } fileStore := am.Store.(*FileStore) - tokenId := fileStore.HashedPAT2TokenID[string(token[:])] + tokenID := fileStore.HashedPAT2TokenID[token[:]] - if tokenId == "" { + if tokenID == "" { t.Fatal("GetTokenIDByHashedToken failed after adding PAT") } - assert.Equal(t, "tokenId", tokenId) + assert.Equal(t, "tokenID", tokenID) - userId := fileStore.TokenID2UserID[tokenId] - if userId == "" { + userID := fileStore.TokenID2UserID[tokenID] + if userID == "" { t.Fatal("GetUserByTokenId failed after adding PAT") } - assert.Equal(t, "testuser", userId) + assert.Equal(t, "testuser", userID) }