diff options
Diffstat (limited to 'internal/oauth')
-rw-r--r-- | internal/oauth/clientstore.go | 2 | ||||
-rw-r--r-- | internal/oauth/tokenstore.go | 15 |
2 files changed, 14 insertions, 3 deletions
diff --git a/internal/oauth/clientstore.go b/internal/oauth/clientstore.go index 5241cf412..998f6784e 100644 --- a/internal/oauth/clientstore.go +++ b/internal/oauth/clientstore.go @@ -67,7 +67,7 @@ func (cs *clientStore) Delete(ctx context.Context, id string) error { // Client is a handy little wrapper for typical oauth client details type Client struct { - ID string + ID string `pg:"type:CHAR(26),pk,notnull"` Secret string Domain string UserID string diff --git a/internal/oauth/tokenstore.go b/internal/oauth/tokenstore.go index 04319ee0b..5f8e07882 100644 --- a/internal/oauth/tokenstore.go +++ b/internal/oauth/tokenstore.go @@ -26,6 +26,7 @@ import ( "github.com/sirupsen/logrus" "github.com/superseriousbusiness/gotosocial/internal/db" + "github.com/superseriousbusiness/gotosocial/internal/id" "github.com/superseriousbusiness/oauth2/v4" "github.com/superseriousbusiness/oauth2/v4/models" ) @@ -98,7 +99,17 @@ func (pts *tokenStore) Create(ctx context.Context, info oauth2.TokenInfo) error if !ok { return errors.New("info param was not a models.Token") } - if err := pts.db.Put(TokenToPGToken(t)); err != nil { + + pgt := TokenToPGToken(t) + if pgt.ID == "" { + pgtID, err := id.NewRandomULID() + if err != nil { + return err + } + pgt.ID = pgtID + } + + if err := pts.db.Put(pgt); err != nil { return fmt.Errorf("error in tokenstore create: %s", err) } return nil @@ -176,7 +187,7 @@ func (pts *tokenStore) GetByRefresh(ctx context.Context, refresh string) (oauth2 // As such, manual translation is always required between Token and the gotosocial *model.Token. The helper functions oauthTokenToPGToken // and pgTokenToOauthToken can be used for that. type Token struct { - ID string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"` + ID string `pg:"type:CHAR(26),pk,notnull"` ClientID string UserID string RedirectURI string |