other option of claim approval
This commit is contained in:
parent
a9f2a186d9
commit
c3c2b8e464
|
@ -93,17 +93,7 @@ contract Identity is ERC725, ERC735 {
|
||||||
managerOrActor
|
managerOrActor
|
||||||
returns (uint256 executionId)
|
returns (uint256 executionId)
|
||||||
{
|
{
|
||||||
executionId = nonce;
|
executionId = _execute(_to, _value, _data);
|
||||||
ExecutionRequested(executionId, _to, _value, _data);
|
|
||||||
txx[executionId] = Transaction(
|
|
||||||
{
|
|
||||||
to: _to,
|
|
||||||
value: _value,
|
|
||||||
data: _data,
|
|
||||||
nonce: nonce,
|
|
||||||
approverCount: 0
|
|
||||||
});
|
|
||||||
nonce++;
|
|
||||||
approve(executionId, true);
|
approve(executionId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,52 +166,29 @@ contract Identity is ERC725, ERC735 {
|
||||||
string _uri
|
string _uri
|
||||||
)
|
)
|
||||||
public
|
public
|
||||||
claimSignerOnly
|
returns (bytes32 claimHash)
|
||||||
returns (bytes32 claimRequestId)
|
|
||||||
{
|
{
|
||||||
|
claimHash = keccak256(_issuer, _claimType);
|
||||||
bytes32 claimHash = keccak256(_issuer, _claimType);
|
if (msg.sender == address(this)) {
|
||||||
|
if (claims[claimHash].claimType > 0) {
|
||||||
claimRequestId = claimHash;
|
_modifyClaim(claimHash, _claimType, _scheme, _issuer, _signature, _data, _uri);
|
||||||
|
} else {
|
||||||
if (claims[claimHash].claimType > 0) {
|
_includeClaim(claimHash, _claimType, _scheme, _issuer, _signature, _data, _uri);
|
||||||
// Claim existed
|
|
||||||
ClaimChanged(
|
|
||||||
claimRequestId,
|
|
||||||
_claimType,
|
|
||||||
_scheme,
|
|
||||||
_issuer,
|
|
||||||
_signature,
|
|
||||||
_data,
|
|
||||||
_uri);
|
|
||||||
} else {
|
|
||||||
// TODO Triggers if the claim is new Event and approval process exists: ClaimRequested
|
|
||||||
ClaimRequested(
|
|
||||||
claimRequestId,
|
|
||||||
_claimType,
|
|
||||||
_scheme,
|
|
||||||
_issuer,
|
|
||||||
_signature,
|
|
||||||
_data,
|
|
||||||
_uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
claims[claimHash] = Claim(
|
|
||||||
{
|
|
||||||
claimType: _claimType,
|
|
||||||
scheme: _scheme,
|
|
||||||
issuer: _issuer,
|
|
||||||
signature: _signature,
|
|
||||||
data: _data,
|
|
||||||
uri: _uri
|
|
||||||
}
|
}
|
||||||
);
|
} else {
|
||||||
|
require(_issuer == msg.sender);
|
||||||
indexes[claimHash] = claimsByType[_claimType].length;
|
require(isKeyType(bytes32(msg.sender), CLAIM_SIGNER_KEY));
|
||||||
|
_execute(address(this), 0, msg.data);
|
||||||
claimsByType[_claimType].push(claimRequestId);
|
ClaimRequested(
|
||||||
|
claimHash,
|
||||||
// TODO This SHOULD create a pending claim, which SHOULD to be approved or rejected by n of m approve calls from keys of purpose 1.
|
_claimType,
|
||||||
|
_scheme,
|
||||||
|
_issuer,
|
||||||
|
_signature,
|
||||||
|
_data,
|
||||||
|
_uri
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeClaim(bytes32 _claimId) public returns (bool success) {
|
function removeClaim(bytes32 _claimId) public returns (bool success) {
|
||||||
|
@ -247,6 +214,94 @@ contract Identity is ERC725, ERC735 {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _execute(
|
||||||
|
address _to,
|
||||||
|
uint256 _value,
|
||||||
|
bytes _data
|
||||||
|
)
|
||||||
|
private
|
||||||
|
returns (uint256 executionId)
|
||||||
|
{
|
||||||
|
executionId = nonce;
|
||||||
|
ExecutionRequested(executionId, _to, _value, _data);
|
||||||
|
txx[executionId] = Transaction(
|
||||||
|
{
|
||||||
|
to: _to,
|
||||||
|
value: _value,
|
||||||
|
data: _data,
|
||||||
|
nonce: nonce,
|
||||||
|
approverCount: 0
|
||||||
|
});
|
||||||
|
nonce++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _includeClaim(
|
||||||
|
bytes32 _claimHash,
|
||||||
|
uint256 _claimType,
|
||||||
|
uint256 _scheme,
|
||||||
|
address _issuer,
|
||||||
|
bytes _signature,
|
||||||
|
bytes _data,
|
||||||
|
string _uri
|
||||||
|
)
|
||||||
|
private
|
||||||
|
{
|
||||||
|
claims[_claimHash] = Claim(
|
||||||
|
{
|
||||||
|
claimType: _claimType,
|
||||||
|
scheme: _scheme,
|
||||||
|
issuer: _issuer,
|
||||||
|
signature: _signature,
|
||||||
|
data: _data,
|
||||||
|
uri: _uri
|
||||||
|
}
|
||||||
|
);
|
||||||
|
indexes[_claimHash] = claimsByType[_claimType].length;
|
||||||
|
claimsByType[_claimType].push(_claimHash);
|
||||||
|
ClaimAdded(
|
||||||
|
_claimHash,
|
||||||
|
_claimType,
|
||||||
|
_scheme,
|
||||||
|
_issuer,
|
||||||
|
_signature,
|
||||||
|
_data,
|
||||||
|
_uri
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _modifyClaim(
|
||||||
|
bytes32 _claimHash,
|
||||||
|
uint256 _claimType,
|
||||||
|
uint256 _scheme,
|
||||||
|
address _issuer,
|
||||||
|
bytes _signature,
|
||||||
|
bytes _data,
|
||||||
|
string _uri
|
||||||
|
)
|
||||||
|
private
|
||||||
|
{
|
||||||
|
require(msg.sender == _issuer);
|
||||||
|
ClaimChanged(
|
||||||
|
_claimHash,
|
||||||
|
_claimType,
|
||||||
|
_scheme,
|
||||||
|
_issuer,
|
||||||
|
_signature,
|
||||||
|
_data,
|
||||||
|
_uri
|
||||||
|
);
|
||||||
|
claims[_claimHash] = Claim(
|
||||||
|
{
|
||||||
|
claimType: _claimType,
|
||||||
|
scheme: _scheme,
|
||||||
|
issuer: _issuer,
|
||||||
|
signature: _signature,
|
||||||
|
data: _data,
|
||||||
|
uri: _uri
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function _addKey(bytes32 _key, uint256 _purpose, uint256 _type) private {
|
function _addKey(bytes32 _key, uint256 _purpose, uint256 _type) private {
|
||||||
bytes32 keyHash = keccak256(_key, _purpose);
|
bytes32 keyHash = keccak256(_key, _purpose);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue