Solidity Admin

[Solved] Solidity Admin | Solidity - Code Explorer | yomemimo.com
Question : solidity admin

Answered by : jos-wigchert

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/access/Ownable.sol";
contract Adminable is Ownable { mapping(address => uint8) _admins; // -------------------------------------- Modiefiers & Checks -------------------------------------- /** * @dev Throws if called by any account other than an admin. */ modifier onlyAdmin() { require(isAdmin(1), "Adminable: Not an admin with clearance level 1"); _; } modifier onlyAdminWithLevel(uint8 level) { require(isAdmin(level), appendUintToString("Adminable: Not an admin with clearance level ", level)); _; } function isAdmin() public view returns (bool) { return (_admins[_msgSender()] >= 1) || (owner() == _msgSender()); } function isAdmin(uint8 level) public view returns (bool) { return (_admins[_msgSender()] >= level) || (owner() == _msgSender()); } // -------------------------------------- Admin Functions -------------------------------------- function addAdmin(address admin, uint8 level) public onlyAdmin { require(isAdmin(level), "Adminable: Cannot add admin with higher clearance level"); _admins[admin] = level; } function removeAdmin(address admin) public onlyAdmin { uint8 adminRemoveLevel = _admins[admin]; require(isAdmin(adminRemoveLevel + 1), "Adminable: Cannot remove admin with higher (or the same) clearance level"); _admins[admin] = 0; delete _admins[admin]; } // -------------------------------------- Helper Functions -------------------------------------- function uintToString(uint8 v) internal pure returns (string memory str) { uint maxlength = 100; bytes memory reversed = new bytes(maxlength); uint i = 0; while (v != 0) { uint8 remainder = v % 10; v = v / 10; reversed[i++] = bytes1(48 + remainder); } bytes memory s = new bytes(i); for (uint j = 0; j < i; j++) { s[j] = reversed[i - 1 - j]; } str = string(s); } function appendUintToString(string memory inStr, uint8 v) internal pure returns (string memory str) { uint maxlength = 100; bytes memory reversed = new bytes(maxlength); uint i = 0; while (v != 0) { uint8 remainder = v % 10; v = v / 10; reversed[i++] = bytes1(48 + remainder); } bytes memory inStrb = bytes(inStr); bytes memory s = new bytes(inStrb.length + i); uint j; for (j = 0; j < inStrb.length; j++) { s[j] = inStrb[j]; } for (j = 0; j < i; j++) { s[j + inStrb.length] = reversed[i - 1 - j]; } str = string(s); }
}

Source : | Last Update : Mon, 09 May 22

Answers related to solidity admin

Code Explorer Popular Question For Solidity