acmogo

package module
v0.0.0-...-beae4c2 Latest Latest
Warning

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

Go to latest
Published: May 12, 2018 License: Unlicense Imports: 5 Imported by: 0

README

acmogo GoDoc

Some Access Control Helpers for applications using Go and MongoDB

See test files for how to use.

Download:

go get github.com/crhntr/acmogo

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ACPath       = "_ac"
	PublicPath   = ACPath + ".pu"
	ReadersPath  = ACPath + ".r"
	UpdatersPath = ACPath + ".u"
	DeletersPath = ACPath + ".d"
	CreatorPath  = ACPath + ".cr"
)
View Source
var SelectEntityDoc = map[string]int{"_id": 1, ACPath: 1}

Functions

func DeletePermitted

func DeletePermitted(db *mgo.Database, entity Referencer, refs ...Referencer) bool

func InsertList

func InsertList(db *mgo.Database, entityList ...Referencer) (int, error)

func PersistClearAccessControl

func PersistClearAccessControl(db *mgo.Database, entity Referencer, entities ...Referencer) error

func PersistPermitDelete

func PersistPermitDelete(db *mgo.Database, entity Referencer, entities ...Referencer) error

func PersistPermitRead

func PersistPermitRead(db *mgo.Database, entity Referencer, entities ...Referencer) error

func PersistPermitUpdate

func PersistPermitUpdate(db *mgo.Database, entity Referencer, entities ...Referencer) error

func PersistPrivate

func PersistPrivate(db *mgo.Database, entity Referencer) error

func PersistPublic

func PersistPublic(db *mgo.Database, entity Referencer) error

func ReadPermitted

func ReadPermitted(db *mgo.Database, entity Referencer, refs ...Referencer) bool

func RefreshEntity

func RefreshEntity(db *mgo.Database, entity Referencer) error

func UpdateEntity

func UpdateEntity(db *mgo.Database, entity Referencer, updateDoc Map) error

func UpdatePermitted

func UpdatePermitted(db *mgo.Database, entity Referencer, refs ...Referencer) bool

Types

type AC

type AC struct {
	Readers  []Reference `json:"r,omitempty" bson:"r,omitempty"`
	Updaters []Reference `json:"u,omitempty" bson:"u,omitempty"`
	Deleters []Reference `json:"d,omitempty" bson:"d,omitempty"`
	Creator  *Reference  `json:"cr,omitempty" bson:"cr,omitempty"`
	Public   bool        `json:"pu" bson:"pu"`
}

AC should be Embeded in structs to be stored in MongoDB It should be anotated with the `bson:"ac"` or whatever ACPath is set to. When a new object is created, the creator's identity should be passed to SetCreator bson tag "inline" should not be set

func (*AC) ClearAccessControl

func (ac *AC) ClearAccessControl(refs ...Referencer)

func (AC) DeletePermitted

func (ac AC) DeletePermitted(refs ...Referencer) bool

func (*AC) PermitDelete

func (ac *AC) PermitDelete(refs ...Referencer)

func (*AC) PermitRead

func (ac *AC) PermitRead(refs ...Referencer)

func (*AC) PermitUpdate

func (ac *AC) PermitUpdate(refs ...Referencer)

func (AC) ReadPermitted

func (ac AC) ReadPermitted(refs ...Referencer) bool

func (*AC) SetCreator

func (ac *AC) SetCreator(id Reference) error

func (AC) UpdatePermitted

func (ac AC) UpdatePermitted(refs ...Referencer) bool

type Entity

type Entity struct {
	ID        bson.ObjectId `json:"_id" bson:"_id"`
	AC        `json:"_ac" bson:"_ac"`
	CreatedAt time.Time `json:"_createdAt" bson:"_createdAt"`
}

func New

func New() Entity

type Map

type Map = bson.M

type Reference

type Reference struct {
	Col string        `json:"c" bson:"c"`
	ID  bson.ObjectId `json:"id" bson:"id"`
}

func DedupReferenceList

func DedupReferenceList(refs []Reference) []Reference

DedupReferenceList takes a slice of Reference and returns a deduplicated slice using a new underlying array.

func FilterReferenceList

func FilterReferenceList(ids []Reference, cutset ...Reference) []Reference

func MakeReferenceList

func MakeReferenceList(col string, ids ...bson.ObjectId) []Reference

func (Reference) Ref

func (ref Reference) Ref() Reference

func (Reference) Validate

func (ref Reference) Validate() error

type Referencer

type Referencer interface {
	Ref() Reference
}

Jump to

Keyboard shortcuts

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