From 3a5c8d54ede21ac4b0628917acadd5739eb64448 Mon Sep 17 00:00:00 2001
From: sukidayou <2682523907@qq.com>
Date: Sat, 28 Dec 2024 11:32:41 +0800
Subject: [PATCH] docs: improve the README like other adapter repos
---
README.md | 96 ++++++++++++++++++++++++++++++-------------------------
1 file changed, 53 insertions(+), 43 deletions(-)
diff --git a/README.md b/README.md
index e0d42cb..dbd2417 100644
--- a/README.md
+++ b/README.md
@@ -1,27 +1,23 @@
jcasbin-mongodb-adapter
===
-MongoDB policy storage, implemented as an adapter for [jcasbin](https://github.com/casbin/jcasbin).
+[![codebeat badge](https://codebeat.co/badges/df265133-60a0-4ee7-b57d-25fd27273905)](https://codebeat.co/projects/github-com-jcasbin-mongo-adapter-master)
+[![build](https://github.com/jcasbin/jdbc-mongo-adapter/actions/workflows/maven-ci.yml/badge.svg)](https://github.com/jcasbin/jdbc-mongo-adapter/actions/workflows/maven-ci.yml)
+[![codecov](https://codecov.io/gh/casbin/jcasbin-mongo-adapter/branch/master/graph/badge.svg)](https://codecov.io/gh/casbin/jcasbin-mongo-adapter)
+[![javadoc](https://javadoc.io/badge2/org.casbin/jcasbin-mongo-adapter/javadoc.svg)](https://javadoc.io/doc/org.casbin/jcasbin-mongo-adapter)
+[![Maven Central](https://img.shields.io/maven-central/v/com.github.zzl221000/jcasbin-mongo-adapter.svg)](https://mvnrepository.com/artifact/com.github.zzl221000/jcasbin-mongo-adapter/latest)
+[![Discord](https://img.shields.io/discord/1022748306096537660?logo=discord&label=discord&color=5865F2)](https://discord.gg/S5UjpzGZjN)
-## Getting Started
+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.
-### maven
-add `jitpack` repository
-```xml
+## Installation
-
-
- jitpack.io
- https://jitpack.io
-
-
-```
-add `jcasbin-mongo-adapter` dependency
-```xml
+For Maven:
+```xml
- com.github.zzl221000
+ org.casbin
jcasbin-mongo-adapter
- v1.0
+ LATEST
```
@@ -34,42 +30,56 @@ optional: If your project already has a mongodb driver, please ignore it.
```
+## Simple Example
+
```java
+package org.casbin.adapter;
+
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.MongoDatabase;
+import org.casbin.jcasbin.main.Enforcer;
import org.casbin.jcasbin.persist.Adapter;
import org.jim.jcasbin.MongoAdapter;
-import org.casbin.jcasbin.main.Enforcer;
-import org.casbin.jcasbin.main.SyncedEnforcer;
-import org.casbin.jcasbin.model.Model;
-import com.ruiling.system.config.errors.CasbinModelConfigNotFoundException;
-public class Demo {
+import java.util.ArrayList;
+
+public class Test {
public static void main(String[] args) {
- Adapter adapter = new MongoAdapter(mongoClient, "casbin");
- Model model = new Model();
- try {
- String modelContext = properties.getModelContext();
- model.loadModelFromText(modelContext);
- } catch (CasbinModelConfigNotFoundException e) {
- // use default model configuration
- // request definition
- model.addDef("r", "r", "sub, obj, act");
- // policy definition
- model.addDef("p", "p", "sub, obj, act");
- // role definition
- model.addDef("g", "g", "_, _");
- // policy effect
- model.addDef("e", "e", "some(where (p.eft == allow))");
- // matchers
- model.addDef("m", "m", "g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act");
+ // Use MongoDB connection string and database name to initialize a MongoAdapter.
+ String connectionString = "mongodb://localhost:27017/";
+ MongoClient mongoClient = MongoClients.create(connectionString);
+ MongoDatabase database = mongoClient.getDatabase("casbin");
+
+ // Check and create a collection
+ if (!database.listCollectionNames().into(new ArrayList<>()).contains("casbin_rule")) {
+ database.createCollection("casbin_rule");
}
- Enforcerenforcer = new SyncedEnforcer(model, adapter);
- // set auto save policy
- enforcer.enableAutoSave(true);
- }
+ Adapter adapter = new MongoAdapter(mongoClient, "casbin");
+ Enforcer enforcer = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv");
+
+ // Check the permission.
+ enforcer.enforce("alice", "data1", "read");
+
+ // Modify the policy.
+ // enforcer.addPolicy(...);
+ // enforcer.removePolicy(...);
+
+ // Save the policy back to DB.
+ adapter.savePolicy(enforcer.getModel());
+
+ // Close the MongoDB client.
+ mongoClient.close();
+ }
}
+
```
+## Getting Help
+
+- [jCasbin](https://github.com/casbin/jcasbin)
+
## License
-[Apache-2.0](./LICENSE)
\ No newline at end of file
+This project is under Apache 2.0 License. See the [LICENSE](LICENSE) file for the full license text.
\ No newline at end of file