-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSudoPolicy.sol
More file actions
79 lines (72 loc) · 2.12 KB
/
SudoPolicy.sol
File metadata and controls
79 lines (72 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import { ConfigId } from "smart-sessions/DataTypes.sol";
import {
IUserOpPolicy,
IActionPolicy,
I1271Policy,
IPolicy,
VALIDATION_SUCCESS
} from "smart-sessions/interfaces/IPolicy.sol";
import { IERC165 } from "forge-std/interfaces/IERC165.sol";
import { EnumerableSet } from "smart-sessions/utils/EnumerableSet4337.sol";
import { PackedUserOperation } from "modulekit/external/ERC4337.sol";
/**
* This contract is a fork of SudoPolicy.sol from erc7579/smartsessions.
* The difference is the added compatibility with the IUserOpPolicy interface.
* See https://github.com/erc7579/smartsessions/pull/145 for details.
*/
contract SudoPolicy is IUserOpPolicy, IActionPolicy, I1271Policy {
function initializeWithMultiplexer(
address account,
ConfigId configId,
bytes calldata /*initData*/
)
external
{
emit IPolicy.PolicySet(configId, msg.sender, account);
}
function checkUserOpPolicy(
ConfigId, /*id*/
PackedUserOperation calldata /*userOp*/
)
external
pure
returns (uint256)
{
return VALIDATION_SUCCESS;
}
function checkAction(
ConfigId, /*id*/
address, /*account*/
address, /*target*/
uint256, /*value*/
bytes calldata /*data*/
)
external
pure
override
returns (uint256)
{
return VALIDATION_SUCCESS;
}
function check1271SignedAction(
ConfigId, /*id*/
address, /*requestSender*/
address, /*account*/
bytes32, /*hash*/
bytes calldata /*signature*/
)
external
pure
returns (bool)
{
return true;
}
function supportsInterface(bytes4 interfaceID) external pure override returns (bool) {
return interfaceID == type(IUserOpPolicy).interfaceId
|| interfaceID == type(IActionPolicy).interfaceId
|| interfaceID == type(I1271Policy).interfaceId || interfaceID == type(IERC165).interfaceId
|| interfaceID == type(IPolicy).interfaceId;
}
}