Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}