Allow password login when token gate is disabled
This commit is contained in:
parent
6765674118
commit
ec03476b58
2 changed files with 14 additions and 14 deletions
|
@ -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,),
|
||||
|
|
|
@ -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());
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue