1
1
jcasbin-mongodb-adapter
2
2
===
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 )
4
9
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.
6
11
7
- ### maven
8
- add ` jitpack ` repository
9
- ``` xml
12
+ ## Installation
10
13
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:
20
15
16
+ ``` xml
21
17
<dependency >
22
- <groupId >com.github.zzl221000 </groupId >
18
+ <groupId >org.casbin </groupId >
23
19
<artifactId >jcasbin-mongo-adapter</artifactId >
24
- <version >v1.0 </version >
20
+ <version >LATEST </version >
25
21
</dependency >
26
22
```
27
23
@@ -34,42 +30,56 @@ optional: If your project already has a mongodb driver, please ignore it.
34
30
</dependency >
35
31
```
36
32
33
+ ## Simple Example
34
+
37
35
``` 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 ;
38
42
import org.casbin.jcasbin.persist.Adapter ;
39
43
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 ;
44
44
45
- public class Demo {
45
+ import java.util.ArrayList ;
46
+
47
+ public class Test {
46
48
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" );
64
57
}
65
- Enforcerenforcer = new SyncedEnforcer (model, adapter);
66
- // set auto save policy
67
- enforcer. enableAutoSave(true );
68
- }
69
58
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
+ }
70
75
}
76
+
71
77
```
72
78
79
+ ## Getting Help
80
+
81
+ - [ jCasbin] ( https://github.com/casbin/jcasbin )
82
+
73
83
## License
74
84
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