Skip to content

jcasbin/string-adapter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

string-adapter

codebeat badge build codecov javadoc Maven Central Discord

String Adapter is the string adapter for jCasbin, which provides interfaces for loading policies from a string and saving policies to it.

Installation

<dependency>
    <groupId>org.casbin</groupId>
    <artifactId>string-adapter</artifactId>
    <version>1.0.0</version>
</dependency>

Example

import org.casbin.jcasbin.main.Enforcer;
import org.casbin.jcasbin.model.Model;

public class Example {
    public static void main(String[] args) {

        // Define the Casbin model
        String modelText = "[request_definition]\n" +
                "r = sub, obj, act\n\n" +
                "[policy_definition]\n" +
                "p = sub, obj, act\n\n" +
                "[role_definition]\n" +
                "g = _, _\n" +
                "g2 = _, _\n\n" +
                "[policy_effect]\n" +
                "e = some(where (p.eft == allow))\n\n" +
                "[matchers]\n" +
                "m = g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act";

        // Load model
        Model m = new Model();
        m.loadModelFromText(modelText);

        // Define policy
        String line = "p, alice, data1, read\n" +
                "p, bob, data2, write\n" +
                "p, data_group_admin, data_group, write\n\n" +
                "g, alice, data_group_admin\n" +
                "g2, data1, data_group\n" +
                "g2, data2, data_group";

        // Create a StringAdapter
        StringAdapter sa = new StringAdapter(line);

        // Create Enforcer, and load model and policy
        Enforcer e = new Enforcer(m, sa);
        
        e.loadPolicy();
        // check permissions
        if (e.enforce("alice", "data1", "read")) {
            System.out.println("permitted");
        } else {
            System.out.println("rejected");
        }

        e.savePolicy();
    }
}

Getting Help

License

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