37 lines
743 B
Go
37 lines
743 B
Go
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()...)
|
|
}
|