yauthorization

package module
v0.0.0-...-83335df Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: MIT Imports: 4 Imported by: 0

README

yauthorization

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrPermission = errors.New("permission error")

Functions

func RegisterEntity

func RegisterEntity(tx *gorm.DB, entities ...Entity) error

Types

type Action

type Action string
const (
	Create Action = "create"
	Update Action = "update"
	Read   Action = "read"
	Delete Action = "delete"
)

type AuthorizeService

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

func NewAuthorizeService

func NewAuthorizeService(
	db *gorm.DB,
) *AuthorizeService

func (*AuthorizeService) ListDomain

func (auth *AuthorizeService) ListDomain()

func (*AuthorizeService) ListDomainRole

func (auth *AuthorizeService) ListDomainRole()

func (*AuthorizeService) ListEntity

func (auth *AuthorizeService) ListEntity() ([]*EntityInfo, error)

func (*AuthorizeService) RoleCreate

func (auth *AuthorizeService) RoleCreate(identity Identity, role *RoleIdentity) error

func (*AuthorizeService) RoleDelete

func (auth *AuthorizeService) RoleDelete(identity Identity, role *RoleIdentity) error

func (*AuthorizeService) RoleList

func (auth *AuthorizeService) RoleList(identity Identity, query *RoleListQuery) (RoleListResult, error)

func (*AuthorizeService) RoleUpdatePermission

func (auth *AuthorizeService) RoleUpdatePermission(identity Identity, role *RoleIdentity, inheritRole *RoleIdentity, perms []*EntityPermission) error

func (*AuthorizeService) UserAddAdminDomain

func (auth *AuthorizeService) UserAddAdminDomain(updater Identity, user Identity, domainID uint) error

func (*AuthorizeService) UserAddRole

func (auth *AuthorizeService) UserAddRole()

func (*AuthorizeService) UserDeleteRole

func (auth *AuthorizeService) UserDeleteRole()

func (*AuthorizeService) UserListRole

func (auth *AuthorizeService) UserListRole()

func (*AuthorizeService) UserRemoveAdminDomain

func (auth *AuthorizeService) UserRemoveAdminDomain(updater Identity, user Identity, roleID uint) error

type Entity

type Entity interface {
	Permission(identity Identity, action Action) *EntityPermission
	GetDomainID() uint
	GetEntityID() string
}

type EntityInfo

type EntityInfo struct {
	Key    string                      `gorm:"primaryKey;autoIncrement:false" json:"key"`
	Action datatypes.JSONSlice[Action] `json:"action"`
}

type EntityPermission

type EntityPermission struct {
	IdentityID uint   `gorm:"primaryKey" json:"identity_id"`
	DomainID   uint   `gorm:"primaryKey" json:"domain_id"`
	EntityID   string `gorm:"primaryKey" json:"entity_id"`
	Action     Action `gorm:"primaryKey" json:"action"`
	Policy     Policy `json:"policy"`
}

func (*EntityPermission) GetDomainID

func (perm *EntityPermission) GetDomainID() uint

GetDomainID implements Entity.

func (*EntityPermission) GetEntityID

func (*EntityPermission) GetEntityID() string

GetEntityID implements Entity.

func (*EntityPermission) Permission

func (perm *EntityPermission) Permission(identity Identity, action Action) *EntityPermission

Permission implements Entity.

type EntityPermissionList

type EntityPermissionList []*EntityPermission

func (*EntityPermissionList) GetDomainID

func (*EntityPermissionList) GetDomainID() uint

GetDomainID implements Entity.

func (*EntityPermissionList) GetEntityID

func (*EntityPermissionList) GetEntityID() string

GetEntityID implements Entity.

func (*EntityPermissionList) Permission

func (list *EntityPermissionList) Permission(identity Identity, action Action) *EntityPermission

Permission implements Entity.

type EntityUpdateBy

type EntityUpdateBy interface {
	SetUpdateByID(idnya uint)
}

type GoogleClaim

type GoogleClaim struct {
	Aud           string `json:"aud"`
	Azp           string `json:"azp"`
	Email         string `json:"email"`
	EmailVerified bool   `json:"email_verified"`
	Exp           int    `json:"exp"`
	FamilyName    string `json:"family_name"`
	GivenName     string `json:"given_name"`
	Iat           int    `json:"iat"`
	Iss           string `json:"iss"`
	Jti           string `json:"jti"`
	Locale        string `json:"locale"`
	Name          string `json:"name"`
	Nbf           int    `json:"nbf"`
	Picture       string `json:"picture"`
	Sub           string `json:"sub"`
}

