mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma solidity ^0.7.0;
 | |
| pragma experimental ABIEncoderV2;
 | |
| 
 | |
| import { Variables } from "./variables.sol";
 | |
| 
 | |
| interface IndexInterface {
 | |
|     function list() external view returns (address);
 | |
| }
 | |
| 
 | |
| interface ListInterface {
 | |
|     function addAuth(address user) external;
 | |
| 
 | |
|     function removeAuth(address user) external;
 | |
| }
 | |
| 
 | |
| contract Constants is Variables {
 | |
|     uint256 public constant implementationVersion = 1;
 | |
|     // InstaIndex Address.
 | |
|     address public immutable instaIndex;
 | |
|     // The Account Module Version.
 | |
|     uint256 public constant version = 2;
 | |
| 
 | |
|     constructor(address _instaIndex) {
 | |
|         instaIndex = _instaIndex;
 | |
|     }
 | |
| }
 | |
| 
 | |
| contract Record is Constants {
 | |
|     constructor(address _instaIndex) Constants(_instaIndex) {}
 | |
| 
 | |
|     event LogEnableUser(address indexed user);
 | |
|     event LogDisableUser(address indexed user);
 | |
| 
 | |
|     /**
 | |
|      * @dev Check for Auth if enabled.
 | |
|      * @param user address/user/owner.
 | |
|      */
 | |
|     function isAuth(address user) public view returns (bool) {
 | |
|         return _auth[user];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev Enable New User.
 | |
|      * @param user Owner address
 | |
|      */
 | |
|     function enable(address user) public {
 | |
|         require(
 | |
|             msg.sender == address(this) || msg.sender == instaIndex,
 | |
|             "not-self-index"
 | |
|         );
 | |
|         require(user != address(0), "not-valid");
 | |
|         require(!_auth[user], "already-enabled");
 | |
|         _auth[user] = true;
 | |
|         ListInterface(IndexInterface(instaIndex).list()).addAuth(user);
 | |
|         emit LogEnableUser(user);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev Disable User.
 | |
|      * @param user Owner address
 | |
|      */
 | |
|     function disable(address user) public {
 | |
|         require(msg.sender == address(this), "not-self");
 | |
|         require(user != address(0), "not-valid");
 | |
|         require(_auth[user], "already-disabled");
 | |
|         delete _auth[user];
 | |
|         ListInterface(IndexInterface(instaIndex).list()).removeAuth(user);
 | |
|         emit LogDisableUser(user);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev ERC721 token receiver
 | |
|      */
 | |
|     function onERC721Received(
 | |
|         address,
 | |
|         address,
 | |
|         uint256,
 | |
|         bytes calldata
 | |
|     ) external returns (bytes4) {
 | |
|         return 0x150b7a02; // bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev ERC1155 token receiver
 | |
|      */
 | |
|     function onERC1155Received(
 | |
|         address,
 | |
|         address,
 | |
|         uint256,
 | |
|         uint256,
 | |
|         bytes memory
 | |
|     ) external returns (bytes4) {
 | |
|         return 0xf23a6e61; // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev ERC1155 token receiver
 | |
|      */
 | |
|     function onERC1155BatchReceived(
 | |
|         address,
 | |
|         address,
 | |
|         uint256[] calldata,
 | |
|         uint256[] calldata,
 | |
|         bytes calldata
 | |
|     ) external returns (bytes4) {
 | |
|         return 0xbc197c81; // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
 | |
|     }
 | |
| }
 | |
| 
 | |
| contract InstaDefaultImplementation is Record {
 | |
|     constructor(address _instaIndex) public Record(_instaIndex) {}
 | |
| 
 | |
|     receive() external payable {}
 | |
| }
 | 
