Change from statelesstoken to securetoken
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -27,6 +27,7 @@ import (
|
|||||||
"go.probo.inc/probo/pkg/gid"
|
"go.probo.inc/probo/pkg/gid"
|
||||||
"go.probo.inc/probo/pkg/mail"
|
"go.probo.inc/probo/pkg/mail"
|
||||||
"go.probo.inc/probo/pkg/page"
|
"go.probo.inc/probo/pkg/page"
|
||||||
|
"go.probo.inc/probo/pkg/securetoken"
|
||||||
"go.probo.inc/probo/pkg/statelesstoken"
|
"go.probo.inc/probo/pkg/statelesstoken"
|
||||||
"go.probo.inc/probo/pkg/validator"
|
"go.probo.inc/probo/pkg/validator"
|
||||||
)
|
)
|
||||||
@@ -561,6 +562,46 @@ func (s AccountService) CountPersonalAPIKeys(ctx context.Context, identityID gid
|
|||||||
|
|
||||||
return count, err
|
return count, err
|
||||||
}
|
}
|
||||||
|
func (s *AccountService) RevealPersonalAPIKeyToken(
|
||||||
|
ctx context.Context,
|
||||||
|
identityID gid.GID,
|
||||||
|
personalAPIKeyID gid.GID,
|
||||||
|
) (string, error) {
|
||||||
|
var token string
|
||||||
|
|
||||||
|
err := s.pg.WithTx(
|
||||||
|
ctx,
|
||||||
|
func(tx pg.Conn) (err error) {
|
||||||
|
personalAPIKey := &coredata.PersonalAPIKey{}
|
||||||
|
if err := personalAPIKey.LoadByID(ctx, tx, personalAPIKeyID); err != nil {
|
||||||
|
if err == coredata.ErrResourceNotFound {
|
||||||
|
return NewPersonalAPIKeyNotFoundError(personalAPIKeyID)
|
||||||
|
}
|
||||||
|
return fmt.Errorf("cannot load personal api key: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if personalAPIKey.IdentityID != identityID {
|
||||||
|
return NewPersonalAPIKeyNotFoundError(personalAPIKeyID)
|
||||||
|
}
|
||||||
|
|
||||||
|
token, err = securetoken.Sign(
|
||||||
|
personalAPIKey.ID.String(),
|
||||||
|
s.tokenSecret,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("cannot generate personal api key token: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
return token, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s AccountService) GetIdentityForMembership(ctx context.Context, membershipID gid.GID) (*coredata.Identity, error) {
|
func (s AccountService) GetIdentityForMembership(ctx context.Context, membershipID gid.GID) (*coredata.Identity, error) {
|
||||||
var (
|
var (
|
||||||
@@ -630,17 +671,9 @@ func (s *AccountService) CreatePersonalAPIKey(
|
|||||||
return fmt.Errorf("cannot insert personal api key: %w", err)
|
return fmt.Errorf("cannot insert personal api key: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err = statelesstoken.NewDeterministicToken(
|
token, err = securetoken.Sign(
|
||||||
|
personalAPIKey.ID.String(),
|
||||||
s.tokenSecret,
|
s.tokenSecret,
|
||||||
TokenTypeAPIKey,
|
|
||||||
personalAPIKey.ExpiresAt,
|
|
||||||
personalAPIKey.CreatedAt,
|
|
||||||
PersonalAPIKeyTokenData{
|
|
||||||
Version: 2,
|
|
||||||
KeyID: personalAPIKey.ID,
|
|
||||||
PrincipalID: identityID,
|
|
||||||
IssuedAt: personalAPIKey.CreatedAt,
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot generate personal api key token: %w", err)
|
return fmt.Errorf("cannot generate personal api key token: %w", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user