/
role.go
97 lines (78 loc) · 1.91 KB
/
role.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package user
import (
"context"
"time"
"github.com/elojah/trax/pkg/paginate"
"github.com/elojah/trax/pkg/ulid"
)
var (
Resources = map[Resource]struct{}{
R_asset: {},
R_entity: {},
R_operation: {},
R_role: {},
R_user: {},
}
Commands = map[Command]struct{}{
C_read: {},
C_create: {},
C_update: {},
C_delete: {},
}
)
type FilterRole struct {
ID ulid.ID
IDs []ulid.ID
EntityID ulid.ID
EntityIDs []ulid.ID
*paginate.Paginate
Search string
}
type StoreRole interface {
InsertRole(context.Context, Role) error
FetchRole(context.Context, FilterRole) (Role, error)
ListRole(context.Context, FilterRole) ([]Role, uint64, error)
DeleteRole(context.Context, FilterRole) error
}
type FilterPermission struct {
RoleID ulid.ID
RoleIDs []ulid.ID
Resource *Resource
Command *Command
}
type StorePermission interface {
InsertPermission(context.Context, Permission) error
InsertPermissions(context.Context, []Permission) error
FetchPermission(context.Context, FilterPermission) (Permission, error)
ListPermission(context.Context, FilterPermission) ([]Permission, error)
DeletePermission(context.Context, FilterPermission) error
}
type FilterRoleUser struct {
RoleID ulid.ID
RoleIDs []ulid.ID
UserID ulid.ID
UserIDs []ulid.ID
}
type StoreRoleUser interface {
InsertRoleUser(context.Context, RoleUser) error
FetchRoleUser(context.Context, FilterRoleUser) (RoleUser, error)
ListRoleUser(context.Context, FilterRoleUser) ([]RoleUser, error)
DeleteRoleUser(context.Context, FilterRoleUser) error
ListClaims(context.Context, ulid.ID) (ClaimAuth, error)
}
func AllPermissions(roleID ulid.ID) []Permission {
var perms []Permission
now := time.Now().Unix()
for r := range Resources {
for c := range Commands {
perms = append(perms, Permission{
RoleID: roleID,
Resource: r,
Command: c,
CreatedAt: now,
UpdatedAt: now,
})
}
}
return perms
}