contracts/examples/SimpleAuth.sol
pragma solidity ^0.5.0;
import { FISSION } from "../FISSION.sol";
contract SimpleAuth {
enum Level {
Banned,
Unregistered,
Member,
Admin
}
mapping (address => Level) private auth;
constructor() public {
auth[tx.origin] = Level.Admin;
}
function min(Level minLevel) public view returns (byte status) {
if (auth[tx.origin] == Level.Banned) { return FISSION.code(FISSION.Status.Revoked); }
if (auth[tx.origin] < minLevel) { return FISSION.code(FISSION.Status.Disallowed_Stop); }
return FISSION.code(FISSION.Status.Allowed_Go);
}
function set(address who, Level level) public returns (byte status) {
require(auth[tx.origin] == Level.Admin, "Must be an admin");
auth[who] = level;
return FISSION.code(FISSION.Status.Success);
}
}