(tx *types.IssueKeys)
| 870 | } |
| 871 | |
| 872 | func (s *metaState) updateKeys(tx *types.IssueKeys) (err error) { |
| 873 | sender := tx.GetAccountAddress() |
| 874 | so, loaded := s.loadSQLChainObject(tx.TargetSQLChain.DatabaseID()) |
| 875 | if !loaded { |
| 876 | log.WithFields(log.Fields{ |
| 877 | "dbID": tx.TargetSQLChain.DatabaseID(), |
| 878 | }).WithError(ErrDatabaseNotFound).Error("unexpected error in updateKeys") |
| 879 | return ErrDatabaseNotFound |
| 880 | } |
| 881 | |
| 882 | // check sender's permission |
| 883 | for _, user := range so.Users { |
| 884 | if sender == user.Address { |
| 885 | if !user.Permission.HasSuperPermission() { |
| 886 | log.WithFields(log.Fields{ |
| 887 | "sender": sender, |
| 888 | "dbID": tx.TargetSQLChain, |
| 889 | }).WithError(ErrAccountPermissionDeny).Error("unexpected error in updateKeys") |
| 890 | return ErrAccountPermissionDeny |
| 891 | } |
| 892 | |
| 893 | break |
| 894 | } |
| 895 | } |
| 896 | |
| 897 | // update miner's key |
| 898 | keyMap := make(map[proto.AccountAddress]string) |
| 899 | for i := range tx.MinerKeys { |
| 900 | keyMap[tx.MinerKeys[i].Miner] = tx.MinerKeys[i].EncryptionKey |
| 901 | } |
| 902 | for _, miner := range so.Miners { |
| 903 | if key, ok := keyMap[miner.Address]; ok { |
| 904 | miner.EncryptionKey = key |
| 905 | } |
| 906 | } |
| 907 | return |
| 908 | } |
| 909 | |
| 910 | func (s *metaState) updateBilling(tx *types.UpdateBilling) (err error) { |
| 911 | newProfile, loaded := s.loadSQLChainObject(tx.Receiver.DatabaseID()) |
no test coverage detected