diff --git a/api/nkode_api_test.go b/api/nkode_api_test.go index 7d7a9f2..8ee1771 100644 --- a/api/nkode_api_test.go +++ b/api/nkode_api_test.go @@ -42,7 +42,8 @@ func testNKodeAPI(t *testing.T, db repository.CustomerUserRepository) { attrsPerKey := 5 numbOfKeys := 4 for idx := 0; idx < 1; idx++ { - userEmail := entities.UserEmail("test_username" + security.GenerateRandomString(12) + "@example.com") + rand, + userEmail := entities.UserEmail("test_username" + security.GenerateNonSecureRandomString(12) + "@example.com") passcodeLen := 4 nkodePolicy := entities.NewDefaultNKodePolicy() keypadSize := entities.KeypadDimension{AttrsPerKey: attrsPerKey, NumbOfKeys: numbOfKeys} diff --git a/handler/handler.go b/handler/handler.go index 9164ef1..a58015e 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -245,6 +245,10 @@ func (h *NkodeHandler) RefreshTokenHandler(c *gin.Context) { return } refreshClaims, err := security.ParseRegisteredClaimToken(refreshToken) + if err != nil { + c.String(500, "Internal Error") + return + } customerId, err := uuid.Parse(refreshClaims.Issuer) if err != nil { c.String(400, malformedCustomerId) diff --git a/handler/handler_test.go b/handler/handler_test.go index f49c2bc..a3aa702 100644 --- a/handler/handler_test.go +++ b/handler/handler_test.go @@ -32,7 +32,7 @@ func TestNKodeAPI(t *testing.T) { assert.NoError(t, err) attrPerKey := 9 numKeys := 6 - userEmail := "test_username" + security.GenerateRandomString(12) + "@example.com" + userEmail := "test_username" + security.GenerateNonSecureRandomString(12) + "@example.com" // *** Signup *** resp, status, err := tr.Signup(customerID, attrPerKey, numKeys, userEmail) diff --git a/repository/sqlite_repository.go b/repository/sqlite_repository.go index fb192a5..fe73b5e 100644 --- a/repository/sqlite_repository.go +++ b/repository/sqlite_repository.go @@ -5,7 +5,6 @@ import ( "database/sql" "errors" "fmt" - "git.infra.nkode.tech/dkelly/nkode-core/config" "git.infra.nkode.tech/dkelly/nkode-core/entities" "git.infra.nkode.tech/dkelly/nkode-core/security" "git.infra.nkode.tech/dkelly/nkode-core/sqlc" @@ -409,39 +408,12 @@ func (d *SqliteRepository) getSvgsById(ids []int) ([]string, error) { } func (d *SqliteRepository) getRandomIds(count int) ([]int, error) { - tx, err := d.Queue.Db.Begin() + totalRows, err := d.Queue.Queries.GetSvgCount(d.ctx) if err != nil { log.Print(err) - return nil, config.ErrSqliteTx - } - rows, err := tx.Query("SELECT COUNT(*) as count FROM svg_icon;") - if err != nil { - log.Print(err) - return nil, config.ErrSqliteTx - } - var tableLen int - if !rows.Next() { - return nil, config.ErrEmptySvgTable - } - - if err = rows.Scan(&tableLen); err != nil { - log.Print(err) - return nil, config.ErrSqliteTx - } - perm, err := security.RandomPermutation(tableLen) - - if err != nil { return nil, err } - - for idx := range perm { - perm[idx] += 1 - } - - if err = tx.Commit(); err != nil { - log.Print(err) - return nil, config.ErrSqliteTx - } + perm, err := security.RandomPermutation(int(totalRows)) return perm[:count], nil } diff --git a/security/random.go b/security/random.go index 43a3593..3262369 100644 --- a/security/random.go +++ b/security/random.go @@ -268,8 +268,7 @@ func Choice[T any](items []T) T { return items[r.Intn(len(items))] } -// GenerateRandomString creates a random string of a specified length. -func GenerateRandomString(length int) string { +func GenerateNonSecureRandomString(length int) string { charset := []rune("abcdefghijklmnopqrstuvwxyz0123456789") b := make([]rune, length) for i := range b {