Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions docs/CommandLineTools.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
id: command-line-tools
title: Command-line Tools
description: Command-line Tools
keywords: [command-line tools, casbin, cli]
authors: [liulifox233]
---

**Casbin CLIs** are command-line tools that provide a command-line interface for Casbin, enabling you to use all of Casbin APIs in the shell. This documentation covers the usage of Casbin CLI for various languages including Rust, Java, Go, and NodeJs.

## Installation

### Go (casbin-go-cli)

1. Clone project from repository

```bash
git clone https://github.com/casbin/casbin-go-cli.git
```

2. Build project

```bash
cd casbin-go-cli
go build -o casbin
```

### Rust (casbin-rust-cli)

#### From crates.io

```bash
cargo install casbin-rust-cli
```

#### From source

1. Clone project from repository

```bash
git clone https://github.com/casbin-rs/casbin-rust-cli.git
```

2. Build project

```bash
cd casbin-rust-cli
cargo build --release
```

### Java (casbin-java-cli)

1. Clone project from repository

```bash
git clone https://github.com/jcasbin/casbin-java-cli.git
```

2. Build project, the jar package will be generated in the target directory

```bash
cd casbin-java-cli
mvn clean install
```

## Usage

## Options

| options | description | must | remark |
|-----------------------|----------------------------------------------------------------------|------|-----------------------------------------------------------|
| `-m, --model` | The path of the model file or model text | y | Please wrap it with `""` and separate each line with `\|` |
| `-p, --policy` | The path of the policy file or policy text | y | Please wrap it with `""` and separate each line with `\|` |
| `-e, --enforce` | Check permissions | n | Please wrap it with `""` |
| `-ex, --enforceEx` | Check permissions and get which policy it is | n | Please wrap it with `""` |
| `-AF, --addFuntion` | Add custom funtion ( casbin-java-cli only ) | n | Please wrap it with `""` and separate each line with `\|` |
| `-ap, --addPolicy` | Add a policy rule to the policy file ( casbin-java-cli only ) | n | Please wrap it with `""` |
| `-rp, --removePolicy` | Remove a policy rule from the policy file ( casbin-java-cli only ) | n | Please wrap it with `""` |

## Get started

- Check whether Alice has read permission on data1

```shell
./casbin enforce -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data1" "read"
```

> {"allow":true,"explain":null}

```shell
./casbin enforce -m "[request_definition]\nr = sub, obj, act\n[policy_definition]\np = sub, obj, act\n[role_definition]\ng = _, _\n[policy_effect]\ne = some(where (p.eft == allow))\n[matchers]\nm = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act" -p "p, alice, data1, read\np, bob, data2, write\np, data2_admin, data2, read\np, data2_admin, data2, write\ng, alice, data2_admin" "alice" "data1" "read"
```

> {"allow":true,"explain":null}

- Check whether Alice has write permission for data2. If so, display the effective policy.

```shell
./casbin enforceEx -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
```

> {"allow":true,"explain":["data2_admin","data2","write"]}

- Add a policy to the policy file ( casbin-java-cli only )

```shell
./casbin addPolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
```

> {"allow":true,"explain":null}

- Delete a policy from the policy file ( casbin-java-cli only )

```shell
./casbin removePolicy -m "examples/rbac_model.conf" -p "examples/rbac_policy.csv" "alice" "data2" "write"
```

> {"allow":true,"explain":null}
1 change: 1 addition & 0 deletions sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ module.exports = {
items: [
"admin-portal",
"service",
"command-line-tools",
"log-error",
"frontend",
],
Expand Down