Skip to content

Commit 9d7fc5a

Browse files
authored
feat: improve the README (#9)
1 parent 2ddda6b commit 9d7fc5a

File tree

1 file changed

+53
-43
lines changed

1 file changed

+53
-43
lines changed

README.md

Lines changed: 53 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
11
jcasbin-mongodb-adapter
22
===
3-
MongoDB policy storage, implemented as an adapter for [jcasbin](https://github.com/casbin/jcasbin).
3+
[![codebeat badge](https://codebeat.co/badges/df265133-60a0-4ee7-b57d-25fd27273905)](https://codebeat.co/projects/github-com-jcasbin-mongo-adapter-master)
4+
[![build](https://github.com/jcasbin/jcasbin-mongo-adapter/actions/workflows/maven-ci.yml/badge.svg)](https://github.com/jcasbin/jcasbin-mongo-adapter/actions/workflows/maven-ci.yml)
5+
[![codecov](https://codecov.io/gh/casbin/jcasbin-mongo-adapter/branch/master/graph/badge.svg)](https://codecov.io/gh/casbin/jcasbin-mongo-adapter)
6+
[![javadoc](https://javadoc.io/badge2/org.casbin/jcasbin-mongo-adapter/javadoc.svg)](https://javadoc.io/doc/org.casbin/jcasbin-mongo-adapter)
7+
[![Maven Central](https://img.shields.io/maven-central/v/org.casbin/jcasbin-mongo-adapter.svg)](https://mvnrepository.com/artifact/org.casbin/jcasbin-mongo-adapter/latest)
8+
[![Discord](https://img.shields.io/discord/1022748306096537660?logo=discord&label=discord&color=5865F2)](https://discord.gg/S5UjpzGZjN)
49

5-
## Getting Started
10+
jcasbin-mongodb-adapter is the [MongoDB](https://github.com/mongodb/mongo) adapter for [jCasbin](https://github.com/casbin/jcasbin). With this library, jCasbin can load policy from a MongoDB database or save policy to it.
611

7-
### maven
8-
add `jitpack` repository
9-
```xml
12+
## Installation
1013

11-
<repositories>
12-
<repository>
13-
<id>jitpack.io</id>
14-
<url>https://jitpack.io</url>
15-
</repository>
16-
</repositories>
17-
```
18-
add `jcasbin-mongo-adapter` dependency
19-
```xml
14+
For Maven:
2015

16+
```xml
2117
<dependency>
22-
<groupId>com.github.zzl221000</groupId>
18+
<groupId>org.casbin</groupId>
2319
<artifactId>jcasbin-mongo-adapter</artifactId>
24-
<version>v1.0</version>
20+
<version>LATEST</version>
2521
</dependency>
2622
```
2723

@@ -34,42 +30,56 @@ optional: If your project already has a mongodb driver, please ignore it.
3430
</dependency>
3531
```
3632

33+
## Simple Example
34+
3735
```java
36+
package org.casbin.adapter;
37+
38+
import com.mongodb.client.MongoClient;
39+
import com.mongodb.client.MongoClients;
40+
import com.mongodb.client.MongoDatabase;
41+
import org.casbin.jcasbin.main.Enforcer;
3842
import org.casbin.jcasbin.persist.Adapter;
3943
import org.jim.jcasbin.MongoAdapter;
40-
import org.casbin.jcasbin.main.Enforcer;
41-
import org.casbin.jcasbin.main.SyncedEnforcer;
42-
import org.casbin.jcasbin.model.Model;
43-
import com.ruiling.system.config.errors.CasbinModelConfigNotFoundException;
4444

45-
public class Demo {
45+
import java.util.ArrayList;
46+
47+
public class Test {
4648
public static void main(String[] args) {
47-
Adapter adapter = new MongoAdapter(mongoClient, "casbin");
48-
Model model = new Model();
49-
try {
50-
String modelContext = properties.getModelContext();
51-
model.loadModelFromText(modelContext);
52-
} catch (CasbinModelConfigNotFoundException e) {
53-
// use default model configuration
54-
// request definition
55-
model.addDef("r", "r", "sub, obj, act");
56-
// policy definition
57-
model.addDef("p", "p", "sub, obj, act");
58-
// role definition
59-
model.addDef("g", "g", "_, _");
60-
// policy effect
61-
model.addDef("e", "e", "some(where (p.eft == allow))");
62-
// matchers
63-
model.addDef("m", "m", "g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act");
49+
// Use MongoDB connection string and database name to initialize a MongoAdapter.
50+
String connectionString = "mongodb://localhost:27017/";
51+
MongoClient mongoClient = MongoClients.create(connectionString);
52+
MongoDatabase database = mongoClient.getDatabase("casbin");
53+
54+
// Check and create a collection
55+
if (!database.listCollectionNames().into(new ArrayList<>()).contains("casbin_rule")) {
56+
database.createCollection("casbin_rule");
6457
}
65-
Enforcerenforcer = new SyncedEnforcer(model, adapter);
66-
// set auto save policy
67-
enforcer.enableAutoSave(true);
68-
}
6958

59+
Adapter adapter = new MongoAdapter(mongoClient, "casbin");
60+
Enforcer enforcer = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv");
61+
62+
// Check the permission.
63+
enforcer.enforce("alice", "data1", "read");
64+
65+
// Modify the policy.
66+
// enforcer.addPolicy(...);
67+
// enforcer.removePolicy(...);
68+
69+
// Save the policy back to DB.
70+
adapter.savePolicy(enforcer.getModel());
71+
72+
// Close the MongoDB client.
73+
mongoClient.close();
74+
}
7075
}
76+
7177
```
7278

79+
## Getting Help
80+
81+
- [jCasbin](https://github.com/casbin/jcasbin)
82+
7383
## License
7484

75-
[Apache-2.0](./LICENSE)
85+
This project is under Apache 2.0 License. See the [LICENSE](LICENSE) file for the full license text.

0 commit comments

Comments
 (0)