permissions.gno
4.01 Kb · 160 lines
1package boards2
2
3import (
4 "gno.land/p/gnoland/boards"
5 "gno.land/p/gnoland/boards/exts/permissions"
6)
7
8// List of Boards2 member roles.
9const (
10 RoleOwner boards.Role = "owner"
11 RoleAdmin = "admin"
12 RoleModerator = "moderator"
13 RoleGuest = "guest"
14)
15
16// PermissionCustom defines an initial value for custom board permissions.
17// When a board defines custom permissions it must starts from a value
18// greater or equal than PermissionCustom.
19//
20// Custom permissions definition example:
21//
22// const (
23// PermissionCustom1 boards.Permission = iota + boards2.PermissionCustom
24// PermissionCustom2
25// PermissionCustom3
26// )
27const PermissionCustom boards.Permission = 200
28
29// List of Boards2 permissions.
30const (
31 PermissionBoardCreate boards.Permission = iota
32 PermissionBoardFlaggingUpdate
33 PermissionBoardFreeze
34 PermissionBoardRename
35 PermissionMemberInvite
36 PermissionMemberInviteRevoke
37 PermissionMemberRemove
38 PermissionPermissionsUpdate
39 PermissionRealmHelpChange
40 PermissionRealmLock
41 PermissionRealmNotice
42 PermissionAccountRequiredAmountChange
43 PermissionReplyCreate
44 PermissionReplyDelete
45 PermissionReplyFlag
46 PermissionRoleChange
47 PermissionThreadCreate
48 PermissionThreadDelete
49 PermissionThreadEdit
50 PermissionThreadFlag
51 PermissionThreadFreeze
52 PermissionThreadRepost
53 PermissionUserBan
54 PermissionUserUnban
55)
56
57func createBasicBoardPermissions(owner address) *permissions.Permissions {
58 perms := permissions.New(
59 permissions.UseSingleUserRole(),
60 permissions.WithSuperRole(RoleOwner),
61 )
62 perms.AddRole(
63 RoleAdmin,
64 PermissionBoardRename,
65 PermissionBoardFlaggingUpdate,
66 PermissionMemberInvite,
67 PermissionMemberInviteRevoke,
68 PermissionMemberRemove,
69 PermissionThreadCreate,
70 PermissionThreadEdit,
71 PermissionThreadDelete,
72 PermissionThreadRepost,
73 PermissionThreadFlag,
74 PermissionThreadFreeze,
75 PermissionReplyCreate,
76 PermissionReplyDelete,
77 PermissionReplyFlag,
78 PermissionRoleChange,
79 PermissionUserBan,
80 PermissionUserUnban,
81 )
82 perms.AddRole(
83 RoleModerator,
84 PermissionThreadCreate,
85 PermissionThreadEdit,
86 PermissionThreadRepost,
87 PermissionThreadFlag,
88 PermissionReplyCreate,
89 PermissionReplyFlag,
90 PermissionUserBan,
91 PermissionUserUnban,
92 )
93 perms.AddRole(
94 RoleGuest,
95 PermissionThreadCreate,
96 PermissionThreadRepost,
97 PermissionReplyCreate,
98 )
99 perms.SetUserRoles(owner, RoleOwner)
100 perms.ValidateFunc(PermissionBoardRename, validateBasicBoardRename)
101 perms.ValidateFunc(PermissionMemberInvite, validateBasicMemberInvite)
102 perms.ValidateFunc(PermissionRoleChange, validateBasicRoleChange)
103 return perms
104}
105
106func createOpenBoardPermissions(owner address) *permissions.Permissions {
107 perms := permissions.New(
108 permissions.UseSingleUserRole(),
109 permissions.WithSuperRole(RoleOwner),
110 )
111 perms.SetPublicPermissions(
112 PermissionThreadCreate,
113 PermissionThreadRepost,
114 PermissionReplyCreate,
115 )
116 perms.AddRole(
117 RoleAdmin,
118 PermissionBoardRename,
119 PermissionBoardFlaggingUpdate,
120 PermissionMemberInvite,
121 PermissionMemberInviteRevoke,
122 PermissionMemberRemove,
123 PermissionThreadCreate,
124 PermissionThreadEdit,
125 PermissionThreadDelete,
126 PermissionThreadRepost,
127 PermissionThreadFlag,
128 PermissionThreadFreeze,
129 PermissionReplyCreate,
130 PermissionReplyDelete,
131 PermissionReplyFlag,
132 PermissionRoleChange,
133 PermissionUserBan,
134 PermissionUserUnban,
135 )
136 perms.AddRole(
137 RoleModerator,
138 PermissionThreadCreate,
139 PermissionThreadEdit,
140 PermissionThreadRepost,
141 PermissionThreadFlag,
142 PermissionReplyCreate,
143 PermissionReplyFlag,
144 PermissionUserBan,
145 PermissionUserUnban,
146 )
147 perms.AddRole(
148 RoleGuest,
149 PermissionThreadCreate,
150 PermissionThreadRepost,
151 PermissionReplyCreate,
152 )
153 perms.SetUserRoles(owner, RoleOwner)
154 perms.ValidateFunc(PermissionBoardRename, validateOpenBoardRename)
155 perms.ValidateFunc(PermissionMemberInvite, validateOpenMemberInvite)
156 perms.ValidateFunc(PermissionRoleChange, validateOpenRoleChange)
157 perms.ValidateFunc(PermissionThreadCreate, validateOpenThreadCreate)
158 perms.ValidateFunc(PermissionReplyCreate, validateOpenReplyCreate)
159 return perms
160}