Skip to content

Commit c9f1320

Browse files
authored
Merge pull request #2 from anfen93/ft/add-payload-to-maker
added Payload to CreateToken return values
2 parents 4b690c8 + 2d9f516 commit c9f1320

4 files changed

Lines changed: 20 additions & 12 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Go
1+
name: Test
22

33
on:
44
push:

maker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import "time"
55
// Maker is an interface for managing tokens
66
type Maker interface {
77
// CreateToken creates a new token for a specific username and duration
8-
CreateToken(username string, duration time.Duration) (string, error)
8+
CreateToken(username string, duration time.Duration) (string, *Payload, error)
99

1010
// VerifyToken checks if the provided token is valid or not
1111
VerifyToken(token string) (*Payload, error)

paseto_maker.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,29 +38,36 @@ func NewPasetoMaker() Maker {
3838
}
3939

4040
// CreateToken generates a new Paseto token for a given username and duration.
41-
// It returns an encrypted token string or an error if the token generation fails.
42-
func (maker *PasetoMaker) CreateToken(username string, duration time.Duration) (string, error) {
41+
// It returns an encrypted token string and the Payload struct, or an error if the token generation fails.
42+
func (maker *PasetoMaker) CreateToken(username string, duration time.Duration) (string, *Payload, error) {
4343

4444
token := paseto.NewToken() // Initializes a new Paseto token
4545

4646
tokenID, err := uuid.NewRandom() // Generates a unique identifier for the token
4747
if err != nil {
48-
return "", err // Returns an error if the token generation fails
48+
return "", nil, err // Returns an error if the token generation fails
4949
}
50+
5051
// Adding necessary data to the token
5152
err = token.Set("id", tokenID.String())
5253
if err != nil {
53-
return "", err
54+
return "", nil, err
5455
}
5556
err = token.Set("username", username)
5657
if err != nil {
57-
return "", err
58+
return "", nil, err
5859
}
5960
// Setting issued at and expiration times for the token
6061
token.SetIssuedAt(time.Now())
6162
token.SetExpiration(time.Now().Add(duration))
6263
// Encrypts and returns the token
63-
return token.V4Encrypt(maker.symmetricKey, maker.implicit), nil
64+
65+
encryptedToken := token.V4Encrypt(maker.symmetricKey, maker.implicit)
66+
payload, err := getPayloadFromToken(&token)
67+
if err != nil {
68+
return "", nil, err // Returns an error if the token generation fails
69+
}
70+
return encryptedToken, payload, nil
6471
}
6572

6673
// VerifyToken checks the validity of a provided Paseto token. It returns a Payload

paseto_maker_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ func TestPasetoMakerTokenLifecycle(t *testing.T) {
1414
username := "testuser"
1515
duration := time.Minute
1616

17-
token, err := maker.CreateToken(username, duration)
17+
token, payload, err := maker.CreateToken(username, duration)
1818
require.NoError(t, err, "Token creation should not error")
1919
require.NotEmpty(t, token, "Token should not be empty")
20+
require.NotEmpty(t, payload, "Payload should not be empty")
2021

21-
payload, err := maker.VerifyToken(token)
22+
payload, err = maker.VerifyToken(token)
2223
require.NoError(t, err, "Token verification should not error")
2324
require.NotEmpty(t, payload, "Payload should not be empty")
2425

@@ -33,11 +34,11 @@ func TestPasetoMakerExpiredToken(t *testing.T) {
3334
maker := NewPasetoMaker()
3435
require.NotNil(t, maker, "Maker should not be nil")
3536

36-
token, err := maker.CreateToken("expireduser", -time.Minute)
37+
token, payload, err := maker.CreateToken("expireduser", -time.Minute)
3738
require.NoError(t, err, "Expired token creation should not error")
3839
require.NotEmpty(t, token, "Expired token should not be empty")
3940

40-
payload, err := maker.VerifyToken(token)
41+
payload, err = maker.VerifyToken(token)
4142
require.Error(t, err, "Expired token verification should error")
4243
require.EqualError(t, err, ErrExpiredToken.Error(), "Error should be ErrExpiredToken")
4344
require.Nil(t, payload, "Payload should be nil for an expired token")

0 commit comments

Comments
 (0)