mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-11 15:53:04 +03:00
69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
package model
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"errors"
|
|
datatype "github.com/stonith404/pocket-id/backend/internal/model/types"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type UserAuthorizedOidcClient struct {
|
|
Scope string
|
|
UserID string `gorm:"primary_key;"`
|
|
User User
|
|
|
|
ClientID string `gorm:"primary_key;"`
|
|
Client OidcClient
|
|
}
|
|
|
|
type OidcAuthorizationCode struct {
|
|
Base
|
|
|
|
Code string
|
|
Scope string
|
|
Nonce string
|
|
CodeChallenge *string
|
|
CodeChallengeMethodSha256 *bool
|
|
ExpiresAt datatype.DateTime
|
|
|
|
UserID string
|
|
User User
|
|
|
|
ClientID string
|
|
}
|
|
|
|
type OidcClient struct {
|
|
Base
|
|
|
|
Name string
|
|
Secret string
|
|
CallbackURLs CallbackURLs
|
|
ImageType *string
|
|
HasLogo bool `gorm:"-"`
|
|
IsPublic bool
|
|
|
|
CreatedByID string
|
|
CreatedBy User
|
|
}
|
|
|
|
func (c *OidcClient) AfterFind(_ *gorm.DB) (err error) {
|
|
// Compute HasLogo field
|
|
c.HasLogo = c.ImageType != nil && *c.ImageType != ""
|
|
return nil
|
|
}
|
|
|
|
type CallbackURLs []string
|
|
|
|
func (cu *CallbackURLs) Scan(value interface{}) error {
|
|
if v, ok := value.([]byte); ok {
|
|
return json.Unmarshal(v, cu)
|
|
} else {
|
|
return errors.New("type assertion to []byte failed")
|
|
}
|
|
}
|
|
|
|
func (cu CallbackURLs) Value() (driver.Value, error) {
|
|
return json.Marshal(cu)
|
|
}
|