Smart Contract
FanTopPermission
A.86185fba578bc773.FanTopPermission
1import FanTopToken from 0x86185fba578bc773
2
3/*
4 DEPRECATED
5 */
6access(all) contract FanTopPermission {
7 access(all) enum Role: UInt8 {
8 access(all) case owner
9 access(all) case admin
10 access(all) case operator
11 access(all) case minter
12 }
13
14 access(all) event PermissionAdded(target: Address, role: UInt8)
15 access(all) event PermissionRemoved(target: Address, role: UInt8)
16
17 access(all) let receiverStoragePath: StoragePath
18 access(all) let receiverPublicPath: PublicPath
19
20 access(all) resource Owner {
21 }
22
23 access(all) resource Admin {
24 }
25
26 access(all) resource Operator {
27 }
28
29 access(all) resource Minter {
30 }
31
32 access(all) resource interface Receiver {
33 }
34
35 access(all) resource Holder: Receiver {
36 access(contract) let recipient: Address
37 access(self) let roles: { Role: Capability }
38
39 access(contract) init(recipient: Address) {
40 self.recipient = recipient
41 self.roles = {}
42 }
43 }
44
45 access(self) let permissions: { Address: { Role: Bool } }
46 access(self) let capabilities: { Role: Capability }
47
48 init() {
49 self.receiverStoragePath = /storage/FanTopPermission
50 self.receiverPublicPath = /public/FanTopPermission
51
52 self.permissions = {}
53 self.account.storage.save<@Owner>(<- create Owner(), to: /storage/FanTopOwner)
54 self.account.storage.save<@Admin>(<- create Admin(), to: /storage/FanTopAdmin)
55 self.account.storage.save<@Operator>(<- create Operator(), to: /storage/FanTopOperator)
56 self.account.storage.save<@Minter>(<- create Minter(), to: /storage/FanTopMinter)
57
58 self.capabilities = {}
59 self.capabilities[Role.admin] = self.account.capabilities.storage.issue<&Admin>(/storage/FanTopAdmin)
60 self.capabilities[Role.operator] = self.account.capabilities.storage.issue<&Operator>(/storage/FanTopOperator)
61 self.capabilities[Role.minter] = self.account.capabilities.storage.issue<&Minter>(/storage/FanTopMinter)
62 }
63}
64