Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}