use crate::models::{ProblemSummary, UserDetail};
pub struct PremiumGate;
impl PremiumGate {
pub fn can_access(problem: &ProblemSummary, user: Option<&UserDetail>) -> Result<(), String> {
if !problem.is_paid {
return Ok(());
}
match user {
Some(u) => {
if u.is_premium == Some(true) {
Ok(())
} else {
Err("This problem is premium. please subscribe to access it.".to_string())
}
}
None => Err(
"This problem is premium. please login to access it. (use `leetrs auth`)"
.to_string(),
),
}
}
}