permissions.gno
4.41 Kb · 143 lines
1package boards2
2
3import (
4 "gno.land/p/gnoland/boards"
5 "gno.land/p/gnoland/boards/exts/permissions"
6)
7
8const (
9 RoleOwner boards.Role = "owner"
10 RoleAdmin = "admin"
11 RoleModerator = "moderator"
12 RoleGuest = "guest"
13)
14
15const (
16 PermissionBoardCreate boards.Permission = "board:create"
17 PermissionBoardFlaggingUpdate = "board:flagging-update"
18 PermissionBoardFreeze = "board:freeze"
19 PermissionBoardRename = "board:rename"
20 PermissionMemberInvite = "member:invite"
21 PermissionMemberInviteRevoke = "member:invite-remove"
22 PermissionMemberRemove = "member:remove"
23 PermissionPermissionsUpdate = "permissions:update"
24 PermissionRealmHelp = "realm:help"
25 PermissionRealmLock = "realm:lock"
26 PermissionRealmNotice = "realm:notice"
27 PermissionReplyCreate = "reply:create"
28 PermissionReplyDelete = "reply:delete"
29 PermissionReplyFlag = "reply:flag"
30 PermissionRoleChange = "role:change"
31 PermissionThreadCreate = "thread:create"
32 PermissionThreadDelete = "thread:delete"
33 PermissionThreadEdit = "thread:edit"
34 PermissionThreadFlag = "thread:flag"
35 PermissionThreadFreeze = "thread:freeze"
36 PermissionThreadRepost = "thread:repost"
37 PermissionUserBan = "user:ban"
38 PermissionUserUnban = "user:unban"
39)
40
41func createBasicBoardPermissions(owner address) *permissions.Permissions {
42 perms := permissions.New(
43 permissions.UseSingleUserRole(),
44 permissions.WithSuperRole(RoleOwner),
45 )
46 perms.AddRole(
47 RoleAdmin,
48 PermissionBoardRename,
49 PermissionBoardFlaggingUpdate,
50 PermissionMemberInvite,
51 PermissionMemberInviteRevoke,
52 PermissionMemberRemove,
53 PermissionThreadCreate,
54 PermissionThreadEdit,
55 PermissionThreadDelete,
56 PermissionThreadRepost,
57 PermissionThreadFlag,
58 PermissionThreadFreeze,
59 PermissionReplyCreate,
60 PermissionReplyDelete,
61 PermissionReplyFlag,
62 PermissionRoleChange,
63 PermissionUserBan,
64 PermissionUserUnban,
65 )
66 perms.AddRole(
67 RoleModerator,
68 PermissionThreadCreate,
69 PermissionThreadEdit,
70 PermissionThreadRepost,
71 PermissionThreadFlag,
72 PermissionReplyCreate,
73 PermissionReplyFlag,
74 PermissionUserBan,
75 PermissionUserUnban,
76 )
77 perms.AddRole(
78 RoleGuest,
79 PermissionThreadCreate,
80 PermissionThreadRepost,
81 PermissionReplyCreate,
82 )
83 perms.SetUserRoles(owner, RoleOwner)
84 perms.ValidateFunc(PermissionBoardRename, validateBasicBoardRename)
85 perms.ValidateFunc(PermissionMemberInvite, validateBasicMemberInvite)
86 perms.ValidateFunc(PermissionRoleChange, validateBasicRoleChange)
87 return perms
88}
89
90func createOpenBoardPermissions(owner address) *permissions.Permissions {
91 perms := permissions.New(
92 permissions.UseSingleUserRole(),
93 permissions.WithSuperRole(RoleOwner),
94 )
95 perms.SetPublicPermissions(
96 PermissionThreadCreate,
97 PermissionReplyCreate,
98 )
99 perms.AddRole(
100 RoleAdmin,
101 PermissionBoardRename,
102 PermissionBoardFlaggingUpdate,
103 PermissionMemberInvite,
104 PermissionMemberInviteRevoke,
105 PermissionMemberRemove,
106 PermissionThreadCreate,
107 PermissionThreadEdit,
108 PermissionThreadDelete,
109 PermissionThreadRepost,
110 PermissionThreadFlag,
111 PermissionThreadFreeze,
112 PermissionReplyCreate,
113 PermissionReplyDelete,
114 PermissionReplyFlag,
115 PermissionRoleChange,
116 PermissionUserBan,
117 PermissionUserUnban,
118 )
119 perms.AddRole(
120 RoleModerator,
121 PermissionThreadCreate,
122 PermissionThreadEdit,
123 PermissionThreadRepost,
124 PermissionThreadFlag,
125 PermissionReplyCreate,
126 PermissionReplyFlag,
127 PermissionUserBan,
128 PermissionUserUnban,
129 )
130 perms.AddRole(
131 RoleGuest,
132 PermissionThreadCreate,
133 PermissionThreadRepost,
134 PermissionReplyCreate,
135 )
136 perms.SetUserRoles(owner, RoleOwner)
137 perms.ValidateFunc(PermissionBoardRename, validateOpenBoardRename)
138 perms.ValidateFunc(PermissionMemberInvite, validateOpenMemberInvite)
139 perms.ValidateFunc(PermissionRoleChange, validateOpenRoleChange)
140 perms.ValidateFunc(PermissionThreadCreate, validateOpenThreadCreate)
141 perms.ValidateFunc(PermissionReplyCreate, validateOpenReplyCreate)
142 return perms
143}