refac: debt on role backend

This commit is contained in:
Florian Sylvain committed 2026-10-26 23:34:35 +01:00
1 parent de142f6c5f
commit a043f7f41a
130 files changed
+3591 -512

No files matched your search

@@ -14,42 +14,39 @@ func NewCheckPermissionUseCase(roles role.Repository) *CheckPermissionUseCase {
return &CheckPermissionUseCase{roles: roles}
}
func (c *CheckPermissionUseCase) Require(account user.User, key string) (role.GrantSet, error) {
grants, err := c.grantsOf(account, key)
if err != nil {
return nil, err
func (c *CheckPermissionUseCase) Grants(account user.User) (role.GrantSet, error) {
resolved, err := resolveRole(c.roles, account)
if errors.Is(err, role.ErrRoleNotFound) {
return role.GrantSet{}, nil
}
if !grants.Holds(key) {
return nil, role.MissingPermissionError{Key: key}
if err != nil {
return role.GrantSet{}, err
}
return resolved.GrantSet(), nil
}
func (c *CheckPermissionUseCase) Require(account user.User, key string) (role.GrantSet, error) {
return c.RequireFor(account, key, "")
}
func (c *CheckPermissionUseCase) RequireFor(account user.User, key string, typeKey string) (role.GrantSet, error) {
grants, err := c.Grants(account)
if err != nil {
return role.GrantSet{}, err
}
if !grants.HoldsFor(key, typeKey) {
return role.GrantSet{}, role.MissingPermissionError{Key: key}
}
return grants, nil
}
func (c *CheckPermissionUseCase) RequireAll(account user.User, key string) (role.GrantSet, error) {
grants, err := c.grantsOf(account, key)
grants, err := c.Grants(account)
if err != nil {
return nil, err
return role.GrantSet{}, err
}
if !grants.HoldsAll(key) {
return nil, role.MissingPermissionError{Key: key}
return role.GrantSet{}, role.MissingPermissionError{Key: key}
}
return grants, nil
}
func (c *CheckPermissionUseCase) grantsOf(account user.User, key string) (role.GrantSet, error) {
resolved, err := resolveRole(c.roles, account)
if errors.Is(err, role.ErrRoleNotFound) {
return nil, role.MissingPermissionError{Key: key}
}
if err != nil {
return nil, err
}
granted, err := c.roles.ListGrants(resolved.ID)
if errors.Is(err, role.ErrRoleNotFound) {
return nil, role.MissingPermissionError{Key: key}
}
if err != nil {
return nil, err
}
return role.NewGrantSet(granted), nil
}