Allow password login when token gate is disabled

This commit is contained in:
silverpill 2022-11-16 17:21:42 +00:00
parent 6765674118
commit ec03476b58
2 changed files with 14 additions and 14 deletions

View file

@ -1,17 +1,15 @@
use web3::contract::Options;
use web3::{
contract::{Contract, Options},
transports::Http,
};
use super::contracts::ContractSet;
use super::errors::EthereumError;
use super::utils::parse_address;
pub async fn is_allowed_user(
contract_set: &ContractSet,
gate: &Contract<Http>,
user_address: &str,
) -> Result<bool, EthereumError> {
let gate = match &contract_set.gate {
Some(contract) => contract,
None => return Ok(true), // no gate
};
let user_address = parse_address(user_address)?;
let result: bool = gate.query(
"isAllowedUser", (user_address,),

View file

@ -147,13 +147,15 @@ pub async fn create_account(
};
if let Some(contract_set) = maybe_blockchain.as_ref() {
// Wallet address is required if blockchain integration is enabled
let wallet_address = maybe_wallet_address.as_ref()
.ok_or(ValidationError("wallet address is required"))?;
let is_allowed = is_allowed_user(contract_set, wallet_address).await
.map_err(|_| HttpError::InternalError)?;
if !is_allowed {
return Err(ValidationError("not allowed to sign up").into());
if let Some(ref gate) = contract_set.gate {
// Wallet address is required if token gate is present
let wallet_address = maybe_wallet_address.as_ref()
.ok_or(ValidationError("wallet address is required"))?;
let is_allowed = is_allowed_user(gate, wallet_address).await
.map_err(|_| HttpError::InternalError)?;
if !is_allowed {
return Err(ValidationError("not allowed to sign up").into());
};
};
};