mirror of https://github.com/poanetwork/quorum.git
integrate permission contracts with geth - load data from contracts when geth is started
This commit is contained in:
parent
3371aa0ac9
commit
86ecfa4864
|
@ -28,7 +28,7 @@ var (
|
|||
)
|
||||
|
||||
// AcctManagerABI is the input ABI used to generate the binding from.
|
||||
const AcctManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"getAccountDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfAccounts\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"valAcctAccessChange\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"getAccountRole\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"orgAdminExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNWAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setDefaults\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"approveOrgAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"revokeAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"AccountAccessModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"AccountAccessRevoked\",\"type\":\"event\"}]"
|
||||
const AcctManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgAdmin\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"getAccountDetails\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"assignAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfAccounts\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"valAcctAccessChange\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_acct\",\"type\":\"address\"}],\"name\":\"getAccountRole\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"orgAdminExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"aIndex\",\"type\":\"uint256\"}],\"name\":\"getAccountDetailsFromIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNWAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_nwAdminRole\",\"type\":\"string\"},{\"name\":\"_oAdminRole\",\"type\":\"string\"}],\"name\":\"setDefaults\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"approveOrgAdminAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"revokeAccountRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"AccountAccessModified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"}],\"name\":\"AccountAccessRevoked\",\"type\":\"event\"}]"
|
||||
|
||||
// AcctManager is an auto generated Go binding around an Ethereum contract.
|
||||
type AcctManager struct {
|
||||
|
@ -234,6 +234,42 @@ func (_AcctManager *AcctManagerCallerSession) GetAccountDetails(_acct common.Add
|
|||
return _AcctManager.Contract.GetAccountDetails(&_AcctManager.CallOpts, _acct)
|
||||
}
|
||||
|
||||
// GetAccountDetailsFromIndex is a free data retrieval call binding the contract method 0xb2018568.
|
||||
//
|
||||
// Solidity: function getAccountDetailsFromIndex(aIndex uint256) constant returns(address, string, string, uint256, bool)
|
||||
func (_AcctManager *AcctManagerCaller) GetAccountDetailsFromIndex(opts *bind.CallOpts, aIndex *big.Int) (common.Address, string, string, *big.Int, bool, error) {
|
||||
var (
|
||||
ret0 = new(common.Address)
|
||||
ret1 = new(string)
|
||||
ret2 = new(string)
|
||||
ret3 = new(*big.Int)
|
||||
ret4 = new(bool)
|
||||
)
|
||||
out := &[]interface{}{
|
||||
ret0,
|
||||
ret1,
|
||||
ret2,
|
||||
ret3,
|
||||
ret4,
|
||||
}
|
||||
err := _AcctManager.contract.Call(opts, out, "getAccountDetailsFromIndex", aIndex)
|
||||
return *ret0, *ret1, *ret2, *ret3, *ret4, err
|
||||
}
|
||||
|
||||
// GetAccountDetailsFromIndex is a free data retrieval call binding the contract method 0xb2018568.
|
||||
//
|
||||
// Solidity: function getAccountDetailsFromIndex(aIndex uint256) constant returns(address, string, string, uint256, bool)
|
||||
func (_AcctManager *AcctManagerSession) GetAccountDetailsFromIndex(aIndex *big.Int) (common.Address, string, string, *big.Int, bool, error) {
|
||||
return _AcctManager.Contract.GetAccountDetailsFromIndex(&_AcctManager.CallOpts, aIndex)
|
||||
}
|
||||
|
||||
// GetAccountDetailsFromIndex is a free data retrieval call binding the contract method 0xb2018568.
|
||||
//
|
||||
// Solidity: function getAccountDetailsFromIndex(aIndex uint256) constant returns(address, string, string, uint256, bool)
|
||||
func (_AcctManager *AcctManagerCallerSession) GetAccountDetailsFromIndex(aIndex *big.Int) (common.Address, string, string, *big.Int, bool, error) {
|
||||
return _AcctManager.Contract.GetAccountDetailsFromIndex(&_AcctManager.CallOpts, aIndex)
|
||||
}
|
||||
|
||||
// GetAccountRole is a free data retrieval call binding the contract method 0x81d66b23.
|
||||
//
|
||||
// Solidity: function getAccountRole(_acct address) constant returns(string)
|
||||
|
|
|
@ -28,7 +28,7 @@ var (
|
|||
)
|
||||
|
||||
// NodeManagerABI is the input ABI used to generate the binding from.
|
||||
const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"getNodeStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingDeactivation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingActivation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingBlacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"}]"
|
||||
const NodeManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"approveNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"getNodeStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"getNodeDetails\",\"outputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrgNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"nodeIndex\",\"type\":\"uint256\"}],\"name\":\"getNodeDetailsFromIndex\",\"outputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_nodeStatus\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_enodeId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfNodes\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingDeactivation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingActivation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodeActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_enodeId\",\"type\":\"string\"}],\"name\":\"NodePendingBlacklist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"\",\"type\":\"string\"}],\"name\":\"NodeBlacklisted\",\"type\":\"event\"}]"
|
||||
|
||||
// NodeManager is an auto generated Go binding around an Ethereum contract.
|
||||
type NodeManager struct {
|
||||
|
@ -210,12 +210,14 @@ func (_NodeManager *NodeManagerCallerSession) GetNodeDetails(enodeId string) (st
|
|||
|
||||
// GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
|
||||
//
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_enodeId string, _nodeStatus uint256)
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_orgId string, _enodeId string, _nodeStatus uint256)
|
||||
func (_NodeManager *NodeManagerCaller) GetNodeDetailsFromIndex(opts *bind.CallOpts, nodeIndex *big.Int) (struct {
|
||||
OrgId string
|
||||
EnodeId string
|
||||
NodeStatus *big.Int
|
||||
}, error) {
|
||||
ret := new(struct {
|
||||
OrgId string
|
||||
EnodeId string
|
||||
NodeStatus *big.Int
|
||||
})
|
||||
|
@ -226,8 +228,9 @@ func (_NodeManager *NodeManagerCaller) GetNodeDetailsFromIndex(opts *bind.CallOp
|
|||
|
||||
// GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
|
||||
//
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_enodeId string, _nodeStatus uint256)
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_orgId string, _enodeId string, _nodeStatus uint256)
|
||||
func (_NodeManager *NodeManagerSession) GetNodeDetailsFromIndex(nodeIndex *big.Int) (struct {
|
||||
OrgId string
|
||||
EnodeId string
|
||||
NodeStatus *big.Int
|
||||
}, error) {
|
||||
|
@ -236,8 +239,9 @@ func (_NodeManager *NodeManagerSession) GetNodeDetailsFromIndex(nodeIndex *big.I
|
|||
|
||||
// GetNodeDetailsFromIndex is a free data retrieval call binding the contract method 0x97c07a9b.
|
||||
//
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_enodeId string, _nodeStatus uint256)
|
||||
// Solidity: function getNodeDetailsFromIndex(nodeIndex uint256) constant returns(_orgId string, _enodeId string, _nodeStatus uint256)
|
||||
func (_NodeManager *NodeManagerCallerSession) GetNodeDetailsFromIndex(nodeIndex *big.Int) (struct {
|
||||
OrgId string
|
||||
EnodeId string
|
||||
NodeStatus *big.Int
|
||||
}, error) {
|
||||
|
|
|
@ -28,7 +28,7 @@ var (
|
|||
)
|
||||
|
||||
// OrgManagerABI is the input ABI used to generate the binding from.
|
||||
const OrgManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_type\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_msg\",\"type\":\"string\"}],\"name\":\"Dummy\",\"type\":\"event\"}]"
|
||||
const OrgManagerABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"updateOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_status\",\"type\":\"uint256\"}],\"name\":\"approveOrgStatusUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addAdminOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgIndex\",\"type\":\"uint256\"}],\"name\":\"getOrgInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfOrgs\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_orgStatus\",\"type\":\"uint256\"}],\"name\":\"checkOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getImpl\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"approveOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"addOrg\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getOrgStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"checkOrgExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_type\",\"type\":\"uint256\"}],\"name\":\"OrgPendingApproval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgSuspended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"OrgSuspensionRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_msg\",\"type\":\"string\"}],\"name\":\"Dummy\",\"type\":\"event\"}]"
|
||||
|
||||
// OrgManager is an auto generated Go binding around an Ethereum contract.
|
||||
type OrgManager struct {
|
||||
|
@ -250,6 +250,32 @@ func (_OrgManager *OrgManagerCallerSession) GetImpl() (common.Address, error) {
|
|||
return _OrgManager.Contract.GetImpl(&_OrgManager.CallOpts)
|
||||
}
|
||||
|
||||
// GetNumberOfOrgs is a free data retrieval call binding the contract method 0x7755ebdd.
|
||||
//
|
||||
// Solidity: function getNumberOfOrgs() constant returns(uint256)
|
||||
func (_OrgManager *OrgManagerCaller) GetNumberOfOrgs(opts *bind.CallOpts) (*big.Int, error) {
|
||||
var (
|
||||
ret0 = new(*big.Int)
|
||||
)
|
||||
out := ret0
|
||||
err := _OrgManager.contract.Call(opts, out, "getNumberOfOrgs")
|
||||
return *ret0, err
|
||||
}
|
||||
|
||||
// GetNumberOfOrgs is a free data retrieval call binding the contract method 0x7755ebdd.
|
||||
//
|
||||
// Solidity: function getNumberOfOrgs() constant returns(uint256)
|
||||
func (_OrgManager *OrgManagerSession) GetNumberOfOrgs() (*big.Int, error) {
|
||||
return _OrgManager.Contract.GetNumberOfOrgs(&_OrgManager.CallOpts)
|
||||
}
|
||||
|
||||
// GetNumberOfOrgs is a free data retrieval call binding the contract method 0x7755ebdd.
|
||||
//
|
||||
// Solidity: function getNumberOfOrgs() constant returns(uint256)
|
||||
func (_OrgManager *OrgManagerCallerSession) GetNumberOfOrgs() (*big.Int, error) {
|
||||
return _OrgManager.Contract.GetNumberOfOrgs(&_OrgManager.CallOpts)
|
||||
}
|
||||
|
||||
// GetOrgIndex is a free data retrieval call binding the contract method 0x141b8883.
|
||||
//
|
||||
// Solidity: function getOrgIndex(_orgId string) constant returns(uint256)
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -28,7 +28,7 @@ var (
|
|||
)
|
||||
|
||||
// RoleManagerABI is the input ABI used to generate the binding from.
|
||||
const RoleManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getRoleDetails\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isVoterRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isFullAccessRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"bool\"}],\"name\":\"addRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"roleExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfRoles\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}]"
|
||||
const RoleManagerABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"getRoleDetails\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isVoterRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"isFullAccessRole\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"},{\"name\":\"_baseAccess\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"bool\"}],\"name\":\"addRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"roleExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfRoles\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"rIndex\",\"type\":\"uint256\"}],\"name\":\"getRoleDetailsFromIndex\",\"outputs\":[{\"name\":\"roleId\",\"type\":\"string\"},{\"name\":\"orgId\",\"type\":\"string\"},{\"name\":\"accessType\",\"type\":\"uint256\"},{\"name\":\"voter\",\"type\":\"bool\"},{\"name\":\"active\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_roleId\",\"type\":\"string\"},{\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"removeRole\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_permUpgradable\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_roleId\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"_orgId\",\"type\":\"string\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}]"
|
||||
|
||||
// RoleManager is an auto generated Go binding around an Ethereum contract.
|
||||
type RoleManager struct {
|
||||
|
@ -246,6 +246,54 @@ func (_RoleManager *RoleManagerCallerSession) GetRoleDetails(_roleId string, _or
|
|||
return _RoleManager.Contract.GetRoleDetails(&_RoleManager.CallOpts, _roleId, _orgId)
|
||||
}
|
||||
|
||||
// GetRoleDetailsFromIndex is a free data retrieval call binding the contract method 0xa451d4a8.
|
||||
//
|
||||
// Solidity: function getRoleDetailsFromIndex(rIndex uint256) constant returns(roleId string, orgId string, accessType uint256, voter bool, active bool)
|
||||
func (_RoleManager *RoleManagerCaller) GetRoleDetailsFromIndex(opts *bind.CallOpts, rIndex *big.Int) (struct {
|
||||
RoleId string
|
||||
OrgId string
|
||||
AccessType *big.Int
|
||||
Voter bool
|
||||
Active bool
|
||||
}, error) {
|
||||
ret := new(struct {
|
||||
RoleId string
|
||||
OrgId string
|
||||
AccessType *big.Int
|
||||
Voter bool
|
||||
Active bool
|
||||
})
|
||||
out := ret
|
||||
err := _RoleManager.contract.Call(opts, out, "getRoleDetailsFromIndex", rIndex)
|
||||
return *ret, err
|
||||
}
|
||||
|
||||
// GetRoleDetailsFromIndex is a free data retrieval call binding the contract method 0xa451d4a8.
|
||||
//
|
||||
// Solidity: function getRoleDetailsFromIndex(rIndex uint256) constant returns(roleId string, orgId string, accessType uint256, voter bool, active bool)
|
||||
func (_RoleManager *RoleManagerSession) GetRoleDetailsFromIndex(rIndex *big.Int) (struct {
|
||||
RoleId string
|
||||
OrgId string
|
||||
AccessType *big.Int
|
||||
Voter bool
|
||||
Active bool
|
||||
}, error) {
|
||||
return _RoleManager.Contract.GetRoleDetailsFromIndex(&_RoleManager.CallOpts, rIndex)
|
||||
}
|
||||
|
||||
// GetRoleDetailsFromIndex is a free data retrieval call binding the contract method 0xa451d4a8.
|
||||
//
|
||||
// Solidity: function getRoleDetailsFromIndex(rIndex uint256) constant returns(roleId string, orgId string, accessType uint256, voter bool, active bool)
|
||||
func (_RoleManager *RoleManagerCallerSession) GetRoleDetailsFromIndex(rIndex *big.Int) (struct {
|
||||
RoleId string
|
||||
OrgId string
|
||||
AccessType *big.Int
|
||||
Voter bool
|
||||
Active bool
|
||||
}, error) {
|
||||
return _RoleManager.Contract.GetRoleDetailsFromIndex(&_RoleManager.CallOpts, rIndex)
|
||||
}
|
||||
|
||||
// IsFullAccessRole is a free data retrieval call binding the contract method 0x476ff5cc.
|
||||
//
|
||||
// Solidity: function isFullAccessRole(_roleId string, _orgId string) constant returns(bool)
|
||||
|
|
|
@ -61,6 +61,11 @@ contract AccountManager {
|
|||
return (acctAccessList[aIndex].acctId, acctAccessList[aIndex].orgId, acctAccessList[aIndex].role, acctAccessList[aIndex].status, acctAccessList[aIndex].orgAdmin);
|
||||
}
|
||||
|
||||
function getAccountDetailsFromIndex(uint aIndex) external view returns (address, string memory, string memory, uint, bool)
|
||||
{
|
||||
return (acctAccessList[aIndex].acctId, acctAccessList[aIndex].orgId, acctAccessList[aIndex].role, acctAccessList[aIndex].status, acctAccessList[aIndex].orgAdmin);
|
||||
}
|
||||
|
||||
// Get number of accounts
|
||||
function getNumberOfAccounts() external view returns (uint)
|
||||
{
|
||||
|
|
|
@ -69,9 +69,9 @@ contract NodeManager {
|
|||
return (nodeList[nodeIndex].enodeId, nodeList[nodeIndex].status);
|
||||
}
|
||||
// Get node details given index
|
||||
function getNodeDetailsFromIndex(uint nodeIndex) public view returns (string memory _enodeId, uint _nodeStatus)
|
||||
function getNodeDetailsFromIndex(uint nodeIndex) public view returns (string memory _orgId, string memory _enodeId, uint _nodeStatus)
|
||||
{
|
||||
return (nodeList[nodeIndex].enodeId, nodeList[nodeIndex].status);
|
||||
return (nodeList[nodeIndex].orgId, nodeList[nodeIndex].enodeId, nodeList[nodeIndex].status);
|
||||
}
|
||||
// Get number of nodes
|
||||
function getNumberOfNodes() public view returns (uint)
|
||||
|
|
|
@ -50,13 +50,23 @@ contract OrgManager {
|
|||
|
||||
function addAdminOrg(string calldata _orgId) external
|
||||
onlyImpl
|
||||
{
|
||||
addNewOrg(_orgId, 2);
|
||||
emit OrgApproved(_orgId);
|
||||
}
|
||||
|
||||
function addNewOrg(string memory _orgId, uint _status) internal
|
||||
{
|
||||
orgNum++;
|
||||
OrgIndex[keccak256(abi.encodePacked(_orgId))] = orgNum;
|
||||
uint id = orgList.length++;
|
||||
orgList[id].orgId = _orgId;
|
||||
orgList[id].status = 2;
|
||||
emit OrgApproved(_orgId);
|
||||
orgList[id].status = _status;
|
||||
}
|
||||
|
||||
function getNumberOfOrgs() public view returns (uint)
|
||||
{
|
||||
return orgList.length;
|
||||
}
|
||||
|
||||
// Org related functions
|
||||
|
@ -76,11 +86,7 @@ contract OrgManager {
|
|||
onlyImpl
|
||||
orgNotExists(_orgId)
|
||||
{
|
||||
orgNum++;
|
||||
OrgIndex[keccak256(abi.encodePacked(_orgId))] = orgNum;
|
||||
uint id = orgList.length++;
|
||||
orgList[id].orgId = _orgId;
|
||||
orgList[id].status = 1;
|
||||
addNewOrg(_orgId, 1);
|
||||
emit OrgPendingApproval(_orgId, 1);
|
||||
}
|
||||
|
||||
|
@ -137,7 +143,6 @@ contract OrgManager {
|
|||
}
|
||||
|
||||
function approveOrgSuspension(string memory _orgId) internal
|
||||
|
||||
{
|
||||
require(checkOrgStatus(_orgId, 3) == true, "Nothing to approve");
|
||||
uint id = getOrgIndex(_orgId);
|
||||
|
|
|
@ -208,10 +208,10 @@ contract PermissionsImplementation {
|
|||
}
|
||||
|
||||
// Role related functions
|
||||
function addNewRole(string calldata _roleId, string calldata _orgId, uint _access, bool _voter) external
|
||||
function addNewRole(string calldata _roleId, string calldata _orgId, uint _access, bool _voter, address _caller) external
|
||||
onlyProxy
|
||||
orgApproved(_orgId)
|
||||
orgAdmin(msg.sender, _orgId)
|
||||
orgAdmin(_caller, _orgId)
|
||||
{
|
||||
//add new roles can be created by org admins only
|
||||
roles.addRole(_roleId, _orgId, _access, _voter);
|
||||
|
@ -239,6 +239,7 @@ contract PermissionsImplementation {
|
|||
return voter.getNumberOfValidVoters(_orgId);
|
||||
}
|
||||
|
||||
|
||||
function checkIfVoterExists(string calldata _orgId, address _acct) external view
|
||||
returns (bool)
|
||||
{
|
||||
|
@ -282,11 +283,11 @@ contract PermissionsImplementation {
|
|||
}
|
||||
|
||||
|
||||
function assignAccountRole(address _acct, string memory _orgId, string memory _roleId) public
|
||||
function assignAccountRole(address _acct, string memory _orgId, string memory _roleId, address _caller) public
|
||||
onlyProxy
|
||||
networkBootUpDone()
|
||||
orgApproved(_orgId)
|
||||
orgAdmin(msg.sender, _orgId)
|
||||
orgAdmin(_caller, _orgId)
|
||||
{
|
||||
// check if the account is part of another org. If yes then op cannot be done
|
||||
require(validateAccount(_acct, _orgId) == true, "Operation cannot be performed");
|
||||
|
@ -319,11 +320,11 @@ contract PermissionsImplementation {
|
|||
accounts.assignAccountRole(_acct, _orgId, _roleId);
|
||||
}
|
||||
|
||||
function addNode(string calldata _orgId, string calldata _enodeId) external
|
||||
function addNode(string calldata _orgId, string calldata _enodeId, address _caller) external
|
||||
onlyProxy
|
||||
networkBootUpDone()
|
||||
orgApproved(_orgId)
|
||||
orgAdmin(msg.sender, _orgId)
|
||||
orgAdmin(_caller, _orgId)
|
||||
{
|
||||
// check that the node is not part of another org
|
||||
require(getNodeStatus(_enodeId) == 0, "Node present already");
|
||||
|
|
|
@ -93,7 +93,7 @@ contract PermissionsInterface {
|
|||
// Role related functions
|
||||
function addNewRole(string calldata _roleId, string calldata _orgId, uint _access, bool _voter) external
|
||||
{
|
||||
permImplementation.addNewRole(_roleId, _orgId, _access, _voter);
|
||||
permImplementation.addNewRole(_roleId, _orgId, _access, _voter, msg.sender);
|
||||
}
|
||||
|
||||
function removeRole(string calldata _roleId, string calldata _orgId) external
|
||||
|
@ -112,11 +112,13 @@ contract PermissionsInterface {
|
|||
return permImplementation.getNumberOfVoters(_orgId);
|
||||
}
|
||||
|
||||
|
||||
function checkIfVoterExists(string calldata _orgId, address _acct) external view returns (bool)
|
||||
{
|
||||
return permImplementation.checkIfVoterExists(_orgId, _acct);
|
||||
}
|
||||
|
||||
|
||||
function getVoteCount(string calldata _orgId) external view returns (uint, uint)
|
||||
{
|
||||
return permImplementation.getVoteCount(_orgId);
|
||||
|
@ -141,13 +143,13 @@ contract PermissionsInterface {
|
|||
|
||||
function assignAccountRole(address _acct, string memory _orgId, string memory _roleId) public
|
||||
{
|
||||
permImplementation.assignAccountRole(_acct, _orgId, _roleId);
|
||||
permImplementation.assignAccountRole(_acct, _orgId, _roleId, msg.sender);
|
||||
|
||||
}
|
||||
|
||||
function addNode(string calldata _orgId, string calldata _enodeId) external
|
||||
{
|
||||
permImplementation.addNode(_orgId, _enodeId);
|
||||
permImplementation.addNode(_orgId, _enodeId, msg.sender);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,11 @@ contract RoleManager {
|
|||
return (roleList[rIndex].roleId, roleList[rIndex].orgId, roleList[rIndex].baseAccess, roleList[rIndex].isVoter, roleList[rIndex].active);
|
||||
}
|
||||
|
||||
function getRoleDetailsFromIndex(uint rIndex) external view returns (string memory roleId, string memory orgId, uint accessType, bool voter, bool active)
|
||||
{
|
||||
return (roleList[rIndex].roleId, roleList[rIndex].orgId, roleList[rIndex].baseAccess, roleList[rIndex].isVoter, roleList[rIndex].active);
|
||||
}
|
||||
|
||||
// Get number of Role
|
||||
function getNumberOfRoles() external view returns (uint)
|
||||
{
|
||||
|
|
|
@ -45,6 +45,8 @@ type PermissionCtrl struct {
|
|||
permInterf *pbind.PermInterface
|
||||
permNode *pbind.NodeManager
|
||||
permAcct *pbind.AcctManager
|
||||
permRole *pbind.RoleManager
|
||||
permOrg *pbind.OrgManager
|
||||
permConfig *types.PermissionConfig
|
||||
}
|
||||
|
||||
|
@ -85,7 +87,7 @@ func NewQuorumPermissionCtrl(stack *node.Node, permissionedMode, isRaft bool, pc
|
|||
}
|
||||
|
||||
if !permissionedMode {
|
||||
return &PermissionCtrl{stack, stateReader, e, isRaft, permissionedMode, stack.GetNodeKey(), stack.DataDir(), nil, nil, nil, nil, pconfig}, nil
|
||||
return &PermissionCtrl{stack, stateReader, e, isRaft, permissionedMode, stack.GetNodeKey(), stack.DataDir(), nil, nil, nil, nil, nil, nil, pconfig}, nil
|
||||
}
|
||||
pu, err := pbind.NewPermUpgr(common.HexToAddress(pconfig.UpgrdAddress), stateReader)
|
||||
if err != nil {
|
||||
|
@ -110,8 +112,21 @@ func NewQuorumPermissionCtrl(stack *node.Node, permissionedMode, isRaft bool, pc
|
|||
log.Error("Permissions not enabled for the network", "err", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pmRole, err := pbind.NewRoleManager(common.HexToAddress(pconfig.RoleAddress), stateReader)
|
||||
if err != nil {
|
||||
log.Error("Permissions not enabled for the network", "err", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pmOrg, err := pbind.NewOrgManager(common.HexToAddress(pconfig.OrgAddress), stateReader)
|
||||
if err != nil {
|
||||
log.Error("Permissions not enabled for the network", "err", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Info("AJ-permission contracts initialized")
|
||||
return &PermissionCtrl{stack, stateReader, e, isRaft, permissionedMode, stack.GetNodeKey(), stack.DataDir(), pu, pm, pmNode, pmAcct, pconfig}, nil
|
||||
return &PermissionCtrl{stack, stateReader, e, isRaft, permissionedMode, stack.GetNodeKey(), stack.DataDir(), pu, pm, pmNode, pmAcct, pmRole, pmOrg, pconfig}, nil
|
||||
}
|
||||
|
||||
// Starts the node permissioning and account access control monitoring
|
||||
|
@ -432,7 +447,7 @@ func (p *PermissionCtrl) monitorAccountPermissions() {
|
|||
|
||||
_, err := p.permAcct.AcctManagerFilterer.WatchAccountAccessModified(opts, ch)
|
||||
if err != nil {
|
||||
log.Info("Failed NewNodeProposed: %v", err)
|
||||
log.Info("AJ-Failed NewNodeProposed: %v", err)
|
||||
}
|
||||
|
||||
for {
|
||||
|
@ -522,49 +537,31 @@ func (p *PermissionCtrl) populateInitPermissions() error {
|
|||
// which will have full access. If not throw a fatal error
|
||||
// Do not want a network with no access
|
||||
log.Info("AJ-network not initialized")
|
||||
/*permUpgrSession := &pbind.PermUpgrSession{
|
||||
Contract: p.permUpgr,
|
||||
CallOpts: bind.CallOpts{
|
||||
Pending: true,
|
||||
},
|
||||
TransactOpts: bind.TransactOpts{
|
||||
From: auth.From,
|
||||
Signer: auth.Signer,
|
||||
GasLimit: 47000000,
|
||||
GasPrice: big.NewInt(0),
|
||||
},
|
||||
}*/
|
||||
|
||||
/*permUpgrSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permUpgrSession.TransactOpts.From))
|
||||
if _, err := permUpgrSession.Init(common.HexToAddress(p.permConfig.InterfAddress), common.HexToAddress(p.permConfig.ImplAddress)); err != nil {
|
||||
log.Error("AJ-permUpgr.init failed", "err", err)
|
||||
return err
|
||||
}*/
|
||||
|
||||
permInterfSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permInterfSession.TransactOpts.From))
|
||||
if _, err := permInterfSession.SetPolicy(p.permConfig.NwAdminOrg, p.permConfig.NwAdminRole, p.permConfig.OrgAdminRole); err != nil {
|
||||
log.Error("AJ-permIntr.setPolicy failed", "err", err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info("AJ-permInter setPolicy done")
|
||||
permInterfSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permInterfSession.TransactOpts.From))
|
||||
if _, err := permInterfSession.Init(common.HexToAddress(p.permConfig.OrgAddress), common.HexToAddress(p.permConfig.RoleAddress), common.HexToAddress(p.permConfig.AccountAddress), common.HexToAddress(p.permConfig.VoterAddress), common.HexToAddress(p.permConfig.NodeAddress)); err != nil {
|
||||
log.Error("AJ-permIntr.init failed", "err", err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info("AJ-permInter init done")
|
||||
// populate the initial node list from static-nodes.json
|
||||
err = p.populateStaticNodesToContract(permInterfSession)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info("AJ-permInter init node population done")
|
||||
// populate initial account access to full access
|
||||
err = p.populateInitAccountAccess(permInterfSession)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Info("AJ-permInter init account population done")
|
||||
if err == nil && len(p.permConfig.Accounts) == 0 {
|
||||
|
||||
//utils.Fatalf("Permissioned network being brought up with zero accounts having full access. Add permissioned full access accounts in genesis.json and bring up the network")
|
||||
|
@ -581,6 +578,139 @@ func (p *PermissionCtrl) populateInitPermissions() error {
|
|||
log.Info("AJ-network already booted")
|
||||
}
|
||||
|
||||
//populate orgs, nodes, roles and accounts from contract
|
||||
|
||||
//populate orgs
|
||||
permOrgSession := &pbind.OrgManagerSession{
|
||||
Contract: p.permOrg,
|
||||
CallOpts: bind.CallOpts{
|
||||
Pending: true,
|
||||
},
|
||||
TransactOpts: bind.TransactOpts{
|
||||
From: auth.From,
|
||||
Signer: auth.Signer,
|
||||
GasLimit: 47000000,
|
||||
GasPrice: big.NewInt(0),
|
||||
},
|
||||
}
|
||||
permOrgSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permOrgSession.TransactOpts.From))
|
||||
if numberOfOrgs, err := permOrgSession.GetNumberOfOrgs(); err != nil {
|
||||
log.Error("AJ-reading org num failed")
|
||||
} else {
|
||||
log.Info("AJ-org num ", "num", numberOfOrgs.Int64())
|
||||
iOrgNum := numberOfOrgs.Uint64()
|
||||
for k := uint64(0); k < iOrgNum; k++ {
|
||||
permOrgSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permOrgSession.TransactOpts.From))
|
||||
if o, s, err := permOrgSession.GetOrgInfo(big.NewInt(int64(k))); err != nil {
|
||||
log.Error("AJ-Org reading org info failed")
|
||||
} else {
|
||||
types.OrgInfoMap.UpsertOrg(o, int(s.Int64()))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//populate nodes
|
||||
permNodeSession := &pbind.NodeManagerSession{
|
||||
Contract: p.permNode,
|
||||
CallOpts: bind.CallOpts{
|
||||
Pending: true,
|
||||
},
|
||||
TransactOpts: bind.TransactOpts{
|
||||
From: auth.From,
|
||||
Signer: auth.Signer,
|
||||
GasLimit: 47000000,
|
||||
GasPrice: big.NewInt(0),
|
||||
},
|
||||
}
|
||||
permNodeSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permNodeSession.TransactOpts.From))
|
||||
if numberOfNodes, err := permNodeSession.GetNumberOfNodes(); err != nil {
|
||||
log.Error("AJ-reading node num failed")
|
||||
} else {
|
||||
log.Info("AJ-node num ", "num", numberOfNodes.Int64())
|
||||
iOrgNum := numberOfNodes.Uint64()
|
||||
for k := uint64(0); k < iOrgNum; k++ {
|
||||
permNodeSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permNodeSession.TransactOpts.From))
|
||||
if nodeStruct, err := permNodeSession.GetNodeDetailsFromIndex(big.NewInt(int64(k))); err != nil {
|
||||
log.Error("AJ-node reading org info failed")
|
||||
} else {
|
||||
types.NodeInfoMap.UpsertNode(nodeStruct.OrgId, nodeStruct.EnodeId, int(nodeStruct.NodeStatus.Int64()))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//populate roles
|
||||
permRoleSession := &pbind.RoleManagerSession{
|
||||
Contract: p.permRole,
|
||||
CallOpts: bind.CallOpts{
|
||||
Pending: true,
|
||||
},
|
||||
TransactOpts: bind.TransactOpts{
|
||||
From: auth.From,
|
||||
Signer: auth.Signer,
|
||||
GasLimit: 47000000,
|
||||
GasPrice: big.NewInt(0),
|
||||
},
|
||||
}
|
||||
permRoleSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permRoleSession.TransactOpts.From))
|
||||
if numberOfRoles, err := permRoleSession.GetNumberOfRoles(); err != nil {
|
||||
log.Error("AJ-reading role num failed")
|
||||
} else {
|
||||
log.Info("AJ-role num ", "num", numberOfRoles.Int64())
|
||||
iOrgNum := numberOfRoles.Uint64()
|
||||
for k := uint64(0); k < iOrgNum; k++ {
|
||||
permRoleSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permRoleSession.TransactOpts.From))
|
||||
if roleStruct, err := permRoleSession.GetRoleDetailsFromIndex(big.NewInt(int64(k))); err != nil {
|
||||
log.Error("AJ-Org reading org info failed")
|
||||
} else {
|
||||
types.RoleInfoMap.UpsertRole(roleStruct.OrgId, roleStruct.RoleId, roleStruct.Voter, int(roleStruct.AccessType.Int64()), roleStruct.Active)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//populate accounts
|
||||
permAcctSession := &pbind.AcctManagerSession{
|
||||
Contract: p.permAcct,
|
||||
CallOpts: bind.CallOpts{
|
||||
Pending: true,
|
||||
},
|
||||
TransactOpts: bind.TransactOpts{
|
||||
From: auth.From,
|
||||
Signer: auth.Signer,
|
||||
GasLimit: 47000000,
|
||||
GasPrice: big.NewInt(0),
|
||||
},
|
||||
}
|
||||
permAcctSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permAcctSession.TransactOpts.From))
|
||||
|
||||
if numberOfRoles, err := permAcctSession.GetNumberOfAccounts(); err != nil {
|
||||
log.Error("AJ-reading acct num failed")
|
||||
} else {
|
||||
log.Info("AJ-acct num ", "num", numberOfRoles.Int64())
|
||||
iOrgNum := numberOfRoles.Uint64()
|
||||
for k := uint64(0); k < iOrgNum; k++ {
|
||||
permAcctSession.TransactOpts.Nonce = new(big.Int).SetUint64(p.eth.TxPool().Nonce(permAcctSession.TransactOpts.From))
|
||||
if addr, org, role, status, orgAdmin, err := permAcctSession.GetAccountDetailsFromIndex(big.NewInt(int64(k))); err != nil {
|
||||
log.Error("AJ-Org reading org info failed")
|
||||
} else {
|
||||
types.AcctInfoMap.UpsertAccount(org, role, addr, orgAdmin, int(status.Int64()))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
log.Info("AJ-all data loaded")
|
||||
types.OrgInfoMap.Show()
|
||||
log.Info("============")
|
||||
types.NodeInfoMap.Show()
|
||||
log.Info("============")
|
||||
types.RoleInfoMap.Show()
|
||||
log.Info("============")
|
||||
types.AcctInfoMap.Show()
|
||||
log.Info("============")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package types
|
|||
|
||||
import (
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/hashicorp/golang-lru"
|
||||
"sync"
|
||||
)
|
||||
|
@ -15,10 +16,60 @@ const (
|
|||
FullAccess
|
||||
)
|
||||
|
||||
type OrgStatus uint8
|
||||
|
||||
const (
|
||||
Proposed OrgStatus = 1
|
||||
Approved
|
||||
PendingSuspension
|
||||
Suspended
|
||||
RevokeSuspension
|
||||
)
|
||||
|
||||
type OrgInfo struct {
|
||||
OrgId string
|
||||
Status int
|
||||
}
|
||||
|
||||
type NodeStatus uint8
|
||||
|
||||
const (
|
||||
PendingApproval NodeStatus = 1
|
||||
NodeApproved
|
||||
PendingDeactivation
|
||||
Deactivated
|
||||
PendingActivation
|
||||
PendingBlacklisting
|
||||
Blacklisted
|
||||
)
|
||||
|
||||
type NodeInfo struct {
|
||||
OrgId string
|
||||
Url string
|
||||
Status int
|
||||
}
|
||||
|
||||
type RoleInfo struct {
|
||||
OrgId string
|
||||
RoleId string
|
||||
IsVoter bool
|
||||
Access int
|
||||
Active bool
|
||||
}
|
||||
|
||||
type AccountInfo struct {
|
||||
OrgId string
|
||||
RoleId string
|
||||
AcctId common.Address
|
||||
IsOrgAdmin bool
|
||||
Status int
|
||||
}
|
||||
|
||||
type PermStruct struct {
|
||||
AcctId common.Address
|
||||
roleId string
|
||||
}
|
||||
|
||||
type OrgStruct struct {
|
||||
OrgId string
|
||||
Keys []string
|
||||
|
@ -41,15 +92,81 @@ type PermissionConfig struct {
|
|||
Accounts []string //initial list of account that need full access
|
||||
}
|
||||
|
||||
type OrgKey struct {
|
||||
OrgId string
|
||||
}
|
||||
|
||||
type NodeKey struct {
|
||||
OrgId string
|
||||
Url string
|
||||
}
|
||||
|
||||
type RoleKey struct {
|
||||
OrgId string
|
||||
RoleId string
|
||||
}
|
||||
|
||||
type AccountKey struct {
|
||||
OrgId string
|
||||
RoleId string
|
||||
AcctId common.Address
|
||||
}
|
||||
|
||||
type OrgCache struct {
|
||||
c *lru.Cache
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
type NodeCache struct {
|
||||
c *lru.Cache
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
type RoleCache struct {
|
||||
c *lru.Cache
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
type AcctCache struct {
|
||||
c *lru.Cache
|
||||
mux sync.Mutex
|
||||
}
|
||||
|
||||
func NewOrgCache() *OrgCache {
|
||||
c, _ := lru.New(defaultMapLimit)
|
||||
return &OrgCache{c, sync.Mutex{}}
|
||||
}
|
||||
|
||||
func NewNodeCache() *NodeCache {
|
||||
c, _ := lru.New(defaultMapLimit)
|
||||
return &NodeCache{c, sync.Mutex{}}
|
||||
}
|
||||
|
||||
func NewRoleCache() *RoleCache {
|
||||
c, _ := lru.New(defaultMapLimit)
|
||||
return &RoleCache{c, sync.Mutex{}}
|
||||
}
|
||||
|
||||
func NewAcctCache() *AcctCache {
|
||||
c, _ := lru.New(defaultMapLimit)
|
||||
return &AcctCache{c, sync.Mutex{}}
|
||||
}
|
||||
|
||||
var DefaultAccess = FullAccess
|
||||
|
||||
const acctMapLimit = 100
|
||||
const orgKeyMapLimit = 100
|
||||
|
||||
var AcctMap, _ = lru.New(acctMapLimit)
|
||||
const defaultMapLimit = 100
|
||||
|
||||
var AcctMap, _ = lru.New(acctMapLimit)
|
||||
var OrgKeyMap, _ = lru.New(orgKeyMapLimit)
|
||||
|
||||
var OrgInfoMap = NewOrgCache()
|
||||
var NodeInfoMap = NewNodeCache()
|
||||
var RoleInfoMap = NewRoleCache()
|
||||
var AcctInfoMap = NewAcctCache()
|
||||
|
||||
var orgKeyLock sync.Mutex
|
||||
|
||||
func (pc *PermissionConfig) IsEmpty() bool {
|
||||
|
@ -61,6 +178,144 @@ func SetDefaultAccess() {
|
|||
DefaultAccess = FullAccess
|
||||
}
|
||||
|
||||
func (o *OrgCache) UpsertOrg(orgId string, status int) {
|
||||
defer o.mux.Lock()
|
||||
key := OrgKey{OrgId: orgId}
|
||||
if _, ok := o.c.Get(key); ok {
|
||||
log.Info("AJ-OrgId already exists. update it", "orgId", orgId)
|
||||
o.c.Add(key, &OrgInfo{orgId, status})
|
||||
} else {
|
||||
log.Info("AJ-OrgId does not exist. add it", "orgId", orgId)
|
||||
o.c.Add(key, &OrgInfo{orgId, status})
|
||||
}
|
||||
}
|
||||
|
||||
func (o *OrgCache) GetOrg(orgId string) *OrgInfo {
|
||||
defer o.mux.Lock()
|
||||
key := OrgKey{OrgId: orgId}
|
||||
if ent, ok := o.c.Get(key); ok {
|
||||
log.Info("AJ-OrgFound", "orgId", orgId)
|
||||
return ent.(*OrgInfo)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *OrgCache) Show() {
|
||||
for i, k := range o.c.Keys() {
|
||||
v, _ := o.c.Get(k)
|
||||
log.Info("AJ-Org", "i", i, "key", k, "value", v)
|
||||
}
|
||||
}
|
||||
|
||||
func (n *NodeCache) UpsertNode(orgId string, url string, status int) {
|
||||
defer n.mux.Lock()
|
||||
key := NodeKey{OrgId: orgId, Url: url}
|
||||
if _, ok := n.c.Get(key); ok {
|
||||
log.Info("AJ-Node already exists. update it", "orgId", orgId, "url", url)
|
||||
n.c.Add(key, &NodeInfo{orgId, url, status})
|
||||
} else {
|
||||
log.Info("AJ-Node does not exist. add it", "orgId", orgId, "url", url)
|
||||
n.c.Add(key, &NodeInfo{orgId, url, status})
|
||||
}
|
||||
}
|
||||
|
||||
func (n *NodeCache) GetNodeByUrl(url string) *NodeInfo {
|
||||
defer n.mux.Lock()
|
||||
var key NodeKey
|
||||
var found = false
|
||||
for _, k := range n.c.Keys() {
|
||||
ent := k.(NodeKey)
|
||||
if ent.Url == url {
|
||||
key = ent
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if found {
|
||||
v, _ := n.c.Get(key)
|
||||
ent := v.(*NodeInfo)
|
||||
log.Info("AJ-NodeFound", "url", ent.Url, "orgId", ent.OrgId)
|
||||
return ent
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *NodeCache) Show() {
|
||||
for i, k := range o.c.Keys() {
|
||||
v, _ := o.c.Get(k)
|
||||
log.Info("AJ-Node", "i", i, "key", k, "value", v)
|
||||
}
|
||||
}
|
||||
|
||||
func (a *AcctCache) UpsertAccount(orgId string, role string, acct common.Address, orgAdmin bool, status int) {
|
||||
defer a.mux.Lock()
|
||||
key := AccountKey{orgId, role, acct}
|
||||
if _, ok := a.c.Get(key); ok {
|
||||
log.Info("AJ-account already exists. update it", "orgId", orgId, "role", role, "acct", acct)
|
||||
a.c.Add(key, &AccountInfo{orgId, role, acct, orgAdmin, status})
|
||||
} else {
|
||||
log.Info("AJ-account does not exist. add it", "orgId", orgId, "role", role, "acct", acct)
|
||||
a.c.Add(key, &AccountInfo{orgId, role, acct, orgAdmin, status})
|
||||
}
|
||||
}
|
||||
|
||||
func (n *AcctCache) GetAccountByAccount(acct common.Address) *AccountInfo {
|
||||
defer n.mux.Lock()
|
||||
var key AccountKey
|
||||
var found = false
|
||||
for _, k := range n.c.Keys() {
|
||||
ent := k.(AccountKey)
|
||||
if ent.AcctId == acct {
|
||||
key = ent
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if found {
|
||||
v, _ := n.c.Get(key)
|
||||
ent := v.(*AccountInfo)
|
||||
log.Info("AJ-AccountFound", "org", ent.OrgId, "role", ent.RoleId, "acct", ent.AcctId)
|
||||
return ent
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *AcctCache) Show() {
|
||||
for i, k := range o.c.Keys() {
|
||||
v, _ := o.c.Get(k)
|
||||
log.Info("AJ-Accounts", "i", i, "key", k, "value", v)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RoleCache) UpsertRole(orgId string, role string, voter bool, access int, active bool) {
|
||||
defer r.mux.Lock()
|
||||
key := RoleKey{orgId, role}
|
||||
if _, ok := r.c.Get(key); ok {
|
||||
log.Info("AJ-role already exists. update it", "orgId", orgId, "role", role, "access", access, "voter", voter, "active", active)
|
||||
r.c.Add(key, &RoleInfo{orgId, role, voter, access, active})
|
||||
} else {
|
||||
log.Info("AJ-role does not exist. add it", "orgId", orgId, "role", role, "access", access, "voter", voter, "active", active)
|
||||
r.c.Add(key, &RoleInfo{orgId, role, voter, access, active})
|
||||
}
|
||||
}
|
||||
|
||||
func (r *RoleCache) GetRole(orgId string, roleId string) *RoleInfo {
|
||||
defer r.mux.Lock()
|
||||
key := RoleKey{OrgId: orgId, RoleId: roleId}
|
||||
if ent, ok := r.c.Get(key); ok {
|
||||
log.Info("AJ-RoleFound", "orgId", orgId, "roleId", roleId)
|
||||
return ent.(*RoleInfo)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *RoleCache) Show() {
|
||||
for i, k := range o.c.Keys() {
|
||||
v, _ := o.c.Get(k)
|
||||
log.Info("AJ-Role", "i", i, "key", k, "value", v)
|
||||
}
|
||||
}
|
||||
|
||||
// Adds account access to the cache
|
||||
func AddAccountAccess(acctId common.Address, roleId string) {
|
||||
AcctMap.Add(acctId, &PermStruct{AcctId: acctId, roleId: roleId})
|
||||
|
|
Loading…
Reference in New Issue