Enhancement
Add coupon unlimited usage 0 is unlimited Add more logic to coupon brute force attack
This commit is contained in:
parent
8a36746a0f
commit
67a097fddf
@ -413,14 +413,23 @@ switch ($action) {
|
|||||||
|
|
||||||
if (!isset($_SESSION['coupon_attempts'])) {
|
if (!isset($_SESSION['coupon_attempts'])) {
|
||||||
$_SESSION['coupon_attempts'] = 0;
|
$_SESSION['coupon_attempts'] = 0;
|
||||||
|
$_SESSION['last_attempt_time'] = time();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_SESSION['coupon_attempts'] >= 5) {
|
if ($_SESSION['coupon_attempts'] >= 5) {
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Too many invalid attempts. Please try again later."));
|
$timeout = 10 * 60; // 10 minutes in seconds
|
||||||
|
$time_diff = time() - $_SESSION['last_attempt_time'];
|
||||||
|
|
||||||
|
if ($time_diff >= $timeout) {
|
||||||
|
$_SESSION['coupon_attempts'] = 0;
|
||||||
|
$_SESSION['last_attempt_time'] = time();
|
||||||
|
} else {
|
||||||
|
$remaining_time = ceil(($timeout - $time_diff) / 60);
|
||||||
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Too many invalid attempts. Please try again after $remaining_time minutes."));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_post('coupon')) {
|
if (_post('coupon')) {
|
||||||
|
|
||||||
if ($plan['routers'] === 'balance') {
|
if ($plan['routers'] === 'balance') {
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon not available for Balance"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon not available for Balance"));
|
||||||
}
|
}
|
||||||
@ -429,21 +438,27 @@ switch ($action) {
|
|||||||
|
|
||||||
if (!$coupon) {
|
if (!$coupon) {
|
||||||
$_SESSION['coupon_attempts']++;
|
$_SESSION['coupon_attempts']++;
|
||||||
|
$_SESSION['last_attempt_time'] = time();
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon not found"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon not found"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($coupon['status'] != 'active') {
|
if ($coupon['status'] != 'active') {
|
||||||
$_SESSION['coupon_attempts']++;
|
$_SESSION['coupon_attempts']++;
|
||||||
|
$_SESSION['last_attempt_time'] = time();
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon is not active"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon is not active"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset attempts after a successful coupon validation
|
||||||
|
$_SESSION['coupon_attempts'] = 0;
|
||||||
|
$_SESSION['last_attempt_time'] = time();
|
||||||
|
|
||||||
$today = date('Y-m-d');
|
$today = date('Y-m-d');
|
||||||
if ($today < $coupon['start_date'] || $today > $coupon['end_date']) {
|
if ($today < $coupon['start_date'] || $today > $coupon['end_date']) {
|
||||||
$_SESSION['coupon_attempts']++;
|
$_SESSION['coupon_attempts']++;
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon is not valid for today"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon is not valid for today"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($coupon['usage_count'] >= $coupon['max_usage']) {
|
if ($coupon['max_usage'] > 0 && $coupon['usage_count'] >= $coupon['max_usage']) {
|
||||||
$_SESSION['coupon_attempts']++;
|
$_SESSION['coupon_attempts']++;
|
||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon usage limit reached"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("Coupon usage limit reached"));
|
||||||
}
|
}
|
||||||
@ -453,8 +468,6 @@ switch ($action) {
|
|||||||
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("The order amount does not meet the minimum requirement for this coupon"));
|
r2($_SERVER['HTTP_REFERER'], 'e', Lang::T("The order amount does not meet the minimum requirement for this coupon"));
|
||||||
}
|
}
|
||||||
|
|
||||||
$_SESSION['coupon_attempts'] = 0;
|
|
||||||
|
|
||||||
// Calculate discount value
|
// Calculate discount value
|
||||||
$discount = 0;
|
$discount = 0;
|
||||||
switch ($coupon['type']) {
|
switch ($coupon['type']) {
|
||||||
@ -477,6 +490,7 @@ switch ($action) {
|
|||||||
$plan['price'] -= $discount;
|
$plan['price'] -= $discount;
|
||||||
$coupon->usage_count = $coupon['usage_count'] + 1;
|
$coupon->usage_count = $coupon['usage_count'] + 1;
|
||||||
$coupon->save();
|
$coupon->save();
|
||||||
|
|
||||||
$ui->assign('discount', $discount);
|
$ui->assign('discount', $discount);
|
||||||
$ui->assign('notify', Lang::T("Coupon applied successfully. You saved " . Lang::moneyFormat($discount)));
|
$ui->assign('notify', Lang::T("Coupon applied successfully. You saved " . Lang::moneyFormat($discount)));
|
||||||
$ui->assign('notify_t', 's');
|
$ui->assign('notify_t', 's');
|
||||||
|
@ -56,8 +56,8 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
|
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="number" class="form-control" name="max_usage" min="1" required>
|
<input type="number" class="form-control" name="max_usage" value="0" required>
|
||||||
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be used')}</small></p>
|
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be used 0 is Unlimited')}</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -56,9 +56,8 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
|
<label class="col-md-2 control-label">{Lang::T('Max Usage')}</label>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input type="number" class="form-control" name="max_usage" min="1" required value="{$coupon['max_usage']}">
|
<input type="number" class="form-control" name="max_usage" required value="{$coupon['max_usage']}">
|
||||||
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be
|
<p class="help-block"><small>{Lang::T('Maximum number of times this coupon can be used 0 is Unlimited')}</small></p>
|
||||||
used')}</small></p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user