diff --git a/pages_template/Email.html b/pages_template/Email.html index 8979a620..f58869aa 100644 --- a/pages_template/Email.html +++ b/pages_template/Email.html @@ -138,8 +138,9 @@ +

[[Company_Address]] + style="color: #9a9ea6; font-size: 16px; text-align: center;">[[Company_Address]]

diff --git a/system/autoload/Package.php b/system/autoload/Package.php index a04d5e6d..3883a8e8 100644 --- a/system/autoload/Package.php +++ b/system/autoload/Package.php @@ -44,8 +44,12 @@ class Package _alert(Lang::T('This account status') . ' : ' . Lang::T($c['status']), 'danger', ""); } }else{ - $c['username'] = $channel; - $c['fullname'] = $gateway; + $c = [ + 'fullname' => $gateway, + 'email' => '', + 'username' => $channel, + 'password' => $channel, + ]; } $add_cost = 0; @@ -146,7 +150,8 @@ class Package /** * 1 Customer only can have 1 PPPOE and 1 Hotspot Plan, 1 prepaid and 1 postpaid */ - $b = ORM::for_table('tbl_user_recharges') + + $query = ORM::for_table('tbl_user_recharges') ->select('tbl_user_recharges.id', 'id') ->select('customer_id') ->select('username') @@ -162,14 +167,18 @@ class Package ->select('tbl_user_recharges.type', 'type') ->select('admin_id') ->select('prepaid') - ->where('customer_id', $id_customer) ->where('tbl_user_recharges.routers', $router_name) ->where('tbl_user_recharges.Type', $p['type']) # PPPOE or Hotspot only can have 1 per customer prepaid or postpaid # because 1 customer can have 1 PPPOE and 1 Hotspot Plan in mikrotik //->where('prepaid', $p['prepaid']) - ->left_outer_join('tbl_plans', array('tbl_plans.id', '=', 'tbl_user_recharges.plan_id')) - ->find_one(); + ->left_outer_join('tbl_plans', array('tbl_plans.id', '=', 'tbl_user_recharges.plan_id')); + if($isVoucher){ + $query->where('username', $c['username']); + }else{ + $query->where('customer_id', $id_customer); + } + $b = $query->find_one(); run_hook("recharge_user"); diff --git a/system/controllers/login.php b/system/controllers/login.php index 9190a2b3..c931e5c6 100644 --- a/system/controllers/login.php +++ b/system/controllers/login.php @@ -56,134 +56,235 @@ switch ($do) { break; case 'activation': - $voucher = _post('voucher'); - $username = _post('username'); - $v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one(); - if ($v1) { - // voucher 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 { - _alert(Lang::T('Login Successful'), 'success', "dashboard"); - r2(U . 'login', 'e', Lang::T('Voucher activation failed') . '.'); + if (!empty(_post('voucher_only'))) { + $voucher = _post('voucher_only'); + $tur = ORM::for_table('tbl_user_recharges') + ->where('username', $voucher) + ->where('customer_id', '0') // Voucher Only will make customer ID as 0 + ->find_one(); + if ($tur) { + if ($tur['status'] == 'off') { + _alert(Lang::T('Internet Voucher Expired'), 'danger', "login"); } - } - 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'], "Voucher", $voucher)) { - $v1->status = "1"; - $v1->user = $user['username']; - $v1->save(); - $user->last_login = date('Y-m-d H:i:s'); - $user->save(); - // add customer to mikrotik - if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { - try { - $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one(); - $dvc = Package::getDevice($p); - if ($_app_stage != 'demo') { - if (file_exists($dvc)) { - require_once $dvc; - (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']); - 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 { - new Exception(Lang::T("Devices Not Found")); - } - } - if (!empty($config['voucher_redirect'])) { - r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, you are connected to internet")); + $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one(); + if ($p) { + $dvc = Package::getDevice($p); + if ($_app_stage != 'demo') { + if (file_exists($dvc)) { + if (file_exists($dvc)) { + require_once $dvc; + $c = [ + 'fullname' => "Voucher", + 'email' => '', + 'username' => $voucher, + 'password' => $voucher, + ]; + (new $p['device'])->add_customer($c, $p); } else { - r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet")); + new Exception(Lang::T("Devices Not Found")); } - } catch (Exception $e) { 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 { + new Exception(Lang::T("Devices Not Found")); } } if (!empty($config['voucher_redirect'])) { - r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login")); + _alert(Lang::T("Voucher activation success, now you can login"), 'danger', $config['voucher_redirect']); } else { - r2(U . "login", 's', Lang::T("Voucher activation success, now you can login")); + r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet")); } } else { - // if failed to recharge, restore old password - $user->password = $oldPass; - $user->save(); - r2(U . 'login', 'e', Lang::T("Failed to activate voucher")); + _alert(Lang::T('Internet Plan Expired'), 'danger', "login"); } } else { - // used voucher - // check if voucher used by this username - if ($v1['user'] == $user['username']) { - $user->last_login = date('Y-m-d H:i:s'); - $user->save(); - if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { - try { - $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one(); - $dvc = Package::getDevice($p); - if ($_app_stage != 'demo') { - if (file_exists($dvc)) { - require_once $dvc; - (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']); - if (!empty($config['voucher_redirect'])) { - r2($config['voucher_redirect'], 's', Lang::T("Voucher activation success, now you can login")); + $v = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one(); + if (!$v) { + _alert(Lang::T('Voucher invalid'), 'danger', "login"); + } + if ($v['status'] == 0) { + if (Package::rechargeUser(0, $v['routers'], $v['id_plan'], "Voucher", $voucher)) { + $v->status = "1"; + $v->save(); + $tur = ORM::for_table('tbl_user_recharges')->where('username', $voucher)->find_one(); + if ($tur) { + $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one(); + if ($p) { + $dvc = Package::getDevice($p); + if ($_app_stage != 'demo') { + if (file_exists($dvc)) { + if (file_exists($dvc)) { + require_once $dvc; + $c = [ + 'fullname' => "Voucher", + 'email' => '', + 'username' => $voucher, + 'password' => $voucher, + ]; + (new $p['device'])->add_customer($c, $p); + } else { + new Exception(Lang::T("Devices Not Found")); + } + 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 { - r2(U . "login", 's', Lang::T("Voucher activation success, now you can login")); + new Exception(Lang::T("Devices Not Found")); } + } + if (!empty($config['voucher_redirect'])) { + _alert(Lang::T("Voucher activation success, now you can login"), 'danger', $config['voucher_redirect']); } else { - new Exception(Lang::T("Devices Not Found")); + r2(U . "login", 's', Lang::T("Voucher activation success, you are connected to internet")); + } + } else { + _alert(Lang::T('Internet Plan Expired'), 'danger', "login"); + } + } else { + _alert(Lang::T('Voucher activation failed'), 'danger', "login"); + } + } else { + _alert(Lang::T('Voucher activation failed'), 'danger', "login"); + } + } else { + _alert(Lang::T('Internet Voucher Expired'), 'danger', "login"); + } + } + } else { + $voucher = _post('voucher'); + $username = _post('username'); + $v1 = ORM::for_table('tbl_voucher')->where('code', $voucher)->find_one(); + if ($v1) { + // voucher 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 { + _alert(Lang::T('Login Successful'), 'success', "dashboard"); + 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'], "Voucher", $voucher)) { + $v1->status = "1"; + $v1->user = $user['username']; + $v1->save(); + $user->last_login = date('Y-m-d H:i:s'); + $user->save(); + // add customer to mikrotik + if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { + try { + $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one(); + $dvc = Package::getDevice($p); + if ($_app_stage != 'demo') { + if (file_exists($dvc)) { + require_once $dvc; + (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']); + 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 { + new Exception(Lang::T("Devices Not Found")); + } + } + 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")); + } + } catch (Exception $e) { + 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")); } } + } + 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']) { + $user->last_login = date('Y-m-d H:i:s'); + $user->save(); + if (!empty($_SESSION['nux-mac']) && !empty($_SESSION['nux-ip'])) { + try { + $p = ORM::for_table('tbl_plans')->where('id', $v1['id_plan'])->find_one(); + $dvc = Package::getDevice($p); + if ($_app_stage != 'demo') { + if (file_exists($dvc)) { + require_once $dvc; + (new $p['device'])->connect_customer($user, $_SESSION['nux-ip'], $_SESSION['nux-mac'], $v1['routers']); + 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 { + new Exception(Lang::T("Devices Not Found")); + } + } + 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")); + } + } catch (Exception $e) { + 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 (!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")); } - } catch (Exception $e) { - 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 (!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")); - } + // voucher used by other customer + r2(U . 'login', 'e', Lang::T('Voucher Not Valid')); } - } else { - // voucher used by other customer - r2(U . 'login', 'e', Lang::T('Voucher Not Valid')); } + } else { + _msglog('e', Lang::T('Invalid Username or Password')); + r2(U . 'login'); } - } else { - _msglog('e', Lang::T('Invalid Username or Password')); - r2(U . 'login'); } default: run_hook('customer_view_login'); #HOOK diff --git a/system/lan/english.json b/system/lan/english.json index d37266f4..a8dfe950 100644 --- a/system/lan/english.json +++ b/system/lan/english.json @@ -653,7 +653,11 @@ "Http_Chap": "Http-Chap", "Hotspot_Authentication_Method__Make_sure_you_have_changed_your_hotspot_login_page_": "Hotspot Authentication Method. Make sure you have changed your hotspot login page.", "Business": "Business", - "": "", "Source": "Source", - "Destination": "Destination" + "Destination": "Destination", + "Activate_Voucher": "Activate Voucher", + "Voucher_invalid": "Voucher invalid", + "Account_Not_Found": "Account Not Found", + "Voucher_activation_success__now_you_can_login": "Voucher activation success, now you can login", + "Internet_Voucher_Expired": "Internet Voucher Expired" } \ No newline at end of file diff --git a/ui/ui/user-login-noreg.tpl b/ui/ui/user-login-noreg.tpl index e3d186e7..c1163695 100644 --- a/ui/ui/user-login-noreg.tpl +++ b/ui/ui/user-login-noreg.tpl @@ -60,10 +60,12 @@
- + - +
@@ -73,15 +75,40 @@ class="btn btn-primary">{Lang::T('Login / Activate Voucher')} -
-
- Privacy - • - ToC -
+
+
{Lang::T('Activate Voucher')}
+
+
+
+ +
+ + + + +
+
+
+
+ +
+
+
+
+
+
+
+ Privacy + • + ToC +