Source-only publication of reviewed commit 64e96a7f423673dc29ad56485be9fc79bce8af1c.
Passed in isolation: focused frontend/backend tests, race checks, TypeScript typecheck, lint, Go compilation, Flowgram build, and deterministic SDK build/tests.
Not accepted as a production release: Next.js export/native assembly remains blocked by environment memory limits; browser interaction and MySQL staging acceptance remain unverified. No production server, database/schema, runtime configuration, deployment, release tag, or workflow execution was performed.
Expected source tree: 0a4a7528e9.
95 lines
3.8 KiB
Go
95 lines
3.8 KiB
Go
// Modified in the independent hardening fork; see docs/hardening.
|
|
|
|
package dto
|
|
|
|
import (
|
|
"agent-desk/internal/pkg/enums"
|
|
"time"
|
|
)
|
|
|
|
type AuthPrincipal struct {
|
|
UserID int64
|
|
Username string
|
|
Nickname string
|
|
Avatar string
|
|
UserType enums.UserType
|
|
Status enums.Status
|
|
Roles []string
|
|
Permissions []string
|
|
|
|
// Session metadata stays internal and binds long-lived connections to the
|
|
// original login session and its absolute deadline.
|
|
LoginSessionID int64 `json:"-"`
|
|
ExpiresAt time.Time `json:"-"`
|
|
}
|
|
|
|
type WebChannelConfig struct {
|
|
Title string `json:"title"`
|
|
Subtitle string `json:"subtitle"`
|
|
ThemeColor string `json:"themeColor"`
|
|
Position string `json:"position"`
|
|
Width string `json:"width"`
|
|
UserTokenSecret string `json:"userTokenSecret,omitempty"`
|
|
RequireSignedIdentity bool `json:"requireSignedIdentity,omitempty"`
|
|
PromptStarters []string `json:"promptStarters,omitempty"`
|
|
}
|
|
|
|
type TelegramChannelConfig struct {
|
|
BotToken string `json:"botToken"`
|
|
BotUsername string `json:"botUsername,omitempty"`
|
|
WebhookSecret string `json:"webhookSecret,omitempty"`
|
|
WelcomeMessage string `json:"welcomeMessage,omitempty"`
|
|
}
|
|
|
|
type ZaloOAChannelConfig struct {
|
|
AppID string `json:"appId,omitempty"`
|
|
OAID string `json:"oaId,omitempty"`
|
|
SecretKey string `json:"secretKey,omitempty"`
|
|
AccessToken string `json:"accessToken"`
|
|
RefreshToken string `json:"refreshToken,omitempty"`
|
|
WebhookSecret string `json:"webhookSecret,omitempty"`
|
|
WelcomeMessage string `json:"welcomeMessage,omitempty"`
|
|
}
|
|
|
|
type SlackChannelConfig struct {
|
|
BotToken string `json:"botToken,omitempty"` // xoxb-... Bot Token
|
|
SigningSecret string `json:"signingSecret,omitempty"` // Slack Signing Secret
|
|
AppID string `json:"appId,omitempty"` // Slack App ID
|
|
TeamID string `json:"teamId,omitempty"` // Slack Workspace Team ID
|
|
TeamName string `json:"teamName,omitempty"` // Slack Workspace Team Name
|
|
DefaultChannel string `json:"defaultChannel,omitempty"` // Default channel to post
|
|
}
|
|
|
|
type EmailChannelConfig struct {
|
|
EmailAddress string `json:"emailAddress,omitempty"`
|
|
ForwardingAddress string `json:"forwardingAddress,omitempty"`
|
|
SenderName string `json:"senderName,omitempty"`
|
|
Provider string `json:"provider,omitempty"`
|
|
APIKey string `json:"apiKey,omitempty"`
|
|
SMTPHost string `json:"smtpHost,omitempty"`
|
|
SMTPPort int `json:"smtpPort,omitempty"`
|
|
SMTPUser string `json:"smtpUser,omitempty"`
|
|
SMTPPassword string `json:"smtpPassword,omitempty"`
|
|
// SMTPUseTLS is a pointer so "not set" stays distinguishable from an explicit
|
|
// false. A plain bool cannot say that, and inheriting the system value is the
|
|
// wrong answer for a channel deliberately bound to a plaintext test server.
|
|
SMTPUseTLS *bool `json:"smtpUseTls,omitempty"`
|
|
// SMTPAllowInsecure accepts a self-signed certificate and skips opportunistic
|
|
// STARTTLS, so a channel can be bound to a local test SMTP server. Never
|
|
// enable it for a real mailbox.
|
|
SMTPAllowInsecure bool `json:"smtpAllowInsecure,omitempty"`
|
|
WebhookSecret string `json:"webhookSecret,omitempty"`
|
|
WelcomeMessage string `json:"welcomeMessage,omitempty"`
|
|
}
|
|
|
|
type DiscordChannelConfig struct {
|
|
GuildID string `json:"guildId,omitempty"`
|
|
GuildName string `json:"guildName,omitempty"`
|
|
ChannelScope string `json:"channelScope,omitempty"` // all | dm_only
|
|
BotToken string `json:"botToken,omitempty"`
|
|
ApplicationID string `json:"applicationId,omitempty"`
|
|
PublicKey string `json:"publicKey,omitempty"`
|
|
WebhookSecret string `json:"webhookSecret,omitempty"`
|
|
WelcomeMessage string `json:"welcomeMessage,omitempty"`
|
|
}
|