package permissions import ( "chain/runtime" "gno.land/p/gnoland/boards/exts/permissions" "gno.land/r/gnoland/boards2/v1" ) var ( // Admin is the address of the current realm admin. Admin address = "g1rp7cmetn27eqlpjpc4vuusf8kaj746tysc0qgh" // GovDAO T1 multisig // OpenAccountAmount is the ugnot required in an account for open board interactions. // This requirement is only for non board members. OpenAccountAmount int64 = 3_000_000_000 ) // SetAdmin sets a new realm admin address. func SetAdmin(_ realm, admin address) { caller := runtime.PreviousRealm().Address() if caller != Admin { panic("unauthorized") } Admin = admin } // SetOpenAccountAmount sets the required amount in ugnot for open board interactions. func SetOpenAccountAmount(_ realm, amount int64) { caller := runtime.PreviousRealm().Address() if caller != Admin { panic("unauthorized") } if amount < 0 { panic("invalid amount") } OpenAccountAmount = amount } // New creates custom permissions for open boards. func New(owner address) *permissions.Permissions { perms := permissions.New( permissions.UseSingleUserRole(), permissions.WithSuperRole(boards2.RoleOwner), ) perms.SetPublicPermissions( boards2.PermissionThreadCreate, boards2.PermissionThreadRepost, boards2.PermissionReplyCreate, ) perms.AddRole( boards2.RoleAdmin, boards2.PermissionBoardRename, boards2.PermissionBoardFlaggingUpdate, boards2.PermissionMemberInvite, boards2.PermissionMemberInviteRevoke, boards2.PermissionMemberRemove, boards2.PermissionThreadCreate, boards2.PermissionThreadEdit, boards2.PermissionThreadDelete, boards2.PermissionThreadRepost, boards2.PermissionThreadFlag, boards2.PermissionThreadFreeze, boards2.PermissionReplyCreate, boards2.PermissionReplyDelete, boards2.PermissionReplyFlag, boards2.PermissionRoleChange, boards2.PermissionUserBan, boards2.PermissionUserUnban, ) perms.AddRole( boards2.RoleModerator, boards2.PermissionThreadCreate, boards2.PermissionThreadEdit, boards2.PermissionThreadRepost, boards2.PermissionThreadFlag, boards2.PermissionReplyCreate, boards2.PermissionReplyFlag, boards2.PermissionUserBan, boards2.PermissionUserUnban, ) perms.AddRole( boards2.RoleGuest, boards2.PermissionThreadRepost, boards2.PermissionReplyCreate, ) perms.SetUserRoles(owner, boards2.RoleOwner) perms.ValidateFunc(boards2.PermissionBoardRename, validateOpenBoardRename) perms.ValidateFunc(boards2.PermissionMemberInvite, validateOpenMemberInvite) perms.ValidateFunc(boards2.PermissionRoleChange, validateOpenRoleChange) perms.ValidateFunc(boards2.PermissionThreadCreate, validateOpenThreadCreate) perms.ValidateFunc(boards2.PermissionReplyCreate, validateOpenReplyCreate) return perms }