Skip to content
Snippets Groups Projects
Commit 72f0c003 authored by inso's avatar inso
Browse files

Only one connection per pubkey

parent 6b5463e8
No related branches found
No related tags found
No related merge requests found
......@@ -90,6 +90,12 @@ def _filter_data(request, data):
filtered["history"].pop("sending")
filtered["history"].pop("receiving")
filtered["history"].pop("pending")
elif request is bma.wot.requirements:
filtered = copy.deepcopy(data)
for idty in filtered["identities"]:
for c in idty["certifications"]:
c.pop("expiresIn")
return filtered
......
......@@ -244,6 +244,7 @@ class ConnectionConfigController(QObject):
password = self.view.edit_password.text()
self.model.set_scrypt_infos(salt, password, self.view.scrypt_params)
self.model.set_uid(self.view.edit_uid.text())
if not self.model.key_exists():
registered, found_identity = await self.model.check_registered()
self.view.button_connect.setEnabled(True)
self.view.button_register.setEnabled(True)
......@@ -254,6 +255,9 @@ class ConnectionConfigController(QObject):
Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
else:
self.step_key.set_result(found_identity)
else:
self.view.display_info(self.tr("A connection already exists using this key."))
except NoPeerAvailable:
self.config_dialog.label_error.setText(self.tr("Could not connect. Check node peering entry"))
......@@ -266,6 +270,7 @@ Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
password = self.view.edit_password.text()
self.model.set_scrypt_infos(salt, password, self.view.scrypt_params)
self.model.set_uid(self.view.edit_uid.text())
if not self.model.key_exists():
registered, found_identity = await self.model.check_registered()
if registered[0] is False and registered[2] is None:
self.step_key.set_result(None)
......@@ -274,6 +279,8 @@ Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
Yours : {0}, the network : {1}""".format(registered[1], registered[2])))
else:
self.view.display_info("Your account already exists on the network")
else:
self.view.display_info(self.tr("A connection already exists using this key."))
except NoPeerAvailable:
self.view.display_info(self.tr("Could not connect. Check node peering entry"))
......
......@@ -202,3 +202,5 @@ Current database is storing {1} network.""".format(node_connector.node.currency,
return registered, found_identity
def key_exists(self):
return self.connection.pubkey in ConnectionsProcessor.instanciate(self.app).pubkeys()
import asyncio
import logging
import time
import aiohttp
from collections import Counter
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject
from duniterpy.api import errors
from duniterpy.key import VerifyingKey
from sakia.data.connectors import NodeConnector
from sakia.data.entities import Node
......@@ -213,12 +212,15 @@ class NetworkService(QObject):
except InvalidNodeCurrency as e:
self._logger.debug(str(e))
if node:
try:
identity = await self._identities_service.find_from_pubkey(node.pubkey)
identity = await self._identities_service.load_requirements(identity)
node.member = identity.member
node.uid = identity.uid
self._processor.update_node(node)
self.nodes_changed.emit()
except errors.DuniterError as e:
self._logger.error(e.message)
self._app.db.commit()
except IndexError:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment