/
types.go
67 lines (56 loc) · 1.19 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package authz
type HasIdentity interface {
GetIdentity() string
}
type Action interface {
HasIdentity
}
type Resource interface {
HasIdentity
GetNamespace() string
}
type Subject interface {
HasIdentity
}
type Effect int32
const (
EffectUnknown Effect = iota
EffectGrant
EffectForbidden
)
type PermissionBean struct {
Namespace string
Resource string
Action string
Subject string
TenantID string
Effect Effect
}
func NewPermissionBean(resource Resource, action Action, subject Subject, tenantID string, effect Effect) PermissionBean {
return PermissionBean{
Namespace: resource.GetNamespace(),
Resource: resource.GetIdentity(),
Action: action.GetIdentity(),
Subject: subject.GetIdentity(),
TenantID: tenantID,
Effect: effect,
}
}
type UpdateSubjectPermission struct {
Resource Resource
Action Action
Effect Effect
TenantID string
}
func NewUpdateSubjectPermission(resource Resource, action Action, tenantID string, effect Effect) *UpdateSubjectPermission {
return &UpdateSubjectPermission{
Resource: resource,
Action: action,
TenantID: tenantID,
Effect: effect,
}
}
type PermissionRequirement struct {
Resource Resource
Action Action
}