Skip to content

casbin/casbin-go-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go client for Casbin Server

Go Report Card GitHub Actions Go Reference Release Discord Sourcegraph

casbin-go-client is Golang's client for Casbin-Server. Casbin-Server is the Access Control as a Service (ACaaS) solution based on Casbin.

Installation

go mod init your-project
go mod tidy

Quick Start

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
}

License

This project is under Apache 2.0 License. See the LICENSE file for the full license text.

Sponsor this project

 

Packages

No packages published

Contributors 12

Languages