role.gno
0.98 Kb ยท 41 lines
1package rbac
2
3var zeroAddress = address("")
4
5// Role represents a role with a name and an assigned address.
6type Role struct {
7 // name represents the role's identifier
8 name string
9 address address
10}
11
12// NewRole creates a new Role instance with roleName.
13func NewRole(roleName string, addr address) *Role {
14 return &Role{
15 name: roleName,
16 address: addr,
17 }
18}
19
20// Name returns the role's name.
21func (r *Role) Name() string { return r.name }
22
23// Address returns the address assigned to this role. Returns empty address if no address is assigned.
24func (r *Role) Address() address {
25 return r.address
26}
27
28// IsEmpty returns true if no address is assigned to this role.
29func (r *Role) IsEmpty() bool {
30 return r.Address() == zeroAddress
31}
32
33// IsAuthorized returns true if addr matches the role's assigned address.
34func (r *Role) IsAuthorized(addr address) bool {
35 return r.Address() == addr
36}
37
38// setAddress assigns addr to this role.
39func (r *Role) setAddress(addr address) {
40 r.address = addr
41}