Files
smart-go/internal/auth/oauth2/model.go
T
2026-04-23 18:58:13 +08:00

65 lines
2.6 KiB
Go

package oauth2
import "time"
// OAuthClient oauth_client
type OAuthClient struct {
ID string `gorm:"primaryKey;type:varchar(36)"`
ClientID string `gorm:"size:64;not null;uniqueIndex"`
ClientSecretHash *string `gorm:"size:255"`
RedirectURIsJSON string `gorm:"column:redirect_uris;type:text;not null"`
IsPublic bool `gorm:"not null;default:true"`
CreatedAt time.Time `gorm:"not null"`
}
func (OAuthClient) TableName() string { return "oauth_client" }
// OAuthAuthorizationCode oauth_authorization_code
type OAuthAuthorizationCode struct {
ID string `gorm:"primaryKey;type:varchar(36)"`
CodeHash string `gorm:"size:64;not null;uniqueIndex"`
ClientID string `gorm:"size:64;not null"`
RedirectURI string `gorm:"type:text;not null"`
UserID string `gorm:"size:36;not null"`
TenantID string `gorm:"size:36;not null"`
Scope string `gorm:"type:text;not null"`
CodeChallenge string `gorm:"size:128;not null"`
CodeChallengeMethod string `gorm:"size:16;not null"`
ExpiresAt time.Time `gorm:"not null"`
Used bool `gorm:"not null;default:false"`
CreatedAt time.Time `gorm:"not null"`
}
func (OAuthAuthorizationCode) TableName() string { return "oauth_authorization_code" }
// OAuthAccessToken oauth_access_token
type OAuthAccessToken struct {
ID string `gorm:"primaryKey;type:varchar(36)"`
TokenHash string `gorm:"size:64;not null;uniqueIndex"`
ClientID string `gorm:"size:64;not null"`
UserID string `gorm:"size:36;not null"`
TenantID string `gorm:"size:36;not null"`
Scope string `gorm:"type:text;not null"`
ExpiresAt time.Time `gorm:"not null"`
RevokedAt *time.Time `gorm:""`
CreatedAt time.Time `gorm:"not null"`
}
func (OAuthAccessToken) TableName() string { return "oauth_access_token" }
// OAuthRefreshToken oauth_refresh_token
type OAuthRefreshToken struct {
ID string `gorm:"primaryKey;type:varchar(36)"`
TokenHash string `gorm:"size:64;not null;uniqueIndex"`
AccessTokenID string `gorm:"size:36;not null;index"`
ClientID string `gorm:"size:64;not null"`
UserID string `gorm:"size:36;not null"`
TenantID string `gorm:"size:36;not null"`
Scope string `gorm:"type:text;not null"`
ExpiresAt time.Time `gorm:"not null"`
RevokedAt *time.Time `gorm:""`
CreatedAt time.Time `gorm:"not null"`
}
func (OAuthRefreshToken) TableName() string { return "oauth_refresh_token" }