fix(Contacts): Add self id for identity verification requests
Close #8277
This commit is contained in:
parent
9ca058c6ef
commit
8b9b399077
|
@ -16,7 +16,6 @@ type TrustStatus* {.pure.}= enum
|
|||
Trusted = 1,
|
||||
Untrustworthy = 2
|
||||
|
||||
|
||||
type ContactRequestState* {.pure.} = enum
|
||||
None = 0
|
||||
Mutual = 1
|
||||
|
@ -33,6 +32,7 @@ type VerificationStatus* {.pure.}= enum
|
|||
Trusted = 5
|
||||
|
||||
type VerificationRequest* = object
|
||||
id*: string
|
||||
fromID*: string
|
||||
toID*: string
|
||||
challenge*: string
|
||||
|
@ -118,6 +118,7 @@ proc toVerificationStatus*(value: int): VerificationStatus =
|
|||
|
||||
proc toVerificationRequest*(jsonObj: JsonNode): VerificationRequest =
|
||||
result = VerificationRequest()
|
||||
discard jsonObj.getProp("id", result.id)
|
||||
discard jsonObj.getProp("from", result.fromID)
|
||||
discard jsonObj.getProp("to", result.toID)
|
||||
discard jsonObj.getProp("challenge", result.challenge)
|
||||
|
|
|
@ -548,7 +548,7 @@ QtObject:
|
|||
|
||||
proc markUntrustworthy*(self: Service, publicKey: string) =
|
||||
let response = status_contacts.markUntrustworthy(publicKey)
|
||||
if(not response.error.isNil):
|
||||
if not response.error.isNil:
|
||||
let msg = response.error.message
|
||||
error "error marking as untrustworthy ", msg
|
||||
return
|
||||
|
@ -560,11 +560,18 @@ QtObject:
|
|||
TrustArgs(publicKey: publicKey, isUntrustworthy: true))
|
||||
|
||||
proc verifiedTrusted*(self: Service, publicKey: string) =
|
||||
let response = status_contacts.verifiedTrusted(publicKey)
|
||||
if(not response.error.isNil):
|
||||
try:
|
||||
var response = status_contacts.getVerificationRequestSentTo(publicKey)
|
||||
if not response.error.isNil:
|
||||
let msg = response.error.message
|
||||
error "error confirming identity ", msg
|
||||
return
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
let request = response.result.toVerificationRequest()
|
||||
|
||||
response = status_contacts.verifiedTrusted(request.id)
|
||||
if not response.error.isNil:
|
||||
let msg = response.error.message
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
if self.contacts.hasKey(publicKey):
|
||||
self.contacts[publicKey].trustStatus = TrustStatus.Trusted
|
||||
|
@ -573,13 +580,22 @@ QtObject:
|
|||
self.events.emit(SIGNAL_CONTACT_TRUSTED,
|
||||
TrustArgs(publicKey: publicKey, isUntrustworthy: false))
|
||||
self.events.emit(SIGNAL_CONTACT_VERIFIED, ContactArgs(contactId: publicKey))
|
||||
except Exception as e:
|
||||
error "error verified trusted request", msg=e.msg
|
||||
|
||||
proc verifiedUntrustworthy*(self: Service, publicKey: string) =
|
||||
let response = status_contacts.verifiedUntrustworthy(publicKey)
|
||||
if(not response.error.isNil):
|
||||
try:
|
||||
var response = status_contacts.getVerificationRequestSentTo(publicKey)
|
||||
if not response.error.isNil:
|
||||
let msg = response.error.message
|
||||
error "error confirming identity ", msg
|
||||
return
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
let request = response.result.toVerificationRequest()
|
||||
|
||||
response = status_contacts.verifiedUntrustworthy(request.id)
|
||||
if not response.error.isNil:
|
||||
let msg = response.error.message
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
if self.contacts.hasKey(publicKey):
|
||||
self.contacts[publicKey].trustStatus = TrustStatus.Untrustworthy
|
||||
|
@ -588,6 +604,8 @@ QtObject:
|
|||
self.events.emit(SIGNAL_CONTACT_UNTRUSTWORTHY,
|
||||
TrustArgs(publicKey: publicKey, isUntrustworthy: true))
|
||||
self.events.emit(SIGNAL_CONTACT_VERIFIED, ContactArgs(contactId: publicKey))
|
||||
except Exception as e:
|
||||
error "error verified untrustworthy request", msg=e.msg
|
||||
|
||||
proc removeTrustStatus*(self: Service, publicKey: string) =
|
||||
let response = status_contacts.removeTrustStatus(publicKey)
|
||||
|
@ -676,12 +694,15 @@ QtObject:
|
|||
|
||||
proc acceptVerificationRequest*(self: Service, publicKey: string, responseText: string) =
|
||||
try:
|
||||
let response = status_contacts.acceptVerificationRequest(publicKey, responseText)
|
||||
if not self.receivedIdentityRequests.contains(publicKey):
|
||||
raise newException(ValueError, fmt"No verification request for public key: `{publicKey}`")
|
||||
|
||||
var request = self.receivedIdentityRequests[publicKey]
|
||||
let response = status_contacts.acceptVerificationRequest(request.id, responseText)
|
||||
if(not response.error.isNil):
|
||||
let msg = response.error.message
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
var request = self.receivedIdentityRequests[publicKey]
|
||||
request.status = VerificationStatus.Verified
|
||||
request.response = responseText
|
||||
request.repliedAt = getTime().toUnix * 1000
|
||||
|
@ -694,16 +715,18 @@ QtObject:
|
|||
|
||||
proc declineVerificationRequest*(self: Service, publicKey: string) =
|
||||
try:
|
||||
let response = status_contacts.declineVerificationRequest(publicKey)
|
||||
if not self.receivedIdentityRequests.contains(publicKey):
|
||||
raise newException(ValueError, fmt"No verification request for public key: `{publicKey}`")
|
||||
|
||||
var request = self.receivedIdentityRequests[publicKey]
|
||||
let response = status_contacts.declineVerificationRequest(request.id)
|
||||
if(not response.error.isNil):
|
||||
let msg = response.error.message
|
||||
raise newException(RpcException, msg)
|
||||
|
||||
var request = self.receivedIdentityRequests[publicKey]
|
||||
request.status = VerificationStatus.Declined
|
||||
self.receivedIdentityRequests[publicKey] = request
|
||||
|
||||
self.events.emit(SIGNAL_CONTACT_VERIFICATION_DECLINED, ContactArgs(contactId: publicKey))
|
||||
except Exception as e:
|
||||
error "error declining contact verification request", msg=e.msg
|
||||
|
|
@ -59,12 +59,16 @@ proc markUntrustworthy*(pubkey: string): RpcResponse[JsonNode] {.raises: [Except
|
|||
let payload = %* [pubkey]
|
||||
result = callPrivateRPC("markAsUntrustworthy".prefix, payload)
|
||||
|
||||
proc verifiedTrusted*(pubkey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [pubkey]
|
||||
proc verifiedTrusted*(requestId: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %*[{
|
||||
"id": requestId
|
||||
}]
|
||||
result = callPrivateRPC("verifiedTrusted".prefix, payload)
|
||||
|
||||
proc verifiedUntrustworthy*(pubkey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [pubkey]
|
||||
proc verifiedUntrustworthy*(requestId: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %*[{
|
||||
"id": requestId
|
||||
}]
|
||||
result = callPrivateRPC("verifiedUntrustworthy".prefix, payload)
|
||||
|
||||
proc removeTrustStatus*(pubkey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
|
@ -79,12 +83,12 @@ proc sendVerificationRequest*(pubkey: string, challenge: string): RpcResponse[Js
|
|||
let payload = %* [pubkey, challenge]
|
||||
result = callPrivateRPC("sendContactVerificationRequest".prefix, payload)
|
||||
|
||||
proc acceptVerificationRequest*(pubkey: string, response: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [pubkey, response]
|
||||
proc acceptVerificationRequest*(requestId: string, response: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [requestId, response]
|
||||
result = callPrivateRPC("acceptContactVerificationRequest".prefix, payload)
|
||||
|
||||
proc declineVerificationRequest*(pubkey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [pubkey]
|
||||
proc declineVerificationRequest*(requestId: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
let payload = %* [requestId]
|
||||
result = callPrivateRPC("declineContactVerificationRequest".prefix, payload)
|
||||
|
||||
proc getVerificationRequestSentTo*(pubkey: string): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||
|
|
Loading…
Reference in New Issue