all files / contracts/peripherals/jobs/ Keep3rJobOwnership.sol

0% Statements 0/7
0% Branches 0/4
0% Functions 0/4
0% Lines 0/10
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                                                                             
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.4 <0.9.0;
 
import '../../../interfaces/peripherals/IKeep3rJobs.sol';
 
abstract contract Keep3rJobOwnership is IKeep3rJobOwnership {
  /// @inheritdoc IKeep3rJobOwnership
  mapping(address => address) public override jobOwner;
 
  /// @inheritdoc IKeep3rJobOwnership
  mapping(address => address) public override jobPendingOwner;
 
  /// @inheritdoc IKeep3rJobOwnership
  function changeJobOwnership(address _job, address _newOwner) external override onlyJobOwner(_job) {
    jobPendingOwner[_job] = _newOwner;
    emit JobOwnershipChange(_job, jobOwner[_job], _newOwner);
  }
 
  /// @inheritdoc IKeep3rJobOwnership
  function acceptJobOwnership(address _job) external override onlyPendingJobOwner(_job) {
    address _previousOwner = jobOwner[_job];
 
    jobOwner[_job] = jobPendingOwner[_job];
    delete jobPendingOwner[_job];
 
    emit JobOwnershipAssent(msg.sender, _job, _previousOwner);
  }
 
  modifier onlyJobOwner(address _job) {
    if (msg.sender != jobOwner[_job]) revert OnlyJobOwner();
    _;
  }
 
  modifier onlyPendingJobOwner(address _job) {
    if (msg.sender != jobPendingOwner[_job]) revert OnlyPendingJobOwner();
    _;
  }
}