Documentation
¶
Index ¶
- func GetPotentialParents(childType entSchema.ResourceType) []entSchema.ResourceType
- type PermissionCheck
- type PermissionsRepository
- func (self *PermissionsRepository) AddToGroup(ctx context.Context, groupID, permissionID uuid.UUID) error
- func (self *PermissionsRepository) Check(ctx context.Context, userID uuid.UUID, checks []PermissionCheck) error
- func (self *PermissionsRepository) Create(ctx context.Context, action schema.PermittedAction, ...) (*ent.Permission, error)
- func (self *PermissionsRepository) CreatePermission(ctx context.Context, groupID uuid.UUID, action entSchema.PermittedAction, ...) (*ent.Permission, error)
- func (self *PermissionsRepository) Delete(ctx context.Context, id uuid.UUID) error
- func (self *PermissionsRepository) DeletePermission(ctx context.Context, permissionID uuid.UUID) error
- func (self *PermissionsRepository) GetAccessibleEnvironmentPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction, ...) (predicate.Environment, error)
- func (self *PermissionsRepository) GetAccessibleProjectPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction) (predicate.Project, error)
- func (self *PermissionsRepository) GetAccessibleServicePredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction, ...) (predicate.Service, error)
- func (self *PermissionsRepository) GetAccessibleTeamPredicates(ctx context.Context, userID uuid.UUID, action entSchema.PermittedAction) (predicate.Team, error)
- func (self *PermissionsRepository) GetByID(ctx context.Context, id uuid.UUID) (*ent.Permission, error)
- func (self *PermissionsRepository) GetPermissionsByGroup(ctx context.Context, groupID uuid.UUID) ([]*ent.Permission, error)
- func (self *PermissionsRepository) GetUserPermissionsForResource(ctx context.Context, userID uuid.UUID, resourceType entSchema.ResourceType, ...) ([]entSchema.PermittedAction, error)
- func (self *PermissionsRepository) RemoveFromGroup(ctx context.Context, groupID, permissionID uuid.UUID) error
- type PermissionsRepositoryInterface
- type ResourceHierarchyInfo
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 ¶
func NewPermissionsRepository(db *ent.Client, userRepo user_repo.UserRepositoryInterface, projectRepo project_repo.ProjectRepositoryInterface, environmentRepo environment_repo.EnvironmentRepositoryInterface, serviceRepo service_repo.ServiceRepositoryInterface, teamRepo team_repo.TeamRepositoryInterface) *PermissionsRepository
NewPermissionsRepository creates a new GitHub repository
func (*PermissionsRepository) AddToGroup ¶
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 (self *PermissionsRepository) Create(ctx context.Context, action schema.PermittedAction, resourceType schema.ResourceType, selector schema.ResourceSelector) (*ent.Permission, error)
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) 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 ¶
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