Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}