permissions_repo

package
v0.0.21 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2025 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPotentialParents

func GetPotentialParents(childType entSchema.ResourceType) []entSchema.ResourceType

GetPotentialParents returns a list of resource types that can be parents of the given childType. This should ideally be derived directly from schema definitions or a central schema utility.

Types

type PermissionCheck

type PermissionCheck struct {
	Action       entSchema.PermittedAction
	ResourceType entSchema.ResourceType
	ResourceID   uuid.UUID
	// If a custom check is provided, it will be called in addition to the standard permission checks
	CustomCheck func(ctx context.Context, userID uuid.UUID) error
}

PermissionCheck defines a permission check to be performed

type PermissionsRepository

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

PermissionsRepository handles group and user permissions

func NewPermissionsRepository

NewPermissionsRepository creates a new GitHub repository

func (*PermissionsRepository) AddToGroup

func (self *PermissionsRepository) AddToGroup(ctx context.Context, groupID, permissionID uuid.UUID) error

func (*PermissionsRepository) Check

func (self *PermissionsRepository) Check(
	ctx context.Context,
	userID uuid.UUID,
	checks []PermissionCheck,
) error

Check if a user has any of the provided permissions. If any check passes, the permission is granted.

func (*PermissionsRepository) Create

func (*PermissionsRepository) CreatePermission

func (self *PermissionsRepository) CreatePermission(
	ctx context.Context,
	groupID uuid.UUID,
	action entSchema.PermittedAction,
	resourceType entSchema.ResourceType,
	selector entSchema.ResourceSelector,
) (*ent.Permission, error)

CreatePermission creates a new permission

func (*PermissionsRepository) Delete

func (self *PermissionsRepository) Delete(ctx context.Context, id uuid.UUID) error

func (*PermissionsRepository) DeletePermission

func (self *PermissionsRepository) DeletePermission(
	ctx context.Context,
	permissionID uuid.UUID,
) error

DeletePermission deletes a permission

func (*PermissionsRepository) GetAccessibleEnvironmentPredicates

func (self *PermissionsRepository) GetAccessibleEnvironmentPredicates(
	ctx context.Context,
	userID uuid.UUID,
	action entSchema.PermittedAction,
	projectID *uuid.UUID,
) (predicate.Environment, error)

GetAccessibleEnvironmentPredicates returns Ent predicates for filtering environments. It can be scoped by an optional projectID.

func (*PermissionsRepository) GetAccessibleProjectPredicates

func (self *PermissionsRepository) GetAccessibleProjectPredicates(
	ctx context.Context,
	userID uuid.UUID,
	action entSchema.PermittedAction,
) (predicate.Project, error)

GetAccessibleProjectPredicates returns Ent predicates for filtering projects that the user has the given action permission for. Returns nil predicate and nil error if user is superuser for projects or access is broadly granted (matches all). Returns a predicate that matches nothing if no access is found. Returns an error if an issue occurs.

func (*PermissionsRepository) GetAccessibleServicePredicates

func (self *PermissionsRepository) GetAccessibleServicePredicates(
	ctx context.Context,
	userID uuid.UUID,
	action entSchema.PermittedAction,
	environmentID *uuid.UUID,
) (predicate.Service, error)

GetAccessibleServicePredicates returns Ent predicates for filtering services. It can be scoped by an optional environmentID.

func (*PermissionsRepository) GetAccessibleTeamPredicates

func (self *PermissionsRepository) GetAccessibleTeamPredicates(
	ctx context.Context,
	userID uuid.UUID,
	action entSchema.PermittedAction,
) (predicate.Team, error)

GetAccessibleTeamPredicates returns Ent predicates for filtering teams that the user has the given action permission for.

func (*PermissionsRepository) GetByID

func (self *PermissionsRepository) GetByID(ctx context.Context, id uuid.UUID) (*ent.Permission, error)

func (*PermissionsRepository) GetPermissionsByGroup

func (self *PermissionsRepository) GetPermissionsByGroup(
	ctx context.Context,
	groupID uuid.UUID,
) ([]*ent.Permission, error)

GetPermissionsByGroup gets all permissions for a group

func (*PermissionsRepository) GetUserPermissionsForResource

func (self *PermissionsRepository) GetUserPermissionsForResource(
	ctx context.Context,
	userID uuid.UUID,
	resourceType entSchema.ResourceType,
	resourceID uuid.UUID,
) ([]entSchema.PermittedAction, error)

GetUserPermissionsForResource returns all permissions a user has for a specific resource

func (*PermissionsRepository) RemoveFromGroup

func (self *PermissionsRepository) RemoveFromGroup(ctx context.Context, groupID, permissionID uuid.UUID) error

type PermissionsRepositoryInterface

type PermissionsRepositoryInterface interface {
	// Check if a user has any of the provided permissions. If any check passes, the permission is granted.
	Check(ctx context.Context, userID uuid.UUID, checks []PermissionCheck) error
	// GetUserPermissionsForResource returns all permissions a user has for a specific resource
	GetUserPermissionsForResource(ctx context.Context, userID uuid.UUID, resourceType entSchema.ResourceType, resourceID uuid.UUID) ([]entSchema.PermittedAction, error)
	// CreatePermission creates a new permission
	CreatePermission(ctx context.Context, groupID uuid.UUID, action entSchema.PermittedAction, resourceType entSchema.ResourceType, selector entSchema.ResourceSelector) (*ent.Permission, error)
	// DeletePermission deletes a permission
	DeletePermission(ctx context.Context, permissionID uuid.UUID) error
	// GetPermissionsByGroup gets all permissions for a group
	GetPermissionsByGroup(ctx context.Context, groupID uuid.UUID) ([]*ent.Permission, error)
	// GetAccessibleProjectPredicates returns Ent predicates for filtering projects
	// that the user has the given action permission for.
	// Returns nil predicate and nil error if user is superuser for projects or access is broadly granted (matches all).
	// Returns a predicate that matches nothing if no access is found.
	// Returns an error if an issue occurs.
	GetAccessibleProjectPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction) (predicate.Project, error)
	// GetAccessibleTeamPredicates returns Ent predicates for filtering teams
	// that the user has the given action permission for.
	GetAccessibleTeamPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction) (predicate.Team, error)
	// GetAccessibleEnvironmentPredicates returns Ent predicates for filtering environments.
	// It can be scoped by an optional projectID.
	GetAccessibleEnvironmentPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction, projectID *uuid.UUID) (predicate.Environment, error)
	// GetAccessibleServicePredicates returns Ent predicates for filtering services.
	// It can be scoped by an optional environmentID.
	GetAccessibleServicePredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction, environmentID *uuid.UUID) (predicate.Service, error)
	Create(ctx context.Context, action schema.PermittedAction, resourceType schema.ResourceType, selector schema.ResourceSelector) (*ent.Permission, error)
	AddToGroup(ctx context.Context, groupID, permissionID uuid.UUID) error
	Delete(ctx context.Context, id uuid.UUID) error
	RemoveFromGroup(ctx context.Context, groupID, permissionID uuid.UUID) error
	GetByID(ctx context.Context, id uuid.UUID) (*ent.Permission, error)
}

PermissionsRepositoryInterface ...

type ResourceHierarchyInfo

type ResourceHierarchyInfo struct {
	ResourceType entSchema.ResourceType
	ResourceID   uuid.UUID
}

ResourceHierarchyInfo represents a parent resource in the hierarchy

Jump to

Keyboard shortcuts

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