rbac

package module
v0.0.0-...-4f06158 Latest Latest
Warning

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

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

README

rbac

a Role and Resource Based Access Control implementation in golang

ci codecov PkgGoDev Go Report Card

Installation

go get github.com/jacexh/rbac

Example

rbac := NewRBAC()
qa := NewSimpleRole("qa")
deployment := NewSimpleResource("deployment")
qa.Grant(deployment, PermissionGet, PermissionUpdate)
rbac.RegisterRole(qa)
rbac.Permit(qa, deployment.ID(), PermissionGet)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Permission

type Permission string

Permission ...

const (
	// PermissionAny build-in permission
	PermissionAny Permission = "*"
	// PermissionCreate build-in permission
	PermissionCreate Permission = "create"
	// PermissionUpdate build-in permission
	PermissionUpdate Permission = "update"
	// PermissionGet build-in permission
	PermissionGet Permission = "get"
	// PermissionDelete build-in permission
	PermissionDelete Permission = "delete"
)

type RBAC

type RBAC struct {
	RoleImpl     func(RoleID) Role
	ResourceImpl func(ResourceID) Resource
	// contains filtered or unexported fields
}

RBAC Role&&Role Based Access Control Model

func NewRBAC

func NewRBAC() *RBAC

NewRBAC RBAC Factory method

func (*RBAC) MarshalJSON

func (rbac *RBAC) MarshalJSON() ([]byte, error)

MarshalJSON implement of json.Marshaller

func (*RBAC) Permit

func (rbac *RBAC) Permit(rid RoleID, resID ResourceID, perm Permission) (bool, error)

Permit retrue ture or false that this role got the permission of resource

func (*RBAC) RegisterRole

func (rbac *RBAC) RegisterRole(role Role) error

RegisterRole add new role to rbac

func (*RBAC) RemoveRole

func (rbac *RBAC) RemoveRole(rid RoleID)

RemoveRole remove role by id

func (*RBAC) UnmarshalJSON

func (rbac *RBAC) UnmarshalJSON(data []byte) error

UnmarshalJSON implement of json.Unmarshaller

type Resource

type Resource interface {
	ID() ResourceID
}

Resource resource interface

func NewSimpleResource

func NewSimpleResource(id ResourceID) Resource

NewSimpleResource factory method of SimpleResource

type ResourceID

type ResourceID string

ResourceID role identity

type Role

type Role interface {
	ID() RoleID
	Grant(Resource, ...Permission) error
	Deny(ResourceID, ...Permission)
	Permissions() map[ResourceID][]Permission
	Permit(ResourceID, Permission) bool
}

Role role interface

func NewSimpleRole

func NewSimpleRole(id RoleID) Role

NewSimpleRole factory method of SimpleRole

type RoleID

type RoleID string

RoleID role identity

type SimpleResource

type SimpleResource struct {
	// contains filtered or unexported fields
}

SimpleResource a simple resource implement of Resource interface

func (*SimpleResource) ID

func (resource *SimpleResource) ID() ResourceID

ID return resource id

type SimpleRole

type SimpleRole struct {
	// contains filtered or unexported fields
}

SimpleRole a simple role implement of Role interface

func (*SimpleRole) Deny

func (role *SimpleRole) Deny(rid ResourceID, permissions ...Permission)

Deny remove these permissions from the resource

func (*SimpleRole) Grant

func (role *SimpleRole) Grant(res Resource, permissions ...Permission) error

Grant grant these permissions to the resource

func (*SimpleRole) ID

func (role *SimpleRole) ID() RoleID

ID return role id

func (*SimpleRole) Permissions

func (role *SimpleRole) Permissions() map[ResourceID][]Permission

Permissions return all permissions granted to the role

func (*SimpleRole) Permit

func (role *SimpleRole) Permit(res ResourceID, per Permission) bool

Permit check if role granted the permission of resource

Jump to

Keyboard shortcuts

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