From 812844a15a3b8fb77b83fd6e12e4f89b6f2fa2d0 Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Tue, 25 Jun 2024 12:06:34 +0700 Subject: [PATCH] Check if Customer has active plan, if yes then connect to routers --- qrcode/qrconfig.php | 16 ++++---- system/controllers/accounts.php | 54 +++++++++++++------------ system/controllers/customers.php | 67 ++++++++++++++++---------------- system/lan/indonesia.json | 10 ++++- 4 files changed, 77 insertions(+), 70 deletions(-) diff --git a/qrcode/qrconfig.php b/qrcode/qrconfig.php index 31469d09..8a489096 100644 --- a/qrcode/qrconfig.php +++ b/qrcode/qrconfig.php @@ -5,12 +5,12 @@ * Config file, feel free to modify */ - define('QR_CACHEABLE', true); // use cache - more disk reads but less CPU power, masks and format templates are stored there - define('QR_CACHE_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR); // used when QR_CACHEABLE === true - //define('QR_LOG_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR); // default error logs dir +define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there +define('QR_CACHE_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR); // used when QR_CACHEABLE === true +//define('QR_LOG_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR); // default error logs dir +define('QR_LOG_DIR', false); +define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code +define('QR_FIND_FROM_RANDOM', false); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly +define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false - define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code - define('QR_FIND_FROM_RANDOM', false); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly - define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false - - define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images +define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images diff --git a/system/controllers/accounts.php b/system/controllers/accounts.php index a0bb1fa9..2454d1d3 100644 --- a/system/controllers/accounts.php +++ b/system/controllers/accounts.php @@ -25,44 +25,42 @@ switch ($action) { $password = _post('password'); run_hook('customer_change_password'); #HOOK if ($password != '') { - $d = ORM::for_table('tbl_customers')->where('username', $user['username'])->find_one(); - if ($d) { - $d_pass = $d['password']; - $npass = _post('npass'); - $cnpass = _post('cnpass'); + $d_pass = $d['password']; + $npass = _post('npass'); + $cnpass = _post('cnpass'); - if (Password::_uverify($password, $d_pass) == true) { - if (!Validator::Length($npass, 15, 2)) { - r2(U . 'accounts/change-password', 'e', 'New Password must be 3 to 14 character'); - } - if ($npass != $cnpass) { - r2(U . 'accounts/change-password', 'e', 'Both Password should be same'); - } + if (Password::_uverify($password, $d_pass) == true) { + if (!Validator::Length($password, 36, 2)) { + r2(U . 'accounts/change-password', 'e', 'New Password must be 2 to 35 character'); + } + if ($npass != $cnpass) { + r2(U . 'accounts/change-password', 'e', 'Both Password should be same'); + } - $c = ORM::for_table('tbl_user_recharges')->where('username', $user['username'])->find_one(); - if ($c) { - // if has active plan, change the password to devices - $p = ORM::for_table('tbl_plans')->where('id', $c['plan_id'])->find_one(); + $tur = ORM::for_table('tbl_user_recharges')->where('customer_id', $user['id'])->find_one(); + if ($tur) { + // if has active plan, change the password to devices + if ($tur['status'] == 'on') { + $p = ORM::for_table('tbl_plans')->where('id', $tur['plan_id'])->find_one(); $dvc = Package::getDevice($p); if ($_app_stage != 'demo') { if (file_exists($dvc)) { require_once $dvc; - (new $p['device'])->remove_customer($c, $p); + (new $p['device'])->remove_customer($user, $p); + (new $p['device'])->add_customer($user, $p); } else { new Exception(Lang::T("Devices Not Found")); } } } - $d->password = $npass; - $d->save(); - - _msglog('s', Lang::T('Password changed successfully, Please login again')); - _log('[' . $user['username'] . ']: Password changed successfully', 'User', $user['id']); - - r2(U . 'login'); - } else { - r2(U . 'accounts/change-password', 'e', Lang::T('Incorrect Current Password')); } + $user->password = $npass; + $user->save(); + + _msglog('s', Lang::T('Password changed successfully, Please login again')); + _log('[' . $user['username'] . ']: Password changed successfully', 'User', $user['id']); + + r2(U . 'login'); } else { r2(U . 'accounts/change-password', 'e', Lang::T('Incorrect Current Password')); } @@ -130,7 +128,7 @@ switch ($action) { break; case 'phone-update-otp': - $phone = _post('phone'); + $phone = Lang::phoneFormat(_post('phone')); $username = $user['username']; $otpPath = $CACHE_PATH . '/sms/'; @@ -181,7 +179,7 @@ switch ($action) { break; case 'phone-update-post': - $phone = _post('phone'); + $phone = Lang::phoneFormat(_post('phone')); $otp_code = _post('otp'); $username = $user['username']; $otpPath = $CACHE_PATH . '/sms/'; diff --git a/system/controllers/customers.php b/system/controllers/customers.php index c00f478f..4a2b25c6 100644 --- a/system/controllers/customers.php +++ b/system/controllers/customers.php @@ -332,7 +332,7 @@ switch ($action) { ORM::for_table('tbl_customers_fields')->where('customer_id', $id)->delete_many(); //Delete active package $turs = ORM::for_table('tbl_user_recharges')->where('username', $c['username'])->find_many(); - foreach($turs as $tur){ + foreach ($turs as $tur) { $p = ORM::for_table('tbl_plans')->find_one($tur['plan_id']); if ($p) { $dvc = Package::getDevice($p); @@ -359,10 +359,10 @@ switch ($action) { break; case 'add-post': - $username = _post('username'); + $username = alphanumeric(_post('username'), "+_."); $fullname = _post('fullname'); - $password = _post('password'); - $pppoe_password = _post('pppoe_password'); + $password = trim(_post('password')); + $pppoe_password = trim(_post('pppoe_password')); $email = _post('email'); $address = _post('address'); $phonenumber = _post('phonenumber'); @@ -380,11 +380,11 @@ switch ($action) { run_hook('add_customer'); #HOOK $msg = ''; - if (Validator::Length($username, 35, 2) == false) { - $msg .= 'Username should be between 3 to 55 characters' . '
'; + if (Validator::Length($username, 55, 2) == false) { + $msg .= 'Username should be between 3 to 54 characters' . '
'; } - if (Validator::Length($fullname, 36, 2) == false) { - $msg .= 'Full Name should be between 3 to 25 characters' . '
'; + if (Validator::Length($fullname, 36, 1) == false) { + $msg .= 'Full Name should be between 2 to 25 characters' . '
'; } if (!Validator::Length($password, 36, 2)) { $msg .= 'Password should be between 3 to 35 characters' . '
'; @@ -394,10 +394,9 @@ switch ($action) { if ($d) { $msg .= Lang::T('Account already axist') . '
'; } - if ($msg == '') { $d = ORM::for_table('tbl_customers')->create(); - $d->username = Lang::phoneFormat($username); + $d->username = $username; $d->password = $password; $d->pppoe_password = $pppoe_password; $d->email = $email; @@ -439,11 +438,11 @@ switch ($action) { break; case 'edit-post': - $username = Lang::phoneFormat(_post('username')); + $username = alphanumeric(_post('username'), "+_."); $fullname = _post('fullname'); $account_type = _post('account_type'); - $password = _post('password'); - $pppoe_password = _post('pppoe_password'); + $password = trim(_post('password')); + $pppoe_password = trim(_post('pppoe_password')); $email = _post('email'); $address = _post('address'); $phonenumber = Lang::phoneFormat(_post('phonenumber')); @@ -457,30 +456,25 @@ switch ($action) { $zip = _post('zip'); run_hook('edit_customer'); #HOOK $msg = ''; - if (Validator::Length($username, 35, 2) == false) { - $msg .= 'Username should be between 3 to 15 characters' . '
'; + if (Validator::Length($username, 55, 2) == false) { + $msg .= 'Username should be between 3 to 54 characters' . '
'; } if (Validator::Length($fullname, 36, 1) == false) { $msg .= 'Full Name should be between 2 to 25 characters' . '
'; } - if ($password != '') { - if (!Validator::Length($password, 36, 2)) { - $msg .= 'Password should be between 3 to 15 characters' . '
'; - } - } $id = _post('id'); $c = ORM::for_table('tbl_customers')->find_one($id); + if (!$c) { + $msg .= Lang::T('Data Not Found') . '
'; + } + //lets find user Customers Attributes using id $customFields = ORM::for_table('tbl_customers_fields') ->where('customer_id', $id) ->find_many(); - if (!$c) { - $msg .= Lang::T('Data Not Found') . '
'; - } - $oldusername = $c['username']; $oldPppoePassword = $c['password']; $oldPassPassword = $c['pppoe_password']; @@ -488,8 +482,8 @@ switch ($action) { $pppoeDiff = false; $passDiff = false; if ($oldusername != $username) { - $c = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); - if ($c) { + $cx = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); + if ($cx) { $msg .= Lang::T('Account already exist') . '
'; } $userDiff = true; @@ -570,19 +564,26 @@ switch ($action) { } if ($userDiff || $pppoeDiff || $passDiff) { - $tur = ORM::for_table('tbl_user_recharges')->where('username', ($userDiff) ? $oldusername : $username)->find_one(); + $tur = ORM::for_table('tbl_user_recharges')->where('customer_id', $c['id'])->find_one(); if ($tur) { $tur->username = $username; $tur->save(); $p = ORM::for_table('tbl_plans')->find_one($tur['plan_id']); $dvc = Package::getDevice($p); if ($_app_stage != 'demo') { - if (file_exists($dvc)) { - require_once $dvc; - (new $p['device'])->remove_customer($c, $p); - (new $p['device'])->add_customer($c, $p); - } else { - new Exception(Lang::T("Devices Not Found")); + // if has active package + if ($tur['status'] == 'on') { + if (file_exists($dvc)) { + require_once $dvc; + if ($userDiff) { + $c->username = $oldusername; + (new $p['device'])->remove_customer($c, $p); + $c->username = $username; + } + (new $p['device'])->add_customer($c, $p); + } else { + new Exception(Lang::T("Devices Not Found")); + } } } } diff --git a/system/lan/indonesia.json b/system/lan/indonesia.json index aabce314..cc2756e3 100644 --- a/system/lan/indonesia.json +++ b/system/lan/indonesia.json @@ -527,5 +527,13 @@ "warning": "peringatan", "Created___Expired": "Dibuat \/ Kedaluwarsa", "Login___Activate_Voucher": "Masuk \/ Aktifkan Voucher", - "Voucher_activation_success__now_you_can_login": "Aktivasi voucher berhasil, sekarang Anda dapat login" + "Voucher_activation_success__now_you_can_login": "Aktivasi voucher berhasil, sekarang Anda dapat login", + "Customer_cannot_login_again": "Pelanggan tidak dapat login lagi", + "Customer_can_login_but_cannot_buy_internet_plan__Admin_cannot_recharge_customer": "Pelanggan dapat login tetapi tidak dapat membeli paket internet, Admin tidak dapat mengisi ulang pelanggan", + "Don_t_forget_to_deactivate_all_active_plan_too": "Jangan lupa untuk menonaktifkan semua paket aktif juga", + "Attributes": "Atribut", + "Additional_Information": "informasi tambahan", + "City_of_Resident": "Kota Residen", + "State_of_Resident": "Negara Bagian Tempat Tinggal", + "Zip_Code": "Kode Pos" } \ No newline at end of file