LRTConfigRoleChecker

Criado O diff nunca expira
0 remoções
64 linhas
18 adições
82 linhas
// SPDX-License-Identifier: BUSL-1.1
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.27;
pragma solidity 0.8.27;


import { LRTConstants } from "./LRTConstants.sol";
import { LRTConstants } from "./LRTConstants.sol";


import { ILRTConfig } from "../interfaces/ILRTConfig.sol";
import { ILRTConfig } from "../interfaces/ILRTConfig.sol";


import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol";
import { IAccessControl } from "@openzeppelin/contracts/access/IAccessControl.sol";


/// @title LRTConfigRoleChecker - LRT Config Role Checker Contract
/// @title LRTConfigRoleChecker - LRT Config Role Checker Contract
/// @notice Handles LRT config role checks
/// @notice Handles LRT config role checks
abstract contract LRTConfigRoleChecker {
abstract contract LRTConfigRoleChecker {
ILRTConfig public lrtConfig;
ILRTConfig public lrtConfig;


// events
// events
event UpdatedLRTConfig(address indexed lrtConfig);
event UpdatedLRTConfig(address indexed lrtConfig);


// modifiers
// modifiers
modifier onlyRole(bytes32 role) {
modifier onlyRole(bytes32 role) {
if (!IAccessControl(address(lrtConfig)).hasRole(role, msg.sender)) {
if (!IAccessControl(address(lrtConfig)).hasRole(role, msg.sender)) {
string memory roleStr = string(abi.encodePacked(role));
string memory roleStr = string(abi.encodePacked(role));
revert ILRTConfig.CallerNotLRTConfigAllowedRole(roleStr);
revert ILRTConfig.CallerNotLRTConfigAllowedRole(roleStr);
}
}
_;
_;
}
}


modifier onlyLRTManager() {
modifier onlyLRTManager() {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.MANAGER, msg.sender)) {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.MANAGER, msg.sender)) {
revert ILRTConfig.CallerNotLRTConfigManager();
revert ILRTConfig.CallerNotLRTConfigManager();
}
}
_;
_;
}
}


modifier onlyLRTOperator() {
modifier onlyLRTOperator() {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.OPERATOR_ROLE, msg.sender)) {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.OPERATOR_ROLE, msg.sender)) {
revert ILRTConfig.CallerNotLRTConfigOperator();
revert ILRTConfig.CallerNotLRTConfigOperator();
}
}
_;
_;
}
}


modifier onlyAssetTransferRole() {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.ASSET_TRANSFER_ROLE, msg.sender)) {
revert ILRTConfig.CallerNotLRTConfigAssetTransferRole();
}
_;
}

modifier onlyAssetTransferOrOperatorRole() {
if (
!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.ASSET_TRANSFER_ROLE, msg.sender)
&& !IAccessControl(address(lrtConfig)).hasRole(LRTConstants.OPERATOR_ROLE, msg.sender)
) {
revert ILRTConfig.CallerNotLRTConfigOperatorOrAssetTransferRole();
}
_;
}

modifier onlyLRTAdmin() {
modifier onlyLRTAdmin() {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.DEFAULT_ADMIN_ROLE, msg.sender)) {
if (!IAccessControl(address(lrtConfig)).hasRole(LRTConstants.DEFAULT_ADMIN_ROLE, msg.sender)) {
revert ILRTConfig.CallerNotLRTConfigAdmin();
revert ILRTConfig.CallerNotLRTConfigAdmin();
}
}
_;
_;
}
}


modifier onlySupportedAsset(address asset) {
modifier onlySupportedAsset(address asset) {
if (!lrtConfig.isSupportedAsset(asset)) {
if (!lrtConfig.isSupportedAsset(asset)) {
revert ILRTConfig.AssetNotSupported();
revert ILRTConfig.AssetNotSupported();
}
}
_;
_;
}
}


modifier onlySupportedERC20Token(address asset) {
modifier onlySupportedERC20Token(address asset) {
if (!lrtConfig.isSupportedAsset(asset)) {
if (!lrtConfig.isSupportedAsset(asset)) {
revert ILRTConfig.AssetNotSupported();
revert ILRTConfig.AssetNotSupported();
}
}
if (asset == LRTConstants.ETH_TOKEN) {
if (asset == LRTConstants.ETH_TOKEN) {
revert ILRTConfig.ETHNotSupported();
revert ILRTConfig.ETHNotSupported();
}
}
_;
_;
}
}
}
}