type Identity

type Identity interface {
	IsSuperUser() bool
	IdentityID() uint
	GetUserID() uint
	SetRole(tx *gorm.DB, role *RoleIdentity) error
	DeleteRole(tx *gorm.DB, roleID uint) error
	GetRole(tx *gorm.DB, domainID uint) (*RoleIdentity, error)
}

type PermissionError

type PermissionError struct {
	NeedPermissions  []*EntityPermission `json:"need_permission"`
	ActualPermission []*EntityPermission `json:"actual_permission"`
	// contains filtered or unexported fields
}

func (*PermissionError) Error

func (permerr *PermissionError) Error() string

Error implements error.

func (*PermissionError) Unwrap

func (err *PermissionError) Unwrap() error

type PermissionPrepload

type PermissionPrepload struct{}

func (*PermissionPrepload) GetDomainID

func (*PermissionPrepload) GetDomainID() uint

GetDomainID implements RawQuery.

func (*PermissionPrepload) GetEntityID

func (*PermissionPrepload) GetEntityID() string

GetEntityID implements RawQuery.

func (*PermissionPrepload) Permission

func (pre *PermissionPrepload) Permission(identity Identity, action Action) *EntityPermission

Permission implements RawQuery.

func (*PermissionPrepload) Raw

func (*PermissionPrepload) Raw() string

Raw implements RawQuery.

type Policy

type Policy int
const (
	Allow Policy = 1
	Deny  Policy = 0
)

type RawQuery

type RawQuery interface {
	Entity
	Raw() string
}

type RoleIdentity

type RoleIdentity struct {
	ID       uint   `gorm:"primarykey" json:"id"`
	Key      string `json:"key" gorm:"index:domain_key,unique"`
	DomainID uint   `json:"domain_id" gorm:"index:domain_key,unique"`

	Permissions []*EntityPermission `json:"permission" gorm:"foreignKey:IdentityID"`

	CreatedAt time.Time `json:"create_at"`
	UpdatedAt time.Time `json:"update_at"`
}

func (*RoleIdentity) GetDomainID

func (role *RoleIdentity) GetDomainID() uint

GetDomainID implements Entity.

func (*RoleIdentity) GetEntityID

func (r *RoleIdentity) GetEntityID() string

GetEntityID implements Entity.

func (*RoleIdentity) IdentityID

func (r *RoleIdentity) IdentityID() uint

IdentityID implements Identity.

func (RoleIdentity) IsSuperUser

func (RoleIdentity) IsSuperUser() bool

IsSuperUser implements Identity.

func (*RoleIdentity) Permission

func (role *RoleIdentity) Permission(identity Identity, action Action) *EntityPermission

Permission implements Entity.

type RoleListQuery

type RoleListQuery struct {
	DomainID uint `json:"domain_id" form:"domain_id" schema:"domain_id"`
}

type RoleListResult

type RoleListResult []*RoleIdentity

func (*RoleListResult) GetDomainID

func (*RoleListResult) GetDomainID() uint

GetDomainID implements Entity.

func (*RoleListResult) GetEntityID

func (*RoleListResult) GetEntityID() string

GetEntityID implements Entity.

func (*RoleListResult) Permission

func (list *RoleListResult) Permission(identity Identity, action Action) *EntityPermission

Permission implements Entity.

type SecQuery

type SecQuery struct {
	SecTx       *gorm.DB
	Tx          *gorm.DB
	Permission  []*EntityPermission
	PermHandler func(perm *EntityPermission) *EntityPermission
	// contains filtered or unexported fields
}

func NewSecQuery

func NewSecQuery(
	identity Identity,
	tx *gorm.DB,

) *SecQuery

func (*SecQuery) CheckPermission

func (q *SecQuery) CheckPermission() error

func (*SecQuery) Delete

func (q *SecQuery) Delete(value Entity) *gorm.DB

func (*SecQuery) Find

func (q *SecQuery) Find(value Entity) *gorm.DB

func (*SecQuery) Model

func (q *SecQuery) Model(value Entity) *SecQuery

func (*SecQuery) Preload

func (q *SecQuery) Preload(query RawQuery, args ...interface{}) *SecQuery

func (*SecQuery) Save

func (q *SecQuery) Save(value Entity) *gorm.DB

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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