blank-xu / sqlx-adapter Goto Github PK
View Code? Open in Web Editor NEWSqlx Adapter for Casbin V2
Home Page: https://github.com/Blank-Xu/sqlx-adapter
License: Apache License 2.0
Sqlx Adapter for Casbin V2
Home Page: https://github.com/Blank-Xu/sqlx-adapter
License: Apache License 2.0
Some tests fail when running against the latest Casbin version, e.g.,
adapter_test.go:369: Policy:
[] , supposed to be
[[bob data1 write test1 test2 test3]]
It seems that Casbin logic around Tokens in the model changed.
The returned oldPolicies
from UpdateFilteredPolicies
may contain empty strings for some V columns. It seems, the latest Casbin doesn't like that:
func (model Model) RemovePoliciesWithAffected(sec string, ptype string, rules [][]string) [][]string {
var affected [][]string
for _, rule := range rules {
index, ok := model[sec][ptype].PolicyMap[strings.Join(rule, DefaultSep)]
if !ok {
continue
}
The index, ok := model[sec][ptype].PolicyMap[strings.Join(rule, DefaultSep)]
is the problem.
The following workaround works for me:
func (p *Adapter) UpdateFilteredPolicies(sec, ptype string, newPolicies [][]string, fieldIndex int, fieldValues ...string) (oldPolicies [][]string, err error) {
// omitted some lines
oldPolicies = make([][]string, 0, len(oldRows))
for _, rule := range oldRows {
var oldPolicy []string
sliceRule := append([]string{}, rule.PType, rule.V0, rule.V1, rule.V2, rule.V3, rule.V4, rule.V5)
for _, v := range sliceRule {
if v == "" {
continue
}
oldPolicy = append(oldPolicy, v)
}
oldPolicies = append(oldPolicies, oldPolicy)
}
// omitted some lines
}
Hi, there's already a sqlx adapter around: https://github.com/memwey/casbin-sqlx-adapter
Any reason to create a new one?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.