Files

33 lines
696 B
Go

package oidc
import (
"context"
"github.com/ory/fosite/handler/rfc8628"
"github.com/pocket-id/pocket-id/backend/internal/utils"
)
const (
oauthDeviceUserCodePrefix = "E"
oauthDeviceUserCodeRandomLength = 7
)
type deviceStrategy struct {
*rfc8628.DefaultDeviceStrategy
}
func (s *deviceStrategy) GenerateUserCode(ctx context.Context) (string, string, error) {
userCode, err := utils.GenerateRandomUppercaseUnambiguousString(oauthDeviceUserCodeRandomLength)
if err != nil {
return "", "", err
}
userCode = oauthDeviceUserCodePrefix + userCode
signature, err := s.UserCodeSignature(ctx, userCode)
if err != nil {
return "", "", err
}
return userCode, signature, nil
}