...

Source file src/edge-infra.dev/pkg/sds/emergencyaccess/rules/privileges.go

Documentation: edge-infra.dev/pkg/sds/emergencyaccess/rules

     1  //nolint:dupl
     2  package rulesengine
     3  
     4  import (
     5  	"context"
     6  	"errors"
     7  	"fmt"
     8  )
     9  
    10  // Add privilege updates the dataset with given names. returns a list of
    11  // values where the values remain unchanged in the dataset.
    12  func (reng RulesEngine) AddPrivileges(ctx context.Context, privileges []PostPrivilegePayload) (AddNameResult, error) {
    13  	// validation
    14  	if len(privileges) == 0 {
    15  		return AddNameResult{}, fmt.Errorf("empty privilege list")
    16  	}
    17  	if len(privileges) > maxPrivileges {
    18  		return AddNameResult{}, fmt.Errorf("total number of privileges %d exceeds max %d", len(privileges), maxPrivileges)
    19  	}
    20  	var retErr error
    21  	for i, privilege := range privileges {
    22  		if err := privilege.Validate(); err != nil {
    23  			retErr = errors.Join(retErr, fmt.Errorf("invalid privilege at %d: %w", i, err))
    24  		}
    25  	}
    26  	if retErr != nil {
    27  		return AddNameResult{}, retErr
    28  	}
    29  	privs := []string{}
    30  	for _, priv := range privileges {
    31  		privs = append(privs, priv.Name)
    32  	}
    33  	return reng.ds.AddPrivileges(ctx, privs)
    34  }
    35  
    36  func (reng RulesEngine) DeletePrivilege(ctx context.Context, name string) (DeleteResult, error) {
    37  	//validation
    38  	if name == "" {
    39  		return DeleteResult{}, fmt.Errorf("empty privilege name")
    40  	}
    41  	return reng.ds.DeletePrivilege(ctx, name)
    42  }
    43  
    44  func (reng RulesEngine) ReadPrivileges(ctx context.Context) ([]Privilege, error) {
    45  	return reng.ds.ReadAllPrivileges(ctx)
    46  }
    47  
    48  func (reng RulesEngine) ReadPrivilegesWithFilter(ctx context.Context, filter []string) ([]Privilege, error) {
    49  	return reng.ds.ReadPrivilegesWithFilter(ctx, filter)
    50  }
    51  
    52  func (reng RulesEngine) ReadPrivilege(ctx context.Context, name string) (Privilege, error) {
    53  	//validation
    54  	if name == "" {
    55  		return Privilege{}, fmt.Errorf("empty privilege name")
    56  	}
    57  	return reng.ds.ReadPrivilege(ctx, name)
    58  }
    59  

View as plain text