From 117d80df578f372f6f3813b8a5517c37e880e8d5 Mon Sep 17 00:00:00 2001 From: yanghao05 Date: Fri, 9 Jun 2023 10:28:34 +0800 Subject: [PATCH] use casdoor --- go.mod | 1 + go.sum | 4 ++++ providers/casdoor/casdoor.go | 36 ++++++++++++++++++++++++++++++++++++ providers/casdoor/config.go | 26 ++++++++++++++++++++++++++ providers/cert/cert.go | 20 ++++++++++++++++++++ providers/cert/config.go | 23 +++++++++++++++++++++++ providers/jwt/config.go | 3 +-- 7 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 providers/casdoor/casdoor.go create mode 100644 providers/casdoor/config.go create mode 100644 providers/cert/cert.go create mode 100644 providers/cert/config.go diff --git a/go.mod b/go.mod index 43d1e8b..5444263 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.19 require ( github.com/brianvoe/gofakeit/v6 v6.20.1 + github.com/casdoor/casdoor-go-sdk v0.21.0 github.com/gin-gonic/gin v1.8.2 github.com/glebarez/sqlite v1.5.0 github.com/go-gormigrate/gormigrate/v2 v2.0.2 diff --git a/go.sum b/go.sum index 7c4c0ea..6d86f28 100644 --- a/go.sum +++ b/go.sum @@ -72,6 +72,8 @@ github.com/brianvoe/gofakeit/v6 v6.20.1 h1:8ihJ60OvPnPJ2W6wZR7M+TTeaZ9bml0z6oy4g github.com/brianvoe/gofakeit/v6 v6.20.1/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao= github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= +github.com/casdoor/casdoor-go-sdk v0.21.0 h1:VIolLhU8/eiuzJ0InpRqWkXzcYmC4sv2ZtL3M8PMbtU= +github.com/casdoor/casdoor-go-sdk v0.21.0/go.mod h1:MBed3ISHQfXTtoOCAk5T8l5lt4wFvsyynrw0awggydY= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -172,6 +174,7 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.4.3 h1:Hxl6lhQFj4AnOX6MLrsCb/+7tCj7DxP7VA+2rDIq5AU= @@ -662,6 +665,7 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/providers/casdoor/casdoor.go b/providers/casdoor/casdoor.go new file mode 100644 index 0000000..4b18d69 --- /dev/null +++ b/providers/casdoor/casdoor.go @@ -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()...) +} diff --git a/providers/casdoor/config.go b/providers/casdoor/config.go new file mode 100644 index 0000000..baccbce --- /dev/null +++ b/providers/casdoor/config.go @@ -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 +} diff --git a/providers/cert/cert.go b/providers/cert/cert.go new file mode 100644 index 0000000..0f7b93a --- /dev/null +++ b/providers/cert/cert.go @@ -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()...) +} diff --git a/providers/cert/config.go b/providers/cert/config.go new file mode 100644 index 0000000..6242c01 --- /dev/null +++ b/providers/cert/config.go @@ -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 +} diff --git a/providers/jwt/config.go b/providers/jwt/config.go index a552047..8845740 100644 --- a/providers/jwt/config.go +++ b/providers/jwt/config.go @@ -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), }, } }