summaryrefslogtreecommitdiff
path: root/internal/oauth
diff options
context:
space:
mode:
Diffstat (limited to 'internal/oauth')
-rw-r--r--internal/oauth/clientstore.go2
-rw-r--r--internal/oauth/tokenstore.go15
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