2025-09-27 10:17:16 +08:00

273 lines
6.9 KiB
Go

package auth
import (
"encoding/json"
"time"
)
type Auth struct {
Id int64 `gorm:"primaryKey"`
Method string `gorm:"unique;type:varchar(255);not null;default:'';comment:platform"`
Config string `gorm:"type:text;not null;comment:Auth Configuration"`
Enabled *bool `gorm:"type:tinyint(1);not null;default:false;comment:Is Enabled"`
CreatedAt time.Time `gorm:"<-:create;comment:Create Time"`
UpdatedAt time.Time `gorm:"comment:Update Time"`
}
func (Auth) TableName() string {
return "auth_method"
}
type AppleAuthConfig struct {
TeamID string `json:"team_id"`
KeyID string `json:"key_id"`
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
RedirectURL string `json:"redirect_url"`
}
func (l *AppleAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(AppleAuthConfig))
}
return string(bytes)
}
func (l *AppleAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type GoogleAuthConfig struct {
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
RedirectURL string `json:"redirect_url"`
}
func (l *GoogleAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(GoogleAuthConfig))
}
return string(bytes)
}
func (l *GoogleAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type GithubAuthConfig struct {
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
RedirectURL string `json:"redirect_url"`
}
func (l *GithubAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(GithubAuthConfig))
}
return string(bytes)
}
func (l *GithubAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type FacebookAuthConfig struct {
ClientId string `json:"client_id"`
ClientSecret string `json:"client_secret"`
RedirectURL string `json:"redirect_url"`
}
func (l *FacebookAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(FacebookAuthConfig))
}
return string(bytes)
}
func (l *FacebookAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type TelegramAuthConfig struct {
BotToken string `json:"bot_token"`
EnableNotify bool `json:"enable_notify"`
WebHookDomain string `json:"webhook_domain"`
}
func (l *TelegramAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(TelegramAuthConfig))
}
return string(bytes)
}
func (l *TelegramAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type EmailAuthConfig struct {
Platform string `json:"platform"`
PlatformConfig interface{} `json:"platform_config"`
EnableVerify bool `json:"enable_verify"`
EnableNotify bool `json:"enable_notify"`
EnableDomainSuffix bool `json:"enable_domain_suffix"`
DomainSuffixList string `json:"domain_suffix_list"`
VerifyEmailTemplate string `json:"verify_email_template"`
ExpirationEmailTemplate string `json:"expiration_email_template"`
MaintenanceEmailTemplate string `json:"maintenance_email_template"`
TrafficExceedEmailTemplate string `json:"traffic_exceed_email_template"`
}
func (l *EmailAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(EmailAuthConfig))
}
return string(bytes)
}
func (l *EmailAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
// SMTPConfig Email SMTP configuration
type SMTPConfig struct {
Host string `json:"host"`
Port int `json:"port"`
User string `json:"user"`
Pass string `json:"pass"`
From string `json:"from"`
SSL bool `json:"ssl"`
}
func (l *SMTPConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(SMTPConfig))
}
return string(bytes)
}
func (l *SMTPConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type MobileAuthConfig struct {
Platform string `json:"platform"`
PlatformConfig interface{} `json:"platform_config"`
EnableWhitelist bool `json:"enable_whitelist"`
Whitelist []string `json:"whitelist"`
}
func (l *MobileAuthConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(MobileAuthConfig))
}
return string(bytes)
}
func (l *MobileAuthConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), &l)
}
type AlibabaCloudConfig struct {
Access string `json:"access"`
Secret string `json:"secret"`
SignName string `json:"sign_name"`
Endpoint string `json:"endpoint"`
TemplateCode string `json:"template_code"`
}
func (l *AlibabaCloudConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(AlibabaCloudConfig))
}
return string(bytes)
}
func (l *AlibabaCloudConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), l)
}
type SmsbaoConfig struct {
Access string `json:"access"`
Secret string `json:"secret"`
Template string `json:"template"`
}
func (l *SmsbaoConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(SmsbaoConfig))
}
return string(bytes)
}
func (l *SmsbaoConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), l)
}
type AbosendConfig struct {
ApiDomain string `json:"api_domain"`
Access string `json:"access"`
Secret string `json:"secret"`
Template string `json:"template"`
}
func (l *AbosendConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(AbosendConfig))
}
return string(bytes)
}
func (l *AbosendConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), l)
}
type TwilioConfig struct {
Access string `json:"access"`
Secret string `json:"secret"`
PhoneNumber string `json:"phone_number"`
Template string `json:"template"`
}
func (l *TwilioConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(TwilioConfig))
}
return string(bytes)
}
func (l *TwilioConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), l)
}
type DeviceConfig struct {
ShowAds bool `json:"show_ads"`
OnlyRealDevice bool `json:"only_real_device"`
EnableSecurity bool `json:"enable_security"`
SecuritySecret string `json:"security_secret"`
}
func (l *DeviceConfig) Marshal() string {
bytes, err := json.Marshal(l)
if err != nil {
bytes, _ = json.Marshal(new(DeviceConfig))
}
return string(bytes)
}
func (l *DeviceConfig) Unmarshal(data string) error {
return json.Unmarshal([]byte(data), l)
}