passkey.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package system_setting
  2. import (
  3. "net/url"
  4. "strings"
  5. "github.com/QuantumNous/new-api/common"
  6. "github.com/QuantumNous/new-api/setting/config"
  7. )
  8. type PasskeySettings struct {
  9. Enabled bool `json:"enabled"`
  10. RPDisplayName string `json:"rp_display_name"`
  11. RPID string `json:"rp_id"`
  12. Origins string `json:"origins"`
  13. AllowInsecureOrigin bool `json:"allow_insecure_origin"`
  14. UserVerification string `json:"user_verification"`
  15. AttachmentPreference string `json:"attachment_preference"`
  16. }
  17. var defaultPasskeySettings = PasskeySettings{
  18. Enabled: false,
  19. RPDisplayName: common.SystemName,
  20. RPID: "",
  21. Origins: "",
  22. AllowInsecureOrigin: false,
  23. UserVerification: "preferred",
  24. AttachmentPreference: "",
  25. }
  26. func init() {
  27. config.GlobalConfig.Register("passkey", &defaultPasskeySettings)
  28. }
  29. func GetPasskeySettings() *PasskeySettings {
  30. if defaultPasskeySettings.RPID == "" && ServerAddress != "" {
  31. // 从ServerAddress提取域名作为RPID
  32. // ServerAddress可能是 "https://newapi.pro" 这种格式
  33. serverAddr := strings.TrimSpace(ServerAddress)
  34. if parsed, err := url.Parse(serverAddr); err == nil && parsed.Host != "" {
  35. defaultPasskeySettings.RPID = parsed.Host
  36. } else {
  37. defaultPasskeySettings.RPID = serverAddr
  38. }
  39. }
  40. if defaultPasskeySettings.Origins == "" || defaultPasskeySettings.Origins == "[]" {
  41. defaultPasskeySettings.Origins = ServerAddress
  42. }
  43. return &defaultPasskeySettings
  44. }