mongodbadapter

package module
v1.0.1-0...-ad90aa9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2020 License: Apache-2.0 Imports: 13 Imported by: 0

README

Casbin MongoDB Adapter

Originally forked from casbin/mongodb-adapter.

MongoDB Adapter is the Mongo DB adapter for Casbin. This library offers implementations for:

  • Adapter
  • FilteredAdatper
  • UpdatableAdatper

Installation

go get github.com/SouthbankSoftware/casbin-mongodb-adapter

Simple Example

package main

import (
	"github.com/casbin/casbin/v2"
	mongodbadapter "github.com/SouthbankSoftware/casbin-mongodb-adapter"
)

func main() {
	// Initialize a MongoDB adapter and use it in a Casbin enforcer:
	// The adapter will use the database named "casbin".
	// If it doesn't exist, the adapter will create it automatically.
	a,err := mongodbadapter.NewAdapter("127.0.0.1:27017") // Your MongoDB URL. 
	if err != nil {
		panic(err)
	}
	// Or you can use an existing DB "abc" like this:
	// The adapter will use the table named "casbin_rule".
	// If it doesn't exist, the adapter will create it automatically.
	// a := mongodbadapter.NewAdapter("127.0.0.1:27017/abc")

	e, err := casbin.NewEnforcer("examples/rbac_model.conf", a)
	if err != nil {
		panic(err)
	}

	// Load the policy from DB.
	e.LoadPolicy()
	
	// Check the permission.
	e.Enforce("alice", "data1", "read")
	
	// Modify the policy.
	// e.AddPolicy(...)
	// e.RemovePolicy(...)
	
	// Save the policy back to DB.
	e.SavePolicy()
}

Filtered Policies

import "github.com/globalsign/mgo/bson"

// This adapter also implements the FilteredAdapter interface. This allows for
// efficent, scalable enforcement of very large policies:
filter := &bson.M{"v0": "alice"}
e.LoadFilteredPolicy(filter)

// The loaded policy is now a subset of the policy in storage, containing only
// the policy lines that match the provided filter. This filter should be a
// valid MongoDB selector using BSON. A filtered policy cannot be saved.

Getting Help

License

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAdapter

func NewAdapter(url string, timeout ...interface{}) (persist.Adapter, error)

NewAdapter is the constructor for Adapter. If database name is not provided in the Mongo URL, 'casbin' will be used as database name.

func NewAdapterWithClientOption

func NewAdapterWithClientOption(clientOption *options.ClientOptions, databaseName string, timeout ...interface{}) (persist.Adapter, error)

NewAdapterWithClientOption is an alternative constructor for Adapter that does the same as NewAdapter, but uses mongo.ClientOption instead of a Mongo URL

func NewFilteredAdapter

func NewFilteredAdapter(url string) (persist.FilteredAdapter, error)

NewFilteredAdapter is the constructor for FilteredAdapter. Casbin will not automatically call LoadPolicy() for a filtered adapter.

func NewUpdatableAdapter

func NewUpdatableAdapter(url string, timeout ...interface{}) (persist.UpdatableAdapter, error)

NewUpdatableAdapter is the constructor for an UpdatableAdapter. It is the standard Adapter, with ability to update a single policy. If database name is not provided in the Mongo URL, 'casbin' will be used as database name.

func NewUpdatableAdapterWithClientOption

func NewUpdatableAdapterWithClientOption(clientOption *options.ClientOptions, databaseName string, timeout ...interface{}) (persist.UpdatableAdapter, error)

NewUpdatableAdapterWithClientOption is an alternative constructor for UpdatableAdapter that does the same as NewUpdatableAdapter, but uses mongo.ClientOption instead of a Mongo URL

Types

type CasbinRule

type CasbinRule struct {
	ID    interface{} `bson:"_id,omitempty"`
	PType string      `bson:"ptype"`
	V0    string      `bson:"v0"`
	V1    string      `bson:"v1"`
	V2    string      `bson:"v2"`
	V3    string      `bson:"v3"`
	V4    string      `bson:"v4"`
	V5    string      `bson:"v5"`
}

CasbinRule represents a rule in Casbin.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL