From 054a9d584df30975d73797a4e3ee28a368a84fce Mon Sep 17 00:00:00 2001 From: Ather Shu Date: Fri, 1 May 2026 23:04:59 +0800 Subject: [PATCH] feat: upgrade casbin to v3 and bump module path to v5 Casbin v3 is a breaking-change major release: imports move from github.com/casbin/casbin/v2/... to v3/..., and several Enforcer methods (GetPolicy, HasPolicy, GetAllRoles, ...) gain an error return value. Per Go module semantic import versioning, downstream users importing the v2-based adapter cannot transparently consume the v3-based one, so this adapter must also bump its major. Changes: - go.mod: module path v4 -> v5; casbin/v2 v2.71.1 -> casbin/v3 v3.10.0; refresh transitive deps (drop Knetic/govaluate, add bmatcuk/doublestar/v4, casbin/govaluate v1.3.0, google/uuid). - adapter.go: switch model/persist imports from casbin/v2 to v3 (Adapter / BatchAdapter / FilteredAdapter / UpdatableAdapter interface signatures are otherwise unchanged). - adapter_test.go: switch casbin & util imports to v3; adapt testGetPolicy / testGetPolicyWithoutOrder helpers to the new GetPolicy() ([][]string, error) signature. - README.md: bump install command and example imports to v5 / v3. Co-Authored-By: Claude Opus 4.7 --- README.md | 10 +++++----- adapter.go | 4 ++-- adapter_test.go | 14 ++++++++++---- go.mod | 8 +++++--- go.sum | 16 ++++++++-------- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index e4f8e17..fd680db 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ MongoDB Adapter is the [Mongo DB](https://www.mongodb.com) adapter for [Casbin]( ## Installation - go get -u github.com/casbin/mongodb-adapter/v4 + go get -u github.com/casbin/mongodb-adapter/v5 ## Simple Example @@ -13,8 +13,8 @@ MongoDB Adapter is the [Mongo DB](https://www.mongodb.com) adapter for [Casbin]( package main import ( - "github.com/casbin/casbin/v2" - "github.com/casbin/mongodb-adapter/v4" + "github.com/casbin/casbin/v3" + "github.com/casbin/mongodb-adapter/v5" ) func main() { @@ -55,8 +55,8 @@ func main() { package main import ( - "github.com/casbin/casbin/v2" - "github.com/casbin/mongodb-adapter/v4" + "github.com/casbin/casbin/v3" + "github.com/casbin/mongodb-adapter/v5" mongooptions "go.mongodb.org/mongo-driver/mongo/options" ) diff --git a/adapter.go b/adapter.go index 37982a1..fa35857 100644 --- a/adapter.go +++ b/adapter.go @@ -23,8 +23,8 @@ import ( "strings" "time" - "github.com/casbin/casbin/v2/model" - "github.com/casbin/casbin/v2/persist" + "github.com/casbin/casbin/v3/model" + "github.com/casbin/casbin/v3/persist" "go.mongodb.org/mongo-driver/v2/bson" "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" diff --git a/adapter_test.go b/adapter_test.go index 0e6c046..0c0390a 100644 --- a/adapter_test.go +++ b/adapter_test.go @@ -23,8 +23,8 @@ import ( "go.mongodb.org/mongo-driver/v2/mongo" - "github.com/casbin/casbin/v2" - "github.com/casbin/casbin/v2/util" + "github.com/casbin/casbin/v3" + "github.com/casbin/casbin/v3/util" "go.mongodb.org/mongo-driver/v2/bson" mongooptions "go.mongodb.org/mongo-driver/v2/mongo/options" ) @@ -48,7 +48,10 @@ func getReplicaSetURL() string { func testGetPolicy(t *testing.T, e *casbin.Enforcer, res [][]string) { t.Helper() - myRes := e.GetPolicy() + myRes, err := e.GetPolicy() + if err != nil { + t.Fatalf("GetPolicy() failed: %v", err) + } t.Log("Policy: ", myRes) if !util.Array2DEquals(res, myRes) { @@ -57,7 +60,10 @@ func testGetPolicy(t *testing.T, e *casbin.Enforcer, res [][]string) { } func testGetPolicyWithoutOrder(t *testing.T, e *casbin.Enforcer, res [][]string) { - myRes := e.GetPolicy() + myRes, err := e.GetPolicy() + if err != nil { + t.Fatalf("GetPolicy() failed: %v", err) + } if !arrayEqualsWithoutOrder(myRes, res) { t.Error("Policy: ", myRes, ", supposed to be ", res) diff --git a/go.mod b/go.mod index cac5e14..fd7277d 100644 --- a/go.mod +++ b/go.mod @@ -1,15 +1,17 @@ -module github.com/casbin/mongodb-adapter/v4 +module github.com/casbin/mongodb-adapter/v5 go 1.20 require ( - github.com/casbin/casbin/v2 v2.71.1 + github.com/casbin/casbin/v3 v3.10.0 go.mongodb.org/mongo-driver/v2 v2.2.1 ) require ( - github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible // indirect + github.com/bmatcuk/doublestar/v4 v4.6.1 // indirect + github.com/casbin/govaluate v1.3.0 // indirect github.com/golang/snappy v1.0.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/klauspost/compress v1.16.7 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect github.com/xdg-go/scram v1.1.2 // indirect diff --git a/go.sum b/go.sum index 64ff53b..5b8c25e 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,15 @@ -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/casbin/casbin/v2 v2.71.1 h1:LRHyqM0S1LzM/K59PmfUIN0ZJfLgcOjL4OhOQI/FNXU= -github.com/casbin/casbin/v2 v2.71.1/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/casbin/casbin/v3 v3.10.0 h1:039ORla55vCeIZWd0LfzWFt1yiEA5X4W41xBW2bQuHs= +github.com/casbin/casbin/v3 v3.10.0/go.mod h1:5rJbQr2e6AuuDDNxnPc5lQlC9nIgg6nS1zYwKXhpHC8= +github.com/casbin/govaluate v1.3.0 h1:VA0eSY0M2lA86dYd5kPPuNZMUD9QkWnOCnavGrw9myc= +github.com/casbin/govaluate v1.3.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= @@ -26,7 +28,6 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -48,7 +49,6 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=