casbin-go-client is Golang's client for Casbin-Server. Casbin-Server is the Access Control as a Service (ACaaS) solution based on Casbin.
go mod init your-project go mod tidy
First, start the casbin-server:
# Install casbin-server go install github.com/casbin/casbin-server@latest # Start the server casbin-server
Then use the client:
package main import ( "context" "fmt" "log" "github.com/casbin/casbin-go-client/client" "google.golang.org/grpc" ) func main() { // Create client with insecure connection c, err := client.NewClient(context.Background(), "127.0.0.1:50051", grpc.WithInsecure()) if err != nil { log.Fatal(err) } // Define RBAC model modelText := ` [request_definition] r = sub, obj, act [policy_definition] p = sub, obj, act [role_definition] g = _, _ [policy_effect] e = some(where (p.eft == allow)) [matchers] m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act ` // Create enforcer enforcer, err := c.NewEnforcer(context.Background(), client.Config{ ModelText: modelText, }) if err != nil { log.Fatal(err) } // Add policy enforcer.AddPolicy(context.Background(), "alice", "data1", "read") // Check permission allowed, err := enforcer.Enforce(context.Background(), "alice", "data1", "read") if err != nil { log.Fatal(err) } fmt.Printf("alice can read data1: %v\n", allowed) // true }
This project is under Apache 2.0 License. See the LICENSE file for the full license text.