Skip to content

Commit

Permalink
Limit maximum number of trackers per site
Browse files Browse the repository at this point in the history
Signed-off-by: Valerian Saliou <[email protected]>
  • Loading branch information
valeriansaliou committed Feb 1, 2018
1 parent 37f7b06 commit 7edb941
Showing 1 changed file with 30 additions and 15 deletions.
45 changes: 30 additions & 15 deletions src/responder/routes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ pub struct DashboardAccountContextPayout {
pub instructions: String,
}

const TRACKERS_PER_ACCOUNT_MAXIMUM: i64 = 100;

impl DashboardCommonContext {
fn build(db: &DbConn, user_id: i32) -> DashboardCommonContext {
DashboardCommonContext { balance_pending: get_balance_string(db, user_id, Some(false)) }
Expand Down Expand Up @@ -616,22 +618,35 @@ fn post_dashboard_trackers_form_create(
.take(10)
.collect::<String>();

let insert_result = diesel::insert_into(tracker)
.values((
&tracker_id.eq(&new_tracker_id),
&tracker_label.eq(&data_inner.name),
&tracker_account_id.eq(&auth.0),
&tracker_created_at.eq(&now_date),
&tracker_updated_at.eq(&now_date),
))
.execute(&*db);
let trackers_total = tracker
.filter(tracker_account_id.eq(auth.0))
.select(count(tracker_id))
.first(&*db)
.unwrap_or(0);

log::debug!(
"created tracker: {} named: {} for user_id: {}",
new_tracker_id,
data_inner.name,
auth.0
);
let insert_result = if trackers_total < TRACKERS_PER_ACCOUNT_MAXIMUM {
let result = diesel::insert_into(tracker)
.values((
&tracker_id.eq(&new_tracker_id),
&tracker_label.eq(&data_inner.name),
&tracker_account_id.eq(&auth.0),
&tracker_created_at.eq(&now_date),
&tracker_updated_at.eq(&now_date),
))
.execute(&*db)
.or(Err(()));

log::debug!(
"created tracker: {} named: {} for user_id: {}",
new_tracker_id,
data_inner.name,
auth.0
);

result
} else {
Err(())
};

Redirect::to(&format!(
"/dashboard/trackers/?result={}",
Expand Down

0 comments on commit 7edb941

Please sign in to comment.