edit customer radius

This commit is contained in:
Ibnu Maksum 2023-10-04 15:41:48 +07:00
parent e87623d918
commit 0ee60eff3d
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
3 changed files with 117 additions and 84 deletions

View File

@ -134,6 +134,14 @@ class Radius
} }
return false; return false;
} }
public static function planDelete($plan_id){
// Delete Plan
Radius::getTablePackage()->where_equal('plan_id', "plan_".$plan_id)->delete_many();
// Delete User Plan
Radius::getTableUserPackage()->where_equal('groupname', "plan_".$plan_id)->delete_many();
}
public static function customerChangeUsername($from, $to){ public static function customerChangeUsername($from, $to){
$c = Radius::getTableCustomer()->where_equal('username', $from)->findMany(); $c = Radius::getTableCustomer()->where_equal('username', $from)->findMany();
if ($c) { if ($c) {
@ -162,6 +170,11 @@ class Radius
} }
} }
public static function customerDelete($username){
Radius::getTableCustomer()->where_equal('username', $username)->delete_many();
Radius::getTableUserPackage()->where_equal('username', $username)->delete_many();
}
/** /**
* When add a plan to Customer, use this * When add a plan to Customer, use this
*/ */

View File

@ -49,8 +49,6 @@ switch ($action) {
$id_customer = $routes['2']; $id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one(); $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
if ($b) { if ($b) {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if (Package::rechargeUser($id_customer, $b['routers'], $b['plan_id'], "Recharge", $admin['fullname'])) { if (Package::rechargeUser($id_customer, $b['routers'], $b['plan_id'], "Recharge", $admin['fullname'])) {
r2(U . 'customers/view/' . $id_customer, 's', 'Success Recharge Customer'); r2(U . 'customers/view/' . $id_customer, 's', 'Success Recharge Customer');
} else { } else {
@ -62,6 +60,12 @@ switch ($action) {
$id_customer = $routes['2']; $id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one(); $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->find_one();
if ($b) { if ($b) {
$p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one();
if ($p) {
if ($p['is_radius']) {
//TODO: disconnect using radius
Radius::customerDeactivate(ORM::for_table('tbl_customers')->find_one($id_customer));
} else {
$mikrotik = Mikrotik::info($b['routers']); $mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if ($b['type'] == 'Hotspot') { if ($b['type'] == 'Hotspot') {
@ -71,6 +75,7 @@ switch ($action) {
Mikrotik::removePpoeUser($client, $b['username']); Mikrotik::removePpoeUser($client, $b['username']);
Mikrotik::removePpoeActive($client, $b['username']); Mikrotik::removePpoeActive($client, $b['username']);
} }
}
$b->status = 'off'; $b->status = 'off';
$b->expiration = date('Y-m-d'); $b->expiration = date('Y-m-d');
$b->time = date('H:i:s'); $b->time = date('H:i:s');
@ -79,23 +84,29 @@ switch ($action) {
Message::sendTelegram('Admin ' . $admin['username'] . ' Deactivate ' . $b['namebp'] . ' for u' . $b['username']); Message::sendTelegram('Admin ' . $admin['username'] . ' Deactivate ' . $b['namebp'] . ' for u' . $b['username']);
r2(U . 'customers/view/' . $id_customer, 's', 'Success deactivate customer to Mikrotik'); r2(U . 'customers/view/' . $id_customer, 's', 'Success deactivate customer to Mikrotik');
} }
}
r2(U . 'customers/view/' . $id_customer, 'e', 'Cannot find active plan'); r2(U . 'customers/view/' . $id_customer, 'e', 'Cannot find active plan');
break; break;
case 'sync': case 'sync':
$id_customer = $routes['2']; $id_customer = $routes['2'];
$b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->where('status', 'on')->find_one(); $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $id_customer)->where('status', 'on')->find_one();
if ($b) { if ($b) {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
$c = ORM::for_table('tbl_customers')->find_one($id_customer); $c = ORM::for_table('tbl_customers')->find_one($id_customer);
$p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one(); $p = ORM::for_table('tbl_plans')->where('id', $b['plan_id'])->where('enabled', '1')->find_one();
if ($p) { if ($p) {
if ($p['is_radius']) {
Radius::customerAddPlan($c, $p);
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Radius');
} else {
$mikrotik = Mikrotik::info($b['routers']);
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if ($b['type'] == 'Hotspot') { if ($b['type'] == 'Hotspot') {
Mikrotik::addHotspotUser($client, $p, $c); Mikrotik::addHotspotUser($client, $p, $c);
} else if ($b['type'] == 'PPPOE') { } else if ($b['type'] == 'PPPOE') {
Mikrotik::addPpoeUser($client, $p, $c); Mikrotik::addPpoeUser($client, $p, $c);
} }
r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Mikrotik'); r2(U . 'customers/view/' . $id_customer, 's', 'Success sync customer to Mikrotik');
}
} else { } else {
r2(U . 'customers/view/' . $id_customer, 'e', 'Customer plan is inactive'); r2(U . 'customers/view/' . $id_customer, 'e', 'Customer plan is inactive');
} }
@ -163,20 +174,20 @@ switch ($action) {
if ($d) { if ($d) {
$c = ORM::for_table('tbl_user_recharges')->where('username', $d['username'])->find_one(); $c = ORM::for_table('tbl_user_recharges')->where('username', $d['username'])->find_one();
if ($c) { if ($c) {
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
if ($p['is_radius']) {
Radius::customerDelete($d['username']);
} else {
$mikrotik = Mikrotik::info($c['routers']); $mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') { if ($c['type'] == 'Hotspot') {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::removeHotspotUser($client, $d['username']); Mikrotik::removeHotspotUser($client, $d['username']);
Mikrotik::removeHotspotActiveUser($client, $d['username']); Mikrotik::removeHotspotActiveUser($client, $d['username']);
}
} else { } else {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::removePpoeUser($client, $d['username']); Mikrotik::removePpoeUser($client, $d['username']);
Mikrotik::removePpoeActive($client, $d['username']); Mikrotik::removePpoeActive($client, $d['username']);
} }
}
try { try {
$d->delete(); $d->delete();
} catch (Exception $e) { } catch (Exception $e) {
@ -186,6 +197,7 @@ switch ($action) {
$c->delete(); $c->delete();
} catch (Exception $e) { } catch (Exception $e) {
} }
}
} else { } else {
try { try {
$d->delete(); $d->delete();
@ -272,61 +284,67 @@ switch ($action) {
$msg .= $_L['Data_Not_Found'] . '<br>'; $msg .= $_L['Data_Not_Found'] . '<br>';
} }
if ($d['username'] != $username) { $oldusername = $d['username'];
$oldPppoePassword = $d['password'];
$oldPassPassword = $d['pppoe_password'];
$userDiff = false;
$pppoeDiff = false;
$passDiff = false;
if ($oldusername != $username) {
$c = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); $c = ORM::for_table('tbl_customers')->where('username', $username)->find_one();
if ($c) { if ($c) {
$msg .= $_L['account_already_exist'] . '<br>'; $msg .= $_L['account_already_exist'] . '<br>';
} }
$userDiff = true;
}
if ($oldPppoePassword != $pppoe_password) {
$pppoeDiff = true;
}
if ($password != '' && $oldPassPassword != $password) {
$passDiff = true;
} }
if ($msg == '') { if ($msg == '') {
$c = ORM::for_table('tbl_user_recharges')->where('username', $username)->find_one(); if ($userDiff) {
$d->username = $username;
}
if ($password != '') {
$d->password = $password;
}
$d->pppoe_password = $pppoe_password;
$d->fullname = $fullname;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
if ($userDiff || $pppoeDiff || $passDiff) {
$c = ORM::for_table('tbl_user_recharges')->where('username', ($userDiff) ? $oldusername : $username)->find_one();
if ($c) { if ($c) {
$c->username = $username;
$c->save();
$p = ORM::for_table('tbl_plans')->find_one($c['plan_id']);
if ($p['is_radius']) {
if($userDiff){
Radius::customerChangeUsername($oldusername, $username);
}
Radius::customerAddPlan($d, $p);
}else{
$mikrotik = Mikrotik::info($c['routers']); $mikrotik = Mikrotik::info($c['routers']);
if ($c['type'] == 'Hotspot') { if ($c['type'] == 'Hotspot') {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
Mikrotik::setHotspotUser($client, $c['username'], $password); Mikrotik::setHotspotUser($client, $c['username'], $password);
Mikrotik::removeHotspotActiveUser($client, $user['username']); Mikrotik::removeHotspotActiveUser($client, $d['username']);
}
$d->password = $password;
$d->save();
} else { } else {
if (!$config['radius_enable']) {
$client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']);
if (!empty($d['pppoe_password'])) { if (!empty($d['pppoe_password'])) {
Mikrotik::setPpoeUser($client, $c['username'], $d['pppoe_password']); Mikrotik::setPpoeUser($client, $c['username'], $d['pppoe_password']);
} else { } else {
Mikrotik::setPpoeUser($client, $c['username'], $password); Mikrotik::setPpoeUser($client, $c['username'], $password);
} }
Mikrotik::removePpoeActive($client, $user['username']); Mikrotik::removePpoeActive($client, $d['username']);
} }
$d->password = $password;
$d->save();
} }
$d->username = $username;
if ($password != '') {
$d->password = $password;
} }
$d->pppoe_password = $pppoe_password;
$d->fullname = $fullname;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
} else {
$d->username = $username;
if ($password != '') {
$d->password = $password;
}
$d->fullname = $fullname;
$d->pppoe_password = $pppoe_password;
$d->email = $email;
$d->address = $address;
$d->phonenumber = $phonenumber;
$d->save();
} }
r2(U . 'customers/list', 's', 'User Updated Successfully'); r2(U . 'customers/list', 's', 'User Updated Successfully');
} else { } else {

View File

@ -101,6 +101,7 @@ foreach ($d as $ds) {
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one(); $p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($_c['radius_enable']) { if ($_c['radius_enable']) {
//TODO: disconnect using radius
Radius::customerDeactivate($c); Radius::customerDeactivate($c);
}else{ }else{
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']); $client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);
@ -150,6 +151,7 @@ foreach ($d as $ds) {
$p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one(); $p = ORM::for_table('tbl_plans')->where('id', $u['plan_id'])->find_one();
if ($_c['radius_enable']) { if ($_c['radius_enable']) {
//TODO: disconnect using radius
Radius::customerDeactivate($c); Radius::customerDeactivate($c);
}else{ }else{
$client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']); $client = Mikrotik::getClient($m['ip_address'], $m['username'], $m['password']);