// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
abstract contract AccessControl {
mapping(bytes32 => mapping(address => bool)) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
modifier onlyRole(bytes32 role) {
require(hasRole(role, msg.sender), "AccessControl: sender lacks role");
_;
}
function hasRole(bytes32 role, address account) public view returns (bool) {
return _roles[role][account];
}
function grantRole(bytes32 role, address account) public onlyRole(DEFAULT_ADMIN_ROLE) {
_roles[role][account] = true;
emit RoleGranted(role, account, msg.sender);
}
function revokeRole(bytes32 role, address account) public onlyRole(DEFAULT_ADMIN_ROLE) {
_roles[role][account] = false;
emit RoleRevoked(role, account, msg.sender);
}
}
Register for the ZELEN Systems Newsletter
Thank you for signing up for our newsletter!
You will now be among the first to receive exclusive updates on Zelen Systems, including news about our latest developments, upcoming events, and exciting partnerships. Stay tuned for more information on how we are revolutionizing the cannabis industry and making it more accessible than ever before.
Oops, it looks like there was an issue sending your request.
Please ensure that all required fields are filled out correctly and try again.
Upcoming Events
>> Major Announcements
>> Partnerships (ZLNC) Allocation
>> ZELEN Wallet Public Release
>> (ZLNC) Digital Utility Offering
In The News