feat: upgrade casbin to v3 and bump module path to v5#76
Open
shushenghong wants to merge 1 commit into
Open
Conversation
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 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrade the adapter from casbin/v2 to casbin/v3, and bump the module path from
v4tov5accordingly.Why bump the major version
casbin v3 is a breaking-change major release:
github.com/casbin/casbin/v2/...tov3/.... Sincecasbin/v2/persist.Adapterandcasbin/v3/persist.Adapterare distinct types in distinct packages (Go has no structural interface inheritance across module versions), an adapter built against v2 cannot satisfy v3'spersist.Adapterinterface and vice versa.Enforcermethods (GetPolicy,HasPolicy,GetAllRoles,GetAllSubjects, ...) gained anerrorreturn value, breaking direct callers.By Go module semantic import versioning, downstream users importing the v2-based adapter (
mongodb-adapter/v4) cannot transparently consume a v3-based adapter at the same import path. Therefore this adapter must also bump its major version:v4→v5.Changes
go.mod: module pathmongodb-adapter/v4→v5;casbin/v2 v2.71.1→casbin/v3 v3.10.0; refresh transitive deps (dropKnetic/govaluate, addbmatcuk/doublestar/v4,casbin/govaluate v1.3.0,google/uuid).adapter.go: switchmodel/persistimports fromcasbin/v2tov3. TheAdapter/BatchAdapter/FilteredAdapter/UpdatableAdapterinterface signatures themselves are otherwise unchanged, so the adapter implementation needed no logic changes.adapter_test.go: switchcasbinandutilimports to v3; adapttestGetPolicy/testGetPolicyWithoutOrderhelpers to the newGetPolicy() ([][]string, error)signature.README.md: bump install command and example imports tov5/casbin/v3.Validation
go build ./...andgo vet ./...pass.go test -count=1 -run='^$' ./...(compile-only) passes.TEST_MONGODB_URL/TEST_REPLICA_SET_URL; the existing.github/workflows/ci.ymlshould run them unchanged on the v3 codebase.Downstream context
This unblocks
gorm-adapter/v3users who already run on casbin v3 but have to keep an indirectcasbin/v2dependency only because of this adapter (e.g. https://github.com/gun-go/sgo and similar frameworks dual-supporting SQL + Mongo policy storage end up shipping both v2 and v3 in the same binary today).Test plan
go test -v ./...passes against the bundled MongoDB / replica-set services.v5lives at this same repo path going forward).