...
1
2 package rulesengine
3
4 import (
5 "context"
6 "errors"
7 "fmt"
8 )
9
10
11
12 func (reng RulesEngine) AddPrivileges(ctx context.Context, privileges []PostPrivilegePayload) (AddNameResult, error) {
13
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
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
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