fix(@desktop/syncing): discard messages coming from waku if user didn't follow recover account path
Fixes: #11582
This commit is contained in:
parent
a2e6227117
commit
45c5a8d3c5
|
@ -372,9 +372,9 @@ proc setupKeychain(self: Controller, store: bool) =
|
||||||
else:
|
else:
|
||||||
singletonInstance.localAccountSettings.setStoreToKeychainValue(LS_VALUE_NEVER)
|
singletonInstance.localAccountSettings.setStoreToKeychainValue(LS_VALUE_NEVER)
|
||||||
|
|
||||||
proc setupAccount(self: Controller, accountId: string, storeToKeychain: bool) =
|
proc setupAccount(self: Controller, accountId: string, storeToKeychain: bool, recoverAccount: bool = false) =
|
||||||
self.delegate.moveToLoadingAppState()
|
self.delegate.moveToLoadingAppState()
|
||||||
let error = self.accountsService.setupAccount(accountId, self.tmpPassword, self.tmpDisplayName)
|
let error = self.accountsService.setupAccount(accountId, self.tmpPassword, self.tmpDisplayName, recoverAccount)
|
||||||
if error != "":
|
if error != "":
|
||||||
self.delegate.emitStartupError(error, StartupErrorType.SetupAccError)
|
self.delegate.emitStartupError(error, StartupErrorType.SetupAccError)
|
||||||
else:
|
else:
|
||||||
|
@ -388,9 +388,9 @@ proc storeGeneratedAccountAndLogin*(self: Controller, storeToKeychain: bool) =
|
||||||
let accountId = accounts[0].id
|
let accountId = accounts[0].id
|
||||||
self.setupAccount(accountId, storeToKeychain)
|
self.setupAccount(accountId, storeToKeychain)
|
||||||
|
|
||||||
proc storeImportedAccountAndLogin*(self: Controller, storeToKeychain: bool) =
|
proc storeImportedAccountAndLogin*(self: Controller, storeToKeychain: bool, recoverAccount: bool = false) =
|
||||||
let accountId = self.getImportedAccount().id
|
let accountId = self.getImportedAccount().id
|
||||||
self.setupAccount(accountId, storeToKeychain)
|
self.setupAccount(accountId, storeToKeychain, recoverAccount)
|
||||||
|
|
||||||
proc storeKeycardAccountAndLogin*(self: Controller, storeToKeychain: bool, newKeycard: bool) =
|
proc storeKeycardAccountAndLogin*(self: Controller, storeToKeychain: bool, newKeycard: bool) =
|
||||||
if self.importMnemonic():
|
if self.importMnemonic():
|
||||||
|
@ -406,7 +406,7 @@ proc storeKeycardAccountAndLogin*(self: Controller, storeToKeychain: bool, newKe
|
||||||
else:
|
else:
|
||||||
error "an error ocurred while importing mnemonic"
|
error "an error ocurred while importing mnemonic"
|
||||||
|
|
||||||
proc setupKeycardAccount*(self: Controller, storeToKeychain: bool, newKeycard: bool) =
|
proc setupKeycardAccount*(self: Controller, storeToKeychain: bool, newKeycard: bool, recoverAccount: bool = false) =
|
||||||
if self.tmpSeedPhrase.len > 0:
|
if self.tmpSeedPhrase.len > 0:
|
||||||
# if `tmpSeedPhrase` is not empty means user has recovered keycard via seed phrase
|
# if `tmpSeedPhrase` is not empty means user has recovered keycard via seed phrase
|
||||||
self.storeKeycardAccountAndLogin(storeToKeychain, newKeycard)
|
self.storeKeycardAccountAndLogin(storeToKeychain, newKeycard)
|
||||||
|
@ -420,7 +420,7 @@ proc setupKeycardAccount*(self: Controller, storeToKeychain: bool, newKeycard: b
|
||||||
self.delegate.storeDefaultKeyPairForNewKeycardUser()
|
self.delegate.storeDefaultKeyPairForNewKeycardUser()
|
||||||
else:
|
else:
|
||||||
self.syncKeycardBasedOnAppWalletStateAfterLogin()
|
self.syncKeycardBasedOnAppWalletStateAfterLogin()
|
||||||
self.accountsService.setupAccountKeycard(self.tmpKeycardEvent, self.tmpDisplayName, useImportedAcc = false)
|
self.accountsService.setupAccountKeycard(self.tmpKeycardEvent, self.tmpDisplayName, useImportedAcc = false, recoverAccount)
|
||||||
self.setupKeychain(storeToKeychain)
|
self.setupKeychain(storeToKeychain)
|
||||||
|
|
||||||
proc getOpenedAccounts*(self: Controller): seq[AccountDto] =
|
proc getOpenedAccounts*(self: Controller): seq[AccountDto] =
|
||||||
|
|
|
@ -19,13 +19,13 @@ method executePrimaryCommand*(self: BiometricsState, controller: Controller) =
|
||||||
elif self.flowType == FlowType.FirstRunOldUserImportSeedPhrase:
|
elif self.flowType == FlowType.FirstRunOldUserImportSeedPhrase:
|
||||||
## This should not be the correct call for this flow, this is an issue,
|
## This should not be the correct call for this flow, this is an issue,
|
||||||
## but since current implementation is like that and this is not a bug fixing issue, left as it is.
|
## but since current implementation is like that and this is not a bug fixing issue, left as it is.
|
||||||
controller.storeImportedAccountAndLogin(storeToKeychain)
|
controller.storeImportedAccountAndLogin(storeToKeychain, recoverAccount = true)
|
||||||
elif self.flowType == FlowType.FirstRunNewUserNewKeycardKeys:
|
elif self.flowType == FlowType.FirstRunNewUserNewKeycardKeys:
|
||||||
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
||||||
elif self.flowType == FlowType.FirstRunNewUserImportSeedPhraseIntoKeycard:
|
elif self.flowType == FlowType.FirstRunNewUserImportSeedPhraseIntoKeycard:
|
||||||
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
||||||
elif self.flowType == FlowType.FirstRunOldUserKeycardImport:
|
elif self.flowType == FlowType.FirstRunOldUserKeycardImport:
|
||||||
controller.setupKeycardAccount(storeToKeychain, newKeycard = false)
|
controller.setupKeycardAccount(storeToKeychain, newKeycard = false, recoverAccount = true)
|
||||||
elif self.flowType == FlowType.LostKeycardReplacement:
|
elif self.flowType == FlowType.LostKeycardReplacement:
|
||||||
self.storeToKeychain = storeToKeychain
|
self.storeToKeychain = storeToKeychain
|
||||||
controller.startLoginFlowAutomatically(controller.getPin())
|
controller.startLoginFlowAutomatically(controller.getPin())
|
||||||
|
@ -41,13 +41,13 @@ method executeSecondaryCommand*(self: BiometricsState, controller: Controller) =
|
||||||
elif self.flowType == FlowType.FirstRunOldUserImportSeedPhrase:
|
elif self.flowType == FlowType.FirstRunOldUserImportSeedPhrase:
|
||||||
## This should not be the correct call for this flow, this is an issue,
|
## This should not be the correct call for this flow, this is an issue,
|
||||||
## but since current implementation is like that and this is not a bug fixing issue, left as it is.
|
## but since current implementation is like that and this is not a bug fixing issue, left as it is.
|
||||||
controller.storeImportedAccountAndLogin(storeToKeychain)
|
controller.storeImportedAccountAndLogin(storeToKeychain, recoverAccount = true)
|
||||||
elif self.flowType == FlowType.FirstRunNewUserNewKeycardKeys:
|
elif self.flowType == FlowType.FirstRunNewUserNewKeycardKeys:
|
||||||
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
||||||
elif self.flowType == FlowType.FirstRunNewUserImportSeedPhraseIntoKeycard:
|
elif self.flowType == FlowType.FirstRunNewUserImportSeedPhraseIntoKeycard:
|
||||||
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
controller.storeKeycardAccountAndLogin(storeToKeychain, newKeycard = true)
|
||||||
elif self.flowType == FlowType.FirstRunOldUserKeycardImport:
|
elif self.flowType == FlowType.FirstRunOldUserKeycardImport:
|
||||||
controller.setupKeycardAccount(storeToKeychain, newKeycard = false)
|
controller.setupKeycardAccount(storeToKeychain, newKeycard = false, recoverAccount = true)
|
||||||
elif self.flowType == FlowType.LostKeycardReplacement:
|
elif self.flowType == FlowType.LostKeycardReplacement:
|
||||||
self.storeToKeychain = storeToKeychain
|
self.storeToKeychain = storeToKeychain
|
||||||
controller.startLoginFlowAutomatically(controller.getPin())
|
controller.startLoginFlowAutomatically(controller.getPin())
|
||||||
|
|
|
@ -411,14 +411,12 @@ var NODE_CONFIG* = %* {
|
||||||
"InfuraAPIKeySecret": INFURA_TOKEN_SECRET_RESOLVED,
|
"InfuraAPIKeySecret": INFURA_TOKEN_SECRET_RESOLVED,
|
||||||
"LoadAllTransfers": true,
|
"LoadAllTransfers": true,
|
||||||
},
|
},
|
||||||
"EnsConfig": {
|
|
||||||
"Enabled": true
|
|
||||||
},
|
|
||||||
"Networks": NETWORKS,
|
"Networks": NETWORKS,
|
||||||
"TorrentConfig": {
|
"TorrentConfig": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"Port": TORRENT_CONFIG_PORT,
|
"Port": TORRENT_CONFIG_PORT,
|
||||||
"DataDir": DEFAULT_TORRENT_CONFIG_DATADIR,
|
"DataDir": DEFAULT_TORRENT_CONFIG_DATADIR,
|
||||||
"TorrentDir": DEFAULT_TORRENT_CONFIG_TORRENTDIR
|
"TorrentDir": DEFAULT_TORRENT_CONFIG_TORRENTDIR
|
||||||
}
|
},
|
||||||
|
"OutputMessageCSVEnabled": false
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ logScope:
|
||||||
|
|
||||||
const PATHS = @[PATH_WALLET_ROOT, PATH_EIP_1581, PATH_WHISPER, PATH_DEFAULT_WALLET, PATH_ENCRYPTION]
|
const PATHS = @[PATH_WALLET_ROOT, PATH_EIP_1581, PATH_WHISPER, PATH_DEFAULT_WALLET, PATH_ENCRYPTION]
|
||||||
const ACCOUNT_ALREADY_EXISTS_ERROR* = "account already exists"
|
const ACCOUNT_ALREADY_EXISTS_ERROR* = "account already exists"
|
||||||
const output_csv {.booldefine.} = false
|
|
||||||
const KDF_ITERATIONS* {.intdefine.} = 256_000
|
const KDF_ITERATIONS* {.intdefine.} = 256_000
|
||||||
const DEFAULT_COLORID_FOR_DEFAULT_WALLET_ACCOUNT = "primary" # to match `CustomizationColor` on the go side
|
const DEFAULT_COLORID_FOR_DEFAULT_WALLET_ACCOUNT = "primary" # to match `CustomizationColor` on the go side
|
||||||
|
|
||||||
|
@ -68,7 +67,6 @@ QtObject:
|
||||||
tmpHashedPassword: string
|
tmpHashedPassword: string
|
||||||
tmpThumbnailImage: string
|
tmpThumbnailImage: string
|
||||||
tmpLargeImage: string
|
tmpLargeImage: string
|
||||||
tmpNodeCfg: JsonNode
|
|
||||||
|
|
||||||
proc delete*(self: Service) =
|
proc delete*(self: Service) =
|
||||||
self.QObject.delete
|
self.QObject.delete
|
||||||
|
@ -309,7 +307,7 @@ QtObject:
|
||||||
if(self.importedAccount.id == accountId):
|
if(self.importedAccount.id == accountId):
|
||||||
return self.prepareAccountSettingsJsonObject(self.importedAccount, installationId, displayName)
|
return self.prepareAccountSettingsJsonObject(self.importedAccount, installationId, displayName)
|
||||||
|
|
||||||
proc getDefaultNodeConfig*(self: Service, installationId: string): JsonNode =
|
proc getDefaultNodeConfig*(self: Service, installationId: string, recoverAccount: bool): JsonNode =
|
||||||
let fleet = Fleet.StatusProd
|
let fleet = Fleet.StatusProd
|
||||||
let dnsDiscoveryURL = @["enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@prod.nodes.status.im"]
|
let dnsDiscoveryURL = @["enrtree://AOGECG2SPND25EEFMAJ5WF3KSGJNSGV356DSTL2YVLLZWIV6SAYBM@prod.nodes.status.im"]
|
||||||
|
|
||||||
|
@ -340,8 +338,15 @@ QtObject:
|
||||||
result["ClusterConfig"]["DiscV5BootstrapNodes"] = %* (@[])
|
result["ClusterConfig"]["DiscV5BootstrapNodes"] = %* (@[])
|
||||||
result["Rendezvous"] = newJBool(false)
|
result["Rendezvous"] = newJBool(false)
|
||||||
|
|
||||||
|
# Source the connection port from the environment for debugging or if default port not accessible
|
||||||
|
if existsEnv("STATUS_PORT"):
|
||||||
|
let wV1Port = $getEnv("STATUS_PORT")
|
||||||
|
# Waku V1 config
|
||||||
|
result["ListenAddr"] = newJString("0.0.0.0:" & wV1Port)
|
||||||
|
|
||||||
result["KeyStoreDir"] = newJString(self.keyStoreDir.replace(main_constants.STATUSGODIR, ""))
|
result["KeyStoreDir"] = newJString(self.keyStoreDir.replace(main_constants.STATUSGODIR, ""))
|
||||||
result["RootDataDir"] = newJString(main_constants.STATUSGODIR)
|
result["RootDataDir"] = newJString(main_constants.STATUSGODIR)
|
||||||
|
result["ProcessBackedupMessages"] = newJBool(recoverAccount)
|
||||||
|
|
||||||
proc setLocalAccountSettingsFile(self: Service) =
|
proc setLocalAccountSettingsFile(self: Service) =
|
||||||
if(main_constants.IS_MACOS and self.getLoggedInAccount.isValid()):
|
if(main_constants.IS_MACOS and self.getLoggedInAccount.isValid()):
|
||||||
|
@ -361,14 +366,14 @@ QtObject:
|
||||||
if not accountData.isNil:
|
if not accountData.isNil:
|
||||||
accountData["keycard-pairing"] = kcDataObj{"key"}
|
accountData["keycard-pairing"] = kcDataObj{"key"}
|
||||||
|
|
||||||
proc setupAccount*(self: Service, accountId, password, displayName: string): string =
|
proc setupAccount*(self: Service, accountId, password, displayName: string, recoverAccount: bool = false): string =
|
||||||
try:
|
try:
|
||||||
let installationId = $genUUID()
|
let installationId = $genUUID()
|
||||||
var accountDataJson = self.getAccountDataForAccountId(accountId, displayName)
|
var accountDataJson = self.getAccountDataForAccountId(accountId, displayName)
|
||||||
self.setKeyStoreDir(accountDataJson{"key-uid"}.getStr) # must be called before `getDefaultNodeConfig`
|
self.setKeyStoreDir(accountDataJson{"key-uid"}.getStr) # must be called before `getDefaultNodeConfig`
|
||||||
let subaccountDataJson = self.getSubaccountDataForAccountId(accountId, displayName)
|
let subaccountDataJson = self.getSubaccountDataForAccountId(accountId, displayName)
|
||||||
var settingsJson = self.getAccountSettings(accountId, installationId, displayName)
|
var settingsJson = self.getAccountSettings(accountId, installationId, displayName)
|
||||||
let nodeConfigJson = self.getDefaultNodeConfig(installationId)
|
let nodeConfigJson = self.getDefaultNodeConfig(installationId, recoverAccount)
|
||||||
|
|
||||||
if(accountDataJson.isNil or subaccountDataJson.isNil or settingsJson.isNil or
|
if(accountDataJson.isNil or subaccountDataJson.isNil or settingsJson.isNil or
|
||||||
nodeConfigJson.isNil):
|
nodeConfigJson.isNil):
|
||||||
|
@ -395,7 +400,8 @@ QtObject:
|
||||||
error "error: ", procName="setupAccount", errName = e.name, errDesription = e.msg
|
error "error: ", procName="setupAccount", errName = e.name, errDesription = e.msg
|
||||||
return e.msg
|
return e.msg
|
||||||
|
|
||||||
proc setupAccountKeycard*(self: Service, keycardData: KeycardEvent, displayName: string, useImportedAcc: bool) =
|
proc setupAccountKeycard*(self: Service, keycardData: KeycardEvent, displayName: string, useImportedAcc: bool,
|
||||||
|
recoverAccount: bool = false) =
|
||||||
try:
|
try:
|
||||||
var keyUid = keycardData.keyUid
|
var keyUid = keycardData.keyUid
|
||||||
var address = keycardData.masterKey.address
|
var address = keycardData.masterKey.address
|
||||||
|
@ -434,7 +440,7 @@ QtObject:
|
||||||
}
|
}
|
||||||
|
|
||||||
self.setKeyStoreDir(keyUid)
|
self.setKeyStoreDir(keyUid)
|
||||||
let nodeConfigJson = self.getDefaultNodeConfig(installationId)
|
let nodeConfigJson = self.getDefaultNodeConfig(installationId, recoverAccount)
|
||||||
let subaccountDataJson = %* [
|
let subaccountDataJson = %* [
|
||||||
{
|
{
|
||||||
"public-key": walletPublicKey,
|
"public-key": walletPublicKey,
|
||||||
|
@ -606,9 +612,16 @@ QtObject:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error "error: ", procName="verifyDatabasePassword", errName = e.name, errDesription = e.msg
|
error "error: ", procName="verifyDatabasePassword", errName = e.name, errDesription = e.msg
|
||||||
|
|
||||||
proc doLogin(self: Service, account: AccountDto, hashedPassword, thumbnailImage, largeImage: string, nodeCfg: JsonNode) =
|
proc doLogin(self: Service, account: AccountDto, hashedPassword, thumbnailImage, largeImage: string) =
|
||||||
|
let nodeConfigJson = self.getDefaultNodeConfig(installationId = "", recoverAccount = false)
|
||||||
let response = status_account.login(
|
let response = status_account.login(
|
||||||
account.name, account.keyUid, account.kdfIterations, hashedPassword, thumbnailImage, largeImage, $nodeCfg
|
account.name,
|
||||||
|
account.keyUid,
|
||||||
|
account.kdfIterations,
|
||||||
|
hashedPassword,
|
||||||
|
thumbnailImage,
|
||||||
|
largeImage,
|
||||||
|
$nodeConfigJson
|
||||||
)
|
)
|
||||||
if response.result{"error"}.getStr != "":
|
if response.result{"error"}.getStr != "":
|
||||||
self.events.emit(SIGNAL_LOGIN_ERROR, LoginErrorArgs(error: response.result{"error"}.getStr))
|
self.events.emit(SIGNAL_LOGIN_ERROR, LoginErrorArgs(error: response.result{"error"}.getStr))
|
||||||
|
@ -636,61 +649,6 @@ QtObject:
|
||||||
}, hashedPassword, main_constants.ROOTKEYSTOREDIR, keyStoreDir)
|
}, hashedPassword, main_constants.ROOTKEYSTOREDIR, keyStoreDir)
|
||||||
|
|
||||||
self.setKeyStoreDir(account.keyUid)
|
self.setKeyStoreDir(account.keyUid)
|
||||||
# This is moved from `status-lib` here
|
|
||||||
# TODO:
|
|
||||||
# If you added a new value in the nodeconfig in status-go, old accounts will not have this value, since the node config
|
|
||||||
# is stored in the database, and it's not easy to migrate using .sql
|
|
||||||
# While this is fixed, you can add here any missing attribute on the node config, and it will be merged with whatever
|
|
||||||
# the account has in the db
|
|
||||||
var nodeCfg = %* {
|
|
||||||
"KeyStoreDir": self.keyStoreDir.replace(main_constants.STATUSGODIR, ""),
|
|
||||||
"ShhextConfig": %* {
|
|
||||||
"BandwidthStatsEnabled": true
|
|
||||||
},
|
|
||||||
"Web3ProviderConfig": %* {
|
|
||||||
"Enabled": true
|
|
||||||
},
|
|
||||||
"EnsConfig": %* {
|
|
||||||
"Enabled": true
|
|
||||||
},
|
|
||||||
"WalletConfig": {
|
|
||||||
"Enabled": true,
|
|
||||||
"OpenseaAPIKey": OPENSEA_API_KEY_RESOLVED,
|
|
||||||
"AlchemyAPIKeys": %* {
|
|
||||||
"42161": ALCHEMY_ARBITRUM_MAINNET_TOKEN_RESOLVED,
|
|
||||||
"421613": ALCHEMY_ARBITRUM_GOERLI_TOKEN_RESOLVED,
|
|
||||||
"10": ALCHEMY_OPTIMISM_MAINNET_TOKEN_RESOLVED,
|
|
||||||
"420": ALCHEMY_OPTIMISM_GOERLI_TOKEN_RESOLVED
|
|
||||||
},
|
|
||||||
"InfuraAPIKey": INFURA_TOKEN_RESOLVED,
|
|
||||||
"InfuraAPIKeySecret": INFURA_TOKEN_SECRET_RESOLVED,
|
|
||||||
"LoadAllTransfers": true
|
|
||||||
},
|
|
||||||
"TorrentConfig": {
|
|
||||||
"Enabled": false,
|
|
||||||
"DataDir": DEFAULT_TORRENT_CONFIG_DATADIR,
|
|
||||||
"TorrentDir": DEFAULT_TORRENT_CONFIG_TORRENTDIR,
|
|
||||||
"Port": TORRENT_CONFIG_PORT
|
|
||||||
},
|
|
||||||
"Networks": NETWORKS,
|
|
||||||
"OutputMessageCSVEnabled": output_csv
|
|
||||||
}
|
|
||||||
|
|
||||||
# Source the connection port from the environment for debugging or if default port not accessible
|
|
||||||
if existsEnv("STATUS_PORT"):
|
|
||||||
let wV1Port = $getEnv("STATUS_PORT")
|
|
||||||
# Waku V1 config
|
|
||||||
nodeCfg["ListenAddr"] = newJString("0.0.0.0:" & wV1Port)
|
|
||||||
|
|
||||||
if TEST_PEER_ENR != "":
|
|
||||||
nodeCfg["Rendezvous"] = newJBool(false)
|
|
||||||
nodeCfg["ClusterConfig"] = %* {
|
|
||||||
"BootNodes": @[TEST_PEER_ENR],
|
|
||||||
"TrustedMailServers": @[TEST_PEER_ENR],
|
|
||||||
"StaticNodes": @[TEST_PEER_ENR],
|
|
||||||
"RendezvousNodes": @[],
|
|
||||||
"DiscV5BootstrapNodes": @[]
|
|
||||||
}
|
|
||||||
|
|
||||||
let isOldHashPassword = self.verifyDatabasePassword(account.keyUid, hashedPasswordToUpperCase(hashedPassword))
|
let isOldHashPassword = self.verifyDatabasePassword(account.keyUid, hashedPasswordToUpperCase(hashedPassword))
|
||||||
if isOldHashPassword:
|
if isOldHashPassword:
|
||||||
|
@ -699,7 +657,6 @@ QtObject:
|
||||||
self.tmpHashedPassword = hashedPassword
|
self.tmpHashedPassword = hashedPassword
|
||||||
self.tmpThumbnailImage = thumbnailImage
|
self.tmpThumbnailImage = thumbnailImage
|
||||||
self.tmpLargeImage = largeImage
|
self.tmpLargeImage = largeImage
|
||||||
self.tmpNodeCfg = nodeCfg
|
|
||||||
|
|
||||||
# Start a 1 second timer for the loading screen to appear
|
# Start a 1 second timer for the loading screen to appear
|
||||||
let arg = TimerTaskArg(
|
let arg = TimerTaskArg(
|
||||||
|
@ -711,7 +668,7 @@ QtObject:
|
||||||
self.threadpool.start(arg)
|
self.threadpool.start(arg)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.doLogin(account, hashedPassword, thumbnailImage, largeImage, nodeCfg)
|
self.doLogin(account, hashedPassword, thumbnailImage, largeImage)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error "error: ", procName="login", errName = e.name, errDesription = e.msg
|
error "error: ", procName="login", errName = e.name, errDesription = e.msg
|
||||||
self.events.emit(SIGNAL_LOGIN_ERROR, LoginErrorArgs(error: e.msg))
|
self.events.emit(SIGNAL_LOGIN_ERROR, LoginErrorArgs(error: e.msg))
|
||||||
|
@ -722,14 +679,13 @@ QtObject:
|
||||||
discard status_privacy.changeDatabaseHashedPassword(self.tmpAccount.keyUid, oldHashedPassword, self.tmpHashedPassword)
|
discard status_privacy.changeDatabaseHashedPassword(self.tmpAccount.keyUid, oldHashedPassword, self.tmpHashedPassword)
|
||||||
|
|
||||||
# Normal login after reencryption
|
# Normal login after reencryption
|
||||||
self.doLogin(self.tmpAccount, self.tmpHashedPassword, self.tmpThumbnailImage, self.tmpLargeImage, self.tmpNodeCfg)
|
self.doLogin(self.tmpAccount, self.tmpHashedPassword, self.tmpThumbnailImage, self.tmpLargeImage)
|
||||||
|
|
||||||
# Clear out the temp properties
|
# Clear out the temp properties
|
||||||
self.tmpAccount = AccountDto()
|
self.tmpAccount = AccountDto()
|
||||||
self.tmpHashedPassword = ""
|
self.tmpHashedPassword = ""
|
||||||
self.tmpThumbnailImage = ""
|
self.tmpThumbnailImage = ""
|
||||||
self.tmpLargeImage = ""
|
self.tmpLargeImage = ""
|
||||||
self.tmpNodeCfg = JsonNode()
|
|
||||||
|
|
||||||
proc loginAccountKeycard*(self: Service, accToBeLoggedIn: AccountDto, keycardData: KeycardEvent): string =
|
proc loginAccountKeycard*(self: Service, accToBeLoggedIn: AccountDto, keycardData: KeycardEvent): string =
|
||||||
try:
|
try:
|
||||||
|
@ -739,9 +695,12 @@ QtObject:
|
||||||
"key-uid": accToBeLoggedIn.keyUid,
|
"key-uid": accToBeLoggedIn.keyUid,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let nodeConfigJson = self.getDefaultNodeConfig(installationId = "", recoverAccount = false)
|
||||||
|
|
||||||
let response = status_account.loginWithKeycard(keycardData.whisperKey.privateKey,
|
let response = status_account.loginWithKeycard(keycardData.whisperKey.privateKey,
|
||||||
keycardData.encryptionKey.publicKey,
|
keycardData.encryptionKey.publicKey,
|
||||||
accountDataJson)
|
accountDataJson,
|
||||||
|
nodeConfigJson)
|
||||||
|
|
||||||
var error = "response doesn't contain \"error\""
|
var error = "response doesn't contain \"error\""
|
||||||
if(response.result.contains("error")):
|
if(response.result.contains("error")):
|
||||||
|
|
|
@ -215,7 +215,7 @@ QtObject:
|
||||||
|
|
||||||
proc inputConnectionStringForBootstrapping*(self: Service, connectionString: string): string =
|
proc inputConnectionStringForBootstrapping*(self: Service, connectionString: string): string =
|
||||||
let installationId = $genUUID()
|
let installationId = $genUUID()
|
||||||
let nodeConfigJson = self.accountsService.getDefaultNodeConfig(installationId)
|
let nodeConfigJson = self.accountsService.getDefaultNodeConfig(installationId, recoverAccount = false)
|
||||||
let configJSON = %* {
|
let configJSON = %* {
|
||||||
"receiverConfig": %* {
|
"receiverConfig": %* {
|
||||||
"keystorePath": main_constants.ROOTKEYSTOREDIR,
|
"keystorePath": main_constants.ROOTKEYSTOREDIR,
|
||||||
|
|
|
@ -384,9 +384,9 @@ proc login*(name, keyUid: string, kdfIterations: int, hashedPassword, thumbnail,
|
||||||
error "error doing rpc request", methodName = "login", exception=e.msg
|
error "error doing rpc request", methodName = "login", exception=e.msg
|
||||||
raise newException(RpcException, e.msg)
|
raise newException(RpcException, e.msg)
|
||||||
|
|
||||||
proc loginWithKeycard*(chatKey, password: string, account: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
|
proc loginWithKeycard*(chatKey, password: string, account, confNode: JsonNode): RpcResponse[JsonNode] {.raises: [Exception].} =
|
||||||
try:
|
try:
|
||||||
let response = status_go.loginWithKeycard($account, password, chatKey)
|
let response = status_go.loginWithKeycard($account, password, chatKey, $confNode)
|
||||||
result.result = Json.decode(response, JsonNode)
|
result.result = Json.decode(response, JsonNode)
|
||||||
except RpcException as e:
|
except RpcException as e:
|
||||||
error "error doing rpc request", methodName = "loginWithKeycard", exception=e.msg
|
error "error doing rpc request", methodName = "loginWithKeycard", exception=e.msg
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 934096fe3f3ffb3478d6aaac1a775f75abded0a6
|
Subproject commit 0a0b5f0f320a7ed3adf53218e5b18fc41d0fbef0
|
|
@ -1 +1 @@
|
||||||
Subproject commit 631962ce88b7f8ba6226f49066f823007726c4cf
|
Subproject commit 7c72d5ec99a4493d4cd9c3c47d9432132934a5ad
|
Loading…
Reference in New Issue