use casdoor

This commit is contained in:
yanghao05
2023-06-09 10:28:34 +08:00
parent d28d9649ed
commit 117d80df57
7 changed files with 111 additions and 2 deletions

View File

@@ -0,0 +1,36 @@
package casdoor
import (
"log"
"github.com/casdoor/casdoor-go-sdk/casdoorsdk"
"github.com/rogeecn/atom/container"
"github.com/rogeecn/atom/providers/cert"
"github.com/rogeecn/atom/utils/opt"
)
type Casdoor struct {
}
func Provide(opts ...opt.Option) error {
o := opt.New(opts...)
var config Config
if err := o.UnmarshalConfig(&config); err != nil {
log.Fatal(err)
}
return container.Container.Provide(func(cert *cert.Cert) *Casdoor {
certificate := config.Certificate
if cert == "" {
certificate = cert.Cert
}
casdoorsdk.InitConfig(
config.Endpoint,
config.ClientId,
config.ClientSecret,
certificate,
config.OrganizationName,
config.ApplicationName,
)
return &Casdoor{}
}, o.DiOptions()...)
}

View File

@@ -0,0 +1,26 @@
package casdoor
import (
"github.com/rogeecn/atom/container"
"github.com/rogeecn/atom/utils/opt"
)
const DefaultPrefix = "Casdoor"
func DefaultProvider() container.ProviderContainer {
return container.ProviderContainer{
Provider: Provide,
Options: []opt.Option{
opt.Prefix(DefaultPrefix),
},
}
}
type Config struct {
Endpoint string
ClientId string
ClientSecret string
OrganizationName string
ApplicationName string
Certificate string
}

20
providers/cert/cert.go Normal file
View File

@@ -0,0 +1,20 @@
package cert
import (
"log"
"github.com/rogeecn/atom/container"
"github.com/rogeecn/atom/utils/opt"
)
func Provide(opts ...opt.Option) error {
o := opt.New(opts...)
var config Cert
if err := o.UnmarshalConfig(&config); err != nil {
log.Fatal(err)
}
return container.Container.Provide(func() (*Cert, error) {
return &config, nil
}, o.DiOptions()...)
}

23
providers/cert/config.go Normal file
View File

@@ -0,0 +1,23 @@
package cert
import (
"github.com/rogeecn/atom/container"
"github.com/rogeecn/atom/utils/opt"
)
const DefaultPrefix = "Cert"
func DefaultProvider() container.ProviderContainer {
return container.ProviderContainer{
Provider: Provide,
Options: []opt.Option{
opt.Prefix(DefaultPrefix),
},
}
}
type Cert struct {
CA string
Cert string
Key string
}

View File

@@ -4,7 +4,6 @@ import (
"time"
"github.com/rogeecn/atom/container"
"github.com/rogeecn/atom/providers/http"
"github.com/rogeecn/atom/providers/log"
"github.com/rogeecn/atom/utils/opt"
)
@@ -15,7 +14,7 @@ func DefaultProvider() container.ProviderContainer {
return container.ProviderContainer{
Provider: Provide,
Options: []opt.Option{
opt.Prefix(http.DefaultPrefix),
opt.Prefix(DefaultPrefix),
},
}
}