mirror of
https://github.com/komari-monitor/komari.git
synced 2026-11-12 09:24:35 +00:00
Compare commits
3
Commits
1.0.3
...
1.0.3-fix1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17e0e14aef | ||
|
|
731602a80d | ||
|
|
37f0e449de |
No files matched your search
+1
-10
@@ -83,16 +83,7 @@ func RunServer() {
|
||||
go DoScheduledWork()
|
||||
go messageSender.Initialize()
|
||||
// oidcInit
|
||||
oidcProvider, err := database.GetOidcConfigByName(conf.OAuthProvider)
|
||||
if err != nil {
|
||||
log.Printf("Failed to get OIDC provider config: %v", err)
|
||||
}
|
||||
err = oauth.LoadProvider(oidcProvider.Name, oidcProvider.Addition)
|
||||
if err != nil {
|
||||
log.Printf("Failed to load OIDC provider: %v", err)
|
||||
} else {
|
||||
log.Printf("Using %s as OIDC provider", oidcProvider.Name)
|
||||
}
|
||||
go oauth.Initialize()
|
||||
config.Subscribe(func(event config.ConfigEvent) {
|
||||
if event.New.OAuthProvider != event.Old.OAuthProvider {
|
||||
oidcProvider, err := database.GetOidcConfigByName(event.New.OAuthProvider)
|
||||
|
||||
@@ -22,10 +22,10 @@ func TestRegisterAndGetProviderConfigs(t *testing.T) {
|
||||
t.Error("Expected non-empty OIDC provider names, got empty")
|
||||
}
|
||||
|
||||
err := LoadProvider("github", `{"client_id":"test_id","client_secret":"test_secret"}`)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to load provider: %v", err)
|
||||
}
|
||||
//err := LoadProvider("github", `{"client_id":"test_id","client_secret":"test_secret"}`)
|
||||
//if err != nil {
|
||||
// t.Errorf("Failed to load provider: %v", err)
|
||||
//}
|
||||
cfg := CurrentProvider().GetConfiguration()
|
||||
if cfg == nil {
|
||||
t.Error("Expected non-nil configuration for 'github' provider, got nil")
|
||||
|
||||
+43
-24
@@ -7,6 +7,7 @@ import (
|
||||
"sync"
|
||||
|
||||
"github.com/komari-monitor/komari/database"
|
||||
"github.com/komari-monitor/komari/database/config"
|
||||
"github.com/komari-monitor/komari/database/models"
|
||||
"github.com/komari-monitor/komari/utils/oauth/factory"
|
||||
)
|
||||
@@ -26,30 +27,6 @@ func CurrentProvider() factory.IOidcProvider {
|
||||
func LoadProvider(name string, configJson string) error {
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
go func() {
|
||||
once.Do(func() {
|
||||
all := factory.GetAllOidcProviders()
|
||||
for _, provider := range all {
|
||||
if _, err := database.GetOidcConfigByName(provider.GetName()); err == nil {
|
||||
continue
|
||||
}
|
||||
// 如果数据库中没有该提供者的配置,则保存默认配置
|
||||
config := provider.GetConfiguration()
|
||||
configBytes, err := json.Marshal(config)
|
||||
if err != nil {
|
||||
log.Printf("Failed to marshal config for provider %s: %v", provider.GetName(), err)
|
||||
return
|
||||
}
|
||||
if err := database.SaveOidcConfig(&models.OidcProvider{
|
||||
Name: provider.GetName(),
|
||||
Addition: string(configBytes),
|
||||
}); err != nil {
|
||||
log.Printf("Failed to save default config for provider %s: %v", provider.GetName(), err)
|
||||
return
|
||||
}
|
||||
}
|
||||
})
|
||||
}()
|
||||
if currentProvider != nil && currentProvider.GetName() == name {
|
||||
return nil // 已经加载了相同的提供程序
|
||||
}
|
||||
@@ -72,3 +49,45 @@ func LoadProvider(name string, configJson string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Initialize() error {
|
||||
once.Do(func() {
|
||||
all := factory.GetAllOidcProviders()
|
||||
for _, provider := range all {
|
||||
if _, err := database.GetOidcConfigByName(provider.GetName()); err == nil {
|
||||
continue
|
||||
}
|
||||
// 如果数据库中没有该提供者的配置,则保存默认配置
|
||||
config := provider.GetConfiguration()
|
||||
configBytes, err := json.Marshal(config)
|
||||
if err != nil {
|
||||
log.Printf("Failed to marshal config for provider %s: %v", provider.GetName(), err)
|
||||
return
|
||||
}
|
||||
if err := database.SaveOidcConfig(&models.OidcProvider{
|
||||
Name: provider.GetName(),
|
||||
Addition: string(configBytes),
|
||||
}); err != nil {
|
||||
log.Printf("Failed to save default config for provider %s: %v", provider.GetName(), err)
|
||||
return
|
||||
}
|
||||
}
|
||||
})
|
||||
cfg, _ := config.Get()
|
||||
if cfg.OAuthProvider == "" || cfg.OAuthProvider == "none" {
|
||||
LoadProvider("empty", "{}")
|
||||
return nil
|
||||
}
|
||||
provider, err := database.GetOidcConfigByName(cfg.OAuthProvider)
|
||||
if err != nil {
|
||||
// 如果没有找到配置,使用empty provider
|
||||
LoadProvider("empty", "{}")
|
||||
return nil
|
||||
}
|
||||
err = LoadProvider(provider.Name, provider.Addition)
|
||||
if err != nil {
|
||||
log.Printf("Failed to load OIDC provider %s: %v", provider.Name, err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in new issue
Block a user