add: stack block limits
This commit is contained in:
parent
b71ae1f5a4
commit
0310418837
2 changed files with 25 additions and 1 deletions
|
@ -579,7 +579,9 @@
|
||||||
(li
|
(li
|
||||||
(text "Ability to create forges"))
|
(text "Ability to create forges"))
|
||||||
(li
|
(li
|
||||||
(text "Ability to create more than 1 app")))
|
(text "Ability to create more than 1 app"))
|
||||||
|
(li
|
||||||
|
(text "Create up to 10 stack blocks")))
|
||||||
(a
|
(a
|
||||||
("href" "{{ config.stripe.payment_link }}?client_reference_id={{ user.id }}")
|
("href" "{{ config.stripe.payment_link }}?client_reference_id={{ user.id }}")
|
||||||
("class" "button")
|
("class" "button")
|
||||||
|
|
|
@ -112,12 +112,34 @@ impl DataManager {
|
||||||
Ok(res.unwrap())
|
Ok(res.unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const MAXIMUM_FREE_STACKBLOCKS: usize = 5;
|
||||||
|
const MAXIMUM_SUPPORTER_STACKBLOCKS: usize = 10;
|
||||||
|
|
||||||
/// Create a new stack block in the database.
|
/// Create a new stack block in the database.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
/// * `data` - a mock [`StackBlock`] object to insert
|
/// * `data` - a mock [`StackBlock`] object to insert
|
||||||
pub async fn create_stackblock(&self, data: StackBlock) -> Result<()> {
|
pub async fn create_stackblock(&self, data: StackBlock) -> Result<()> {
|
||||||
let initiator = self.get_user_by_id(data.initiator).await?;
|
let initiator = self.get_user_by_id(data.initiator).await?;
|
||||||
|
|
||||||
|
// check number of stackblocks
|
||||||
|
let stackblocks = self.get_stackblocks_by_initiator(data.initiator).await;
|
||||||
|
|
||||||
|
if !initiator.permissions.check(FinePermission::SUPPORTER) {
|
||||||
|
if stackblocks.len() >= Self::MAXIMUM_FREE_STACKBLOCKS {
|
||||||
|
return Err(Error::MiscError(
|
||||||
|
"You already have the maximum number of stack blocks you can have".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if stackblocks.len() >= Self::MAXIMUM_SUPPORTER_STACKBLOCKS {
|
||||||
|
return Err(Error::MiscError(
|
||||||
|
"You already have the maximum number of stack blocks you can have".to_string(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ...
|
||||||
let stack = self.get_stack_by_id(data.stack).await?;
|
let stack = self.get_stack_by_id(data.stack).await?;
|
||||||
|
|
||||||
if initiator.id != stack.owner
|
if initiator.id != stack.owner
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue