mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
48 lines
1.8 KiB
Solidity
48 lines
1.8 KiB
Solidity
// SPDX-License-Identifier: agpl-3.0
|
|
pragma solidity 0.6.12;
|
|
|
|
import {DebtTokenBase} from './DebtTokenBase.sol';
|
|
import {ILendingPool} from '../../../interfaces/ILendingPool.sol';
|
|
import {
|
|
VersionedInitializable
|
|
} from '../../libraries/aave-upgradeability/VersionedInitializable.sol';
|
|
import {IncentivizedERC20} from '../IncentivizedERC20.sol';
|
|
import {Errors} from '../../libraries/helpers/Errors.sol';
|
|
import {IPermissionManager} from '../../../interfaces/IPermissionManager.sol';
|
|
import {DataTypes} from '../../libraries/types/DataTypes.sol';
|
|
|
|
/**
|
|
* @title PermissionedDebtTokenBase
|
|
* @notice Base contract for different types of debt tokens, like StableDebtToken or VariableDebtToken. Includes permissioned credit delegation
|
|
* @author Aave
|
|
*/
|
|
|
|
abstract contract PermissionedDebtTokenBase is DebtTokenBase
|
|
{
|
|
//identifier for the permission manager contract in the addresses provider
|
|
bytes32 public constant PERMISSION_MANAGER = keccak256('PERMISSION_MANAGER');
|
|
|
|
|
|
modifier onlyBorrowers {
|
|
IPermissionManager permissionManager =
|
|
IPermissionManager(_getLendingPool().getAddressesProvider().getAddress(PERMISSION_MANAGER));
|
|
|
|
require(
|
|
permissionManager.isInRole(_msgSender(), uint256(DataTypes.Roles.BORROWER)),
|
|
Errors.PLP_BORROWER_UNAUTHORIZED
|
|
);
|
|
_;
|
|
}
|
|
|
|
/**
|
|
* @dev delegates borrowing power to a user on the specific debt token
|
|
* @param delegatee the address receiving the delegated borrowing power
|
|
* @param amount the maximum amount being delegated. Delegation will still
|
|
* respect the liquidation constraints (even if delegated, a delegatee cannot
|
|
* force a delegator HF to go below 1)
|
|
**/
|
|
function approveDelegation(address delegatee, uint256 amount) public override onlyBorrowers {
|
|
super.approveDelegation(delegatee, amount);
|
|
}
|
|
}
|