diff --git a/system/controllers/login.php b/system/controllers/login.php index 8a491dd6..7b80deca 100644 --- a/system/controllers/login.php +++ b/system/controllers/login.php @@ -42,8 +42,97 @@ switch ($do) { break; + case 'activation': + $voucher = _post('voucher'); + $username = _post('username'); + $v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one(); + if ($v1) { + // coucher exists, check customer exists or not + $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); + if (!$user) { + $d = ORM::for_table('tbl_customers')->create(); + $d->username = alphanumeric($username, "+_."); + $d->password = $voucher; + $d->fullname = ''; + $d->address = ''; + $d->email = ''; + $d->phonenumber = (strlen($username) < 21) ? $username : ''; + if ($d->save()) { + $user = ORM::for_table('tbl_customers')->where('username', $username)->find_one($d->id()); + if (!$user) { + r2(U . 'login', 'e', Lang::T('Voucher activation failed')); + } + } else { + r2(U . 'login', 'e', Lang::T('Voucher activation failed').'.'); + } + } + if ($v1['status'] == 0) { + $oldPass = $user['password']; + // change customer password to voucher code + $user->password = $voucher; + $user->save(); + // voucher activation + if (Package::rechargeUser($user['id'], $v1['routers'], $v1['id_plan'], "Activation", "Voucher")) { + $v1->status = "1"; + $v1->user = $user['username']; + $v1->save(); + // add customer to mikrotik + if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { + $m = Mikrotik::info($v1['routers']); + $c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']); + Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']); + if(!empty($config['voucher_redirect'])){ + r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet")); + }else{ + r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet")); + } + } + if(!empty($config['voucher_redirect'])){ + r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login")); + }else{ + r2(U . "login", 's', Lang::T("Voucher activation success, now you can login")); + } + } else { + // if failed to recharge, restore old password + $user->password = $oldPass; + $user->save(); + r2(U . 'login', 'e', Lang::T("Failed to activate voucher")); + } + } else { + // used voucher + // check if voucher used by this username + if ($v1['user'] == $user['username']) { + if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { + $m = Mikrotik::info($v1['routers']); + $c = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']); + Mikrotik::logMeIn($c, $user['username'], $user['password'], $_SESSION['nux-ip'], $_SESSION['nux-mac']); + if(!empty($config['voucher_redirect'])){ + r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet")); + }else{ + r2(U . "login", 's', Lang::T("Voucher activation success, now you can login")); + } + }else{ + if(!empty($config['voucher_redirect'])){ + r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet")); + }else{ + r2(U . "login", 's', Lang::T("Voucher activation success, now you can login")); + } + } + } else { + // voucher used by other customer + r2(U . 'login', 'e', $_L['Voucher_Not_Valid']); + } + } + } else { + // voucher not found + r2(U . 'login', 'e', $_L['Voucher_Not_Valid']); + } default: run_hook('customer_view_login'); #HOOK - $ui->display('user-login.tpl'); + if($config['disable_registration']=='yes'){ + $ui->display('user-login-noreg.tpl'); + }else{ + $ui->display('user-login.tpl'); + } break; } diff --git a/system/controllers/settings.php b/system/controllers/settings.php index e49fca14..346d695d 100644 --- a/system/controllers/settings.php +++ b/system/controllers/settings.php @@ -243,27 +243,7 @@ switch ($action) { break; case 'app-post': - $company = _post('company'); - $footer = _post('footer'); - $enable_balance = _post('enable_balance'); - $allow_balance_transfer = _post('allow_balance_transfer'); - $disable_voucher = _post('disable_voucher'); - $telegram_bot = _post('telegram_bot'); - $telegram_target_id = _post('telegram_target_id'); - $sms_url = _post('sms_url'); - $wa_url = _post('wa_url'); - $minimum_transfer = _post('minimum_transfer'); - $user_notification_expired = _post('user_notification_expired'); - $user_notification_reminder = _post('user_notification_reminder'); - $user_notification_payment = _post('user_notification_payment'); - $address = _post('address'); - $tawkto = _post('tawkto'); - $http_proxy = _post('http_proxy'); - $http_proxyauth = _post('http_proxyauth'); - $radius_enable = _post('radius_enable'); - $radius_client = _post('radius_client'); - $theme = _post('theme'); - $voucher_format = _post('voucher_format'); + $company = _post('CompanyName'); run_hook('save_settings'); #HOOK @@ -279,206 +259,6 @@ switch ($action) { if ($company == '') { r2(U . 'settings/app', 'e', $_L['All_field_is_required']); } else { - $d = ORM::for_table('tbl_appconfig')->where('setting', 'CompanyName')->find_one(); - $d->value = $company; - $d->save(); - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'address')->find_one(); - $d->value = $address; - $d->save(); - - $phone = _post('phone'); - $d = ORM::for_table('tbl_appconfig')->where('setting', 'phone')->find_one(); - $d->value = $phone; - $d->save(); - - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'http_proxy')->find_one(); - if ($d) { - $d->value = $http_proxy; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'http_proxy'; - $d->value = $http_proxy; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'http_proxyauth')->find_one(); - if ($d) { - $d->value = $http_proxyauth; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'http_proxyauth'; - $d->value = $http_proxyauth; - $d->save(); - } - - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'theme')->find_one(); - if ($d) { - $d->value = $theme; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'theme'; - $d->value = $theme; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'CompanyFooter')->find_one(); - if ($d) { - $d->value = $footer; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'CompanyFooter'; - $d->value = $footer; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'voucher_format')->find_one(); - if ($d) { - $d->value = $voucher_format; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'voucher_format'; - $d->value = $voucher_format; - $d->save(); - } - $d = ORM::for_table('tbl_appconfig')->where('setting', 'disable_voucher')->find_one(); - if ($d) { - $d->value = $disable_voucher; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'disable_voucher'; - $d->value = $disable_voucher; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'enable_balance')->find_one(); - if ($d) { - $d->value = $enable_balance; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'enable_balance'; - $d->value = $enable_balance; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'allow_balance_transfer')->find_one(); - if ($d) { - $d->value = $allow_balance_transfer; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'allow_balance_transfer'; - $d->value = $allow_balance_transfer; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'minimum_transfer')->find_one(); - if ($d) { - $d->value = $minimum_transfer; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'minimum_transfer'; - $d->value = $minimum_transfer; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_bot')->find_one(); - if ($d) { - $d->value = $telegram_bot; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'telegram_bot'; - $d->value = $telegram_bot; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'telegram_target_id')->find_one(); - if ($d) { - $d->value = $telegram_target_id; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'telegram_target_id'; - $d->value = $telegram_target_id; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'sms_url')->find_one(); - if ($d) { - $d->value = $sms_url; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'sms_url'; - $d->value = $sms_url; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'wa_url')->find_one(); - if ($d) { - $d->value = $wa_url; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'wa_url'; - $d->value = $wa_url; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_expired')->find_one(); - if ($d) { - $d->value = $user_notification_expired; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'user_notification_expired'; - $d->value = $user_notification_expired; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_reminder')->find_one(); - if ($d) { - $d->value = $user_notification_reminder; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'user_notification_reminder'; - $d->value = $user_notification_reminder; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'user_notification_payment')->find_one(); - if ($d) { - $d->value = $user_notification_payment; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'user_notification_payment'; - $d->value = $user_notification_payment; - $d->save(); - } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'tawkto')->find_one(); - if ($d) { - $d->value = $tawkto; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'tawkto'; - $d->value = $tawkto; - $d->save(); - } if ($radius_enable) { try { Radius::getTableNas()->find_many(); @@ -491,34 +271,20 @@ switch ($action) { die(); } } - - $d = ORM::for_table('tbl_appconfig')->where('setting', 'radius_enable')->find_one(); - if ($d) { - $d->value = $radius_enable; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'radius_enable'; - $d->value = $radius_enable; - $d->save(); + // save all settings + foreach($_POST as $key => $value) { + $d = ORM::for_table('tbl_appconfig')->where('setting', $key)->find_one(); + if ($d) { + $d->value = $value; + $d->save(); + } else { + $d = ORM::for_table('tbl_appconfig')->create(); + $d->setting = $key; + $d->value = $value; + $d->save(); + } } - $d = ORM::for_table('tbl_appconfig')->where('setting', 'radius_client')->find_one(); - if ($d) { - $d->value = $radius_client; - $d->save(); - } else { - $d = ORM::for_table('tbl_appconfig')->create(); - $d->setting = 'radius_client'; - $d->value = $radius_client; - $d->save(); - } - - $note = _post('note'); - $d = ORM::for_table('tbl_appconfig')->where('setting', 'note')->find_one(); - $d->value = $note; - $d->save(); - _log('[' . $admin['username'] . ']: ' . $_L['Settings_Saved_Successfully'], 'Admin', $admin['id']); r2(U . 'settings/app', 's', $_L['Settings_Saved_Successfully']); diff --git a/system/lan/english/common.lan.php b/system/lan/english/common.lan.php index c4b03034..99ca4f10 100644 --- a/system/lan/english/common.lan.php +++ b/system/lan/english/common.lan.php @@ -413,3 +413,7 @@ $_L['Service_Type'] = 'Service Type'; $_L['Others'] = 'Others'; $_L['PPPoE'] = 'PPPoE'; $_L['Hotspot'] = 'Hotspot'; +$_L['Disable_Registration'] = 'Disable Registration'; +$_L['Customer_just_Login_with_Phone_number_and_Voucher_Code_Voucher_will_be_password'] = 'Customer just Login with Phone number and Voucher Code, Voucher will be password'; +$_L['Login__Activate_Voucher'] = 'Login / Activate Voucher'; +$_L['After_Customer_activate_voucher_or_login_customer_will_be_redirected_to_this_url'] = 'After Customer activate voucher or login, customer will be redirected to this url'; diff --git a/ui/ui/app-settings.tpl b/ui/ui/app-settings.tpl index e66a3a4d..f84b56f5 100644 --- a/ui/ui/app-settings.tpl +++ b/ui/ui/app-settings.tpl @@ -15,7 +15,7 @@ <div class="form-group"> <label class="col-md-2 control-label">{$_L['App_Name']}</label> <div class="col-md-6"> - <input type="text" required class="form-control" id="company" name="company" + <input type="text" required class="form-control" id="CompanyName" name="CompanyName" value="{$_c['CompanyName']}"> </div> <span class="help-block col-md-4">{$_L['App_Name_Help_Text']}</span> @@ -34,7 +34,7 @@ <div class="form-group"> <label class="col-md-2 control-label">{Lang::T('Company Footer')}</label> <div class="col-md-6"> - <input type="text" required class="form-control" id="footer" name="footer" + <input type="text" required class="form-control" id="CompanyFooter" name="CompanyFooter" value="{$_c['CompanyFooter']}"> </div> <span class="help-block col-md-4">{Lang::T('Will show below user pages')}</span> @@ -113,6 +113,33 @@ </div> <p class="help-block col-md-4">UPPERCASE lowercase RaNdoM</p> </div> + {if $_c['disable_voucher'] != 'yes'} + <div class="form-group"> + <label class="col-md-2 control-label">{Lang::T('Disable Registration')}</label> + <div class="col-md-6"> + <select name="disable_registration" id="disable_registration" class="form-control"> + <option value="no" {if $_c['disable_registration'] == 'no'}selected="selected" {/if}>No + </option> + <option value="yes" {if $_c['disable_registration'] == 'yes'}selected="selected" {/if}> + Yes + </option> + </select> + </div> + <p class="help-block col-md-4"> + {Lang::T('Customer just Login with Phone number and Voucher Code, Voucher will be password')} + </p> + </div> + <div class="form-group"> + <label class="col-md-2 control-label">Redirect after Activation</label> + <div class="col-md-6"> + <input type="text" class="form-control" id="voucher_redirect" name="voucher_redirect" + placeholder="https://192.168.88.1/status" value="{$voucher_redirect}"> + </div> + <p class="help-block col-md-4"> + {Lang::T('After Customer activate voucher or login, customer will be redirected to this url')} + </p> + </div> + {/if} </div> <div class="panel-heading"> <div class="btn-group pull-right"> @@ -198,7 +225,7 @@ </div> </div> <div class="form-group"> - <label class="col-md-2 control-label">Telegram Target ID</label> + <label class="col-md-2 control-label">Telegram User/Channel/Group ID</label> <div class="col-md-6"> <input type="text" class="form-control" id="telegram_target_id" name="telegram_target_id" value="{$_c['telegram_target_id']}" placeholder="12345678"> @@ -228,10 +255,12 @@ <div class="form-group"> <label class="col-md-2 control-label">Or use Mikrotik SMS</label> <div class="col-md-6"> - <select class="form-control" onchange="document.getElementById('sms_url').value = this.value"> + <select class="form-control" + onchange="document.getElementById('sms_url').value = this.value"> <option value="">Select Router</option> {foreach $r as $rs} - <option value="{$rs['name']}" {if $rs['name']==$_c['sms_url']}selected{/if}>{$rs['name']}</option> + <option value="{$rs['name']}" {if $rs['name']==$_c['sms_url']}selected{/if}> + {$rs['name']}</option> {/foreach} </select> </div> diff --git a/ui/ui/user-login-noreg.tpl b/ui/ui/user-login-noreg.tpl new file mode 100644 index 00000000..1dec6020 --- /dev/null +++ b/ui/ui/user-login-noreg.tpl @@ -0,0 +1,82 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> + <title>{$_title} - {$_L['Login']}</title> + <link rel="shortcut icon" href="ui/ui/images/logo.png" type="image/x-icon" /> + + <link rel="stylesheet" href="ui/ui/styles/bootstrap.min.css"> + <link rel="stylesheet" href="ui/ui/styles/adminlte.min.css"> + +</head> + +<body> + <div class="container"> + <div class="hidden-xs" style="height:150px"></div> + <div class="form-head mb20"> + <h1 class="site-logo h2 mb5 mt5 text-center text-uppercase text-bold" + style="text-shadow: 2px 2px 4px #757575;">{$_c['CompanyName']}</h1> + <hr> + </div> + {if isset($notify)} + <div class="row"> + <div class="col-sm-6 col-sm-offset-3"> + {$notify} + </div> + </div> + {/if} + <div class="row"> + <div class="col-sm-8"> + <div class="panel panel-info"> + <div class="panel-heading">{$_L['Announcement']}</div> + <div class="panel-body"> + {include file="$_path/../pages/Announcement.html"} + </div> + </div> + </div> + <div class="col-sm-4"> + <div class="panel panel-primary"> + <div class="panel-heading">{Lang::T('Login / Activate Voucher')}</div> + <div class="panel-body"> + <form action="{$_url}login/activation" method="post"> + <div class="form-group"> + <label>{$_L['Phone_Number']}</label> + <div class="input-group"> + {if $_c['country_code_phone']!= ''} + <span class="input-group-addon" id="basic-addon1">+</span> + {else} + <span class="input-group-addon" id="basic-addon1"><i + class="glyphicon glyphicon-phone-alt"></i></span> + {/if} + <input type="text" class="form-control" name="username" required + placeholder="08xxxxxxx"> + </div> + </div> + <div class="form-group"> + <label>{$_L['Enter_Voucher_Code']}</label> + <input type="text" class="form-control" name="voucher" required autocomplete="off" + placeholder="{$_L['Code_Voucher']}"> + </div> + <div class="btn-group btn-group-justified mb15"> + <div class="btn-group"> + <button type="submit" class="btn btn-primary">{Lang::T('Login / Activate Voucher')}</button> + </div> + </div> + <br> + <center> + <a href="./pages/Privacy_Policy.html" target="_blank">Privacy</a> + • + <a href="./pages/Terms_of_Conditions.html" target="_blank">ToC</a> + </center> + </form> + </div> + </div> + </div> + </div> + </div> + <script src="ui/ui/scripts/vendors.js"></script> +</body> + +</html> \ No newline at end of file