Add config for sign up strategy
This commit is contained in:
		
							parent
							
								
									31b144c76d
								
							
						
					
					
						commit
						40efd73dfc
					
				@ -1,4 +1,5 @@
 | 
			
		||||
use crate::search::TokenizerKind as SearchTokenizer;
 | 
			
		||||
use crate::signups::Strategy as SignupStrategy;
 | 
			
		||||
use crate::smtp::{SMTP_PORT, SUBMISSIONS_PORT, SUBMISSION_PORT};
 | 
			
		||||
use rocket::config::Limits;
 | 
			
		||||
use rocket::Config as RocketConfig;
 | 
			
		||||
@ -16,6 +17,7 @@ pub struct Config {
 | 
			
		||||
    pub db_name: &'static str,
 | 
			
		||||
    pub db_max_size: Option<u32>,
 | 
			
		||||
    pub db_min_idle: Option<u32>,
 | 
			
		||||
    pub signup: SignupStrategy,
 | 
			
		||||
    pub search_index: String,
 | 
			
		||||
    pub search_tokenizers: SearchTokenizerConfig,
 | 
			
		||||
    pub rocket: Result<RocketConfig, InvalidRocketConfig>,
 | 
			
		||||
@ -362,6 +364,7 @@ lazy_static! {
 | 
			
		||||
            s.parse::<u32>()
 | 
			
		||||
                .expect("Couldn't parse DB_MIN_IDLE into u32")
 | 
			
		||||
        )),
 | 
			
		||||
        signup: var("SIGNUP").map_or(SignupStrategy::default(), |s| s.parse().unwrap()),
 | 
			
		||||
        #[cfg(feature = "postgres")]
 | 
			
		||||
        database_url: var("DATABASE_URL")
 | 
			
		||||
            .unwrap_or_else(|_| format!("postgres://plume:plume@localhost/{}", DB_NAME)),
 | 
			
		||||
 | 
			
		||||
@ -396,6 +396,7 @@ pub mod safe_string;
 | 
			
		||||
#[allow(unused_imports)]
 | 
			
		||||
pub mod schema;
 | 
			
		||||
pub mod search;
 | 
			
		||||
pub mod signups;
 | 
			
		||||
pub mod tags;
 | 
			
		||||
pub mod timeline;
 | 
			
		||||
pub mod users;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										45
									
								
								plume-models/src/signups.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								plume-models/src/signups.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
use std::fmt;
 | 
			
		||||
use std::str::FromStr;
 | 
			
		||||
 | 
			
		||||
pub enum Strategy {
 | 
			
		||||
    Password,
 | 
			
		||||
    Email,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl Default for Strategy {
 | 
			
		||||
    fn default() -> Self {
 | 
			
		||||
        Self::Password
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl FromStr for Strategy {
 | 
			
		||||
    type Err = StrategyError;
 | 
			
		||||
 | 
			
		||||
    fn from_str(s: &str) -> Result<Self, Self::Err> {
 | 
			
		||||
        use self::Strategy::*;
 | 
			
		||||
 | 
			
		||||
        match s {
 | 
			
		||||
            "password" => Ok(Password),
 | 
			
		||||
            "email" => Ok(Email),
 | 
			
		||||
            s => Err(StrategyError::Unsupported(s.to_string())),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
pub enum StrategyError {
 | 
			
		||||
    Unsupported(String),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl fmt::Display for StrategyError {
 | 
			
		||||
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
			
		||||
        use self::StrategyError::*;
 | 
			
		||||
 | 
			
		||||
        match self {
 | 
			
		||||
            // FIXME: Calc option strings from enum
 | 
			
		||||
            Unsupported(s) => write!(f, "Unsupported strategy: {}. Choose password or email", s),
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl std::error::Error for StrategyError {}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user