fix: update models and views

This commit is contained in:
Kwesi Banson Jnr
2026-07-20 12:17:25 +00:00
parent f2b2e9fe7a
commit b827b985e5
65 changed files with 1200 additions and 87 deletions

18
app/Models/BranchFile.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class BranchFile extends Model
{
protected $guarded = array('id');
public $table = "branch_files";
public function branch_info(){
return $this->hasOne('App\Models\OfficeLocation', 'id', 'branch_id');
}
public function staff_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'uploaded_by');
}
}

26
app/Models/ClickApps.php Executable file
View File

@@ -0,0 +1,26 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClickApps extends Model
{
protected $guarded = array('id');
public $table = "apps";
protected $fillable = [
'app_name',
'app_type',
'client',
'code',
'country',
'operator',
'tollfree',
'app_path',
'launch_date',
'status',
'other_info',
];
}

11
app/Models/ClickFile.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClickFile extends Model
{
protected $guarded = array('id');
public $table = "click_files";
}

33
app/Models/ClickServer.php Executable file
View File

@@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClickServer extends Model
{
protected $guarded = array('id');
public $table = "click_servers";
protected $appends = ['root_password'];
public function direct_connections_info(){
return $this->hasMany('App\Models\DirectConnection', 'server_id', 'id');
}
public function credentials_info(){
return $this->hasMany('App\Models\ServerCredential', 'server_id', 'id');
}
public function modified_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_modified_by_id');
}
public function getRootPasswordAttribute(){
$credentials = $this->credentials_info;
foreach ($credentials as $value) {
if ($value->username == 'root') {
return $value->password;
}
}
}
}

View File

@@ -11,4 +11,44 @@ class Client extends Model
];
public $table = "clients";
// protected $appends = ['client_services'];
public function country_info(){
return $this->hasOne('App\Models\Country', 'alpha_2_code', 'country');
}
public function country_flag_info(){
return $this->hasOne('App\Models\CountryFlag', 'country', 'country');
}
public function payment_type_info(){
return $this->hasOne('App\Models\PaymentType', 'id', 'pay_mode');
}
public function service_info(){
return $this->hasMany('App\Models\ClientCategory', 'client_id', 'id');
}
public function report_info(){
return $this->hasMany('App\Models\MeetingReport', 'client', 'id');
}
public function auth_user_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'auth_user_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'created_by');
}
public function modified_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_modified_by');
}
public function short_code_info(){
return $this->hasMany('App\Models\ShortCode', 'client_id', 'id');
}
public function getClientServicesAttribute(){
$services = $this->service_info;
$service_name_arr = [];
foreach ($services as $value) {
$service_name = Models\Service::find($value['category_id']);
$service_name_arr[] = $service_name->name;
}
return $service_name_arr;
}
}

16
app/Models/ClientCategory.php Executable file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientCategory extends Model
{
protected $guarded = array('id');
public $table = "client_categories";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
}

14
app/Models/ClientFile.php Normal file
View File

@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientFile extends Model
{
protected $guarded = array('id');
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientIndicator extends Model
{
protected $guarded = array('id');
}

25
app/Models/ClientNote.php Normal file
View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
class ClientNote extends Model
{
protected $guarded = array('id');
protected static $logUnguarded = true;
// public function getActivitylogOptions(): LogOptions{
// return LogOptions::defaults()->logUnguarded();
// }
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'auth_user_id');
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientOnboardingMainStage extends Model
{
//
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientOnboardingProgress extends Model
{
protected $guarded = array('id');
public $table = "client_onboarding_progress";
public function stage_info(){
return $this->hasOne('App\Models\ClientOnboardingMainStage', 'stage_id', 'id');
}
//this will produce one stage
//I need a relationship to show all sub items
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientOnboardingStage extends Model
{
protected $guarded = array('id');
public $table = "client_onboarding_main_stages";
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientOnboardingSubItem extends Model
{
//
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientPayment extends Model
{
protected $guarded = array('id');
public $table = "client_finances";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\Account', 'id', 'auth_user_id');
}
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientShortCode extends Model
{
protected $guarded = array('id');
public $table = "client_short_codes";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function update_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_updated_by');
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ClientSupportFees extends Model
{
protected $guarded = array('id');
public $table = "client_support_fees";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
// return $this->hasOne('App\Models\Account', 'id', 'auth_user_id');
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

View File

@@ -1,23 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Comment extends Model
{
protected $guarded = [
'id'
];
public function userInfo(): HasOne
{
return $this->hasOne(User::class);
}
public function projectStatus(): BelongsTo
{
return $this->belongsTo(ProjectStatus::class);
}
}

11
app/Models/Country.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
protected $guarded = array('id');
public $table = "countries";
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class CountryFlag extends Model
{
public $timestamps = false;
public $table = "flags";
}

13
app/Models/Currency.php Executable file
View File

@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Currency extends Model
{
protected $guarded = array('id');
public $table = "currencies";
}

10
app/Models/DailyQuote.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class DailyQuote extends Model
{
protected $guarded = array('id');
}

10
app/Models/Department.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Department extends Model
{
protected $guarded = array('id');
}

11
app/Models/Designation.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Designation extends Model
{
protected $guarded = array('id');
public $table = "designations";
}

11
app/Models/DirectConnection.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class DirectConnection extends Model
{
protected $guarded = array('id');
public $table = "direct_connections";
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class GeneralDocument extends Model
{
protected $guarded = array('id');
}

11
app/Models/Holiday.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Holiday extends Model
{
protected $guarded = array('id');
public $table = "holidays";
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\models;
use Illuminate\Database\Eloquent\Model;
class IncomingEmail extends Model
{
protected $guarded = array('id');
public $table = "incoming_emails";
}

10
app/Models/Industry.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Industry extends Model
{
public $table = "client_industries";
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class LeaveManagement extends Model
{
protected $guarded = array('id');
public $table = "leave_management";
}

16
app/Models/LoggedUser.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class LoggedUser extends Model
{
protected $guarded = array('id');
public $table = "logged_users";
public function auth_user_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

24
app/Models/MarketReport.php Executable file
View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MarketReport extends Model
{
protected $guarded = array('id');
public $table = "market_reports";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client');
}
public function payment_info(){
return $this->hasOne('App\Models\PaymentType', 'id', 'payment_type');
}
public function auth_user_info(){
return $this->hasOne('App\Models\Account', 'id', 'auth_user_id');
}
public function sam_comment_info(){
return $this->hasMany('App\Models\SamComment', 'report_id', 'id');
}
}

21
app/Models/MeetingReport.php Executable file
View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MeetingReport extends Model
{
protected $guarded = array('id');
public $table = "meeting_reports";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client');
}
public function auth_user_info(){
return $this->hasOne('App\Models\Account', 'id', 'auth_user_id');
}
public function sam_comment_info(){
return $this->hasMany('App\Models\SamComment', 'report_id', 'id');
}
}

15
app/Models/MnoFile.php Normal file
View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MnoFile extends Model
{
protected $guarded = array('id');
public $table = "mno_files";
public function mno_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
}

14
app/Models/Mnoips.php Normal file
View File

@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Mnoips extends Model
{
protected $guarded = array('id');
public $table = "mno_ip_addresses";
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_modified_by');
}
}

19
app/Models/Mnonote.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Mnonote extends Model
{
protected $guarded = array('id');
public $table = "mno_notes";
public function mno_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

19
app/Models/Mnopayment.php Normal file
View File

@@ -0,0 +1,19 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Mnopayment extends Model
{
protected $guarded = array('id');
public $table = "mno_payments";
public function client_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NationalHoliday extends Model
{
protected $guarded = array('id');
public $table = "national_holidays";
// public function branch_info(){
// return $this->hasOne('App\Models\OfficeLocation', 'id', 'branch_id');
// }
}
?>

15
app/Models/NetworkOps.php Executable file
View File

@@ -0,0 +1,15 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class NetworkOps extends Model
{
protected $guarded = array('id');
public $table = "network_operators";
public function account_manager_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'account_manager_id');
}
}

11
app/Models/Networkstatus.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Networkstatus extends Model
{
protected $guarded = array('id');
public $table = "network_status_responses";
}

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class OfficeLocation extends Model
{
protected $guarded = array('id');
public function created_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'user_id');
}
public function country_manager_info(){
// return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id');
return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id');
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class OnboardingStage extends Model
{
protected $guarded = array('id');
}

11
app/Models/PaymentType.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PaymentType extends Model
{
protected $guarded = array('id');
public $table = "payment_type";
}

11
app/Models/Permission.php Normal file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
protected $guarded = array('id');
public $table = "hlp_permissions";
}

View File

@@ -1,31 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Project extends Model
{
protected $guarded = [
'id'
];
// public function userInfo()
// {
// return $this->hasMany('App\Models\User', 'org_id', 'id');
// }
// public function phone(): HasOne
// {
// return $this->hasOne(Phone::class);
// }
public function userInfo(): HasMany
{
return $this->hasMany(User::class);
}
public function statusInfo(): HasMany
{
return $this->hasMany(ProjectStatus::class);
}
}

View File

@@ -1,23 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class ProjectStatus extends Model
{
protected $guarded = [
'id'
];
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
public function comments(): HasMany
{
return $this->hasMany(Comment::class);
}
}

13
app/Models/SamComment.php Executable file
View File

@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SamComment extends Model
{
protected $guarded = array('id');
public $table = "sam_comments";
}

37
app/Models/SenderId.php Normal file
View File

@@ -0,0 +1,37 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
class SenderId extends Model{
// use LogsActivity;
protected $guarded = array('id');
public $table = "sender_ids";
protected static $logName = 'senderid_log';
// protected static $causedBy = $user_model;
// protected static $logOnlyDirty = true;
// protected static $dontSubmitEmptyLogs = true;
protected static $logUnguarded = true;
// public function getActivitylogOptions(): LogOptions{
// return LogOptions::defaults()
// ->logUnguarded()->useLogName('senderid_log')->logOnlyDirty()->dontSubmitEmptyLogs();
// }
public function modified_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'last_modified_by');
}
public function network_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'network_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'created_by');
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Senderidold extends Model{
protected $guarded = array('id');
public $table = "sender_ids_copy";
public function modified_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'last_modified_by');
}
public function network_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'network_id');
}
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'created_by');
}
}

16
app/Models/ServerCredential.php Executable file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ServerCredential extends Model
{
protected $guarded = array('id');
public $table = "server_credentials";
public function server_info(){
return $this->hasOne('App\Models\ClickServer', 'id', 'server_id');
}
}

11
app/Models/Service.php Executable file
View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Service extends Model
{
protected $guarded = array('id');
public $table = "services";
}

21
app/Models/ShortCode.php Normal file
View File

@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ShortCode extends Model
{
protected $guarded = array('id');
public $table = "short_codes";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function update_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_updated_by');
}
public function account_mgr_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'account_manager_id');
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SupportTicket extends Model
{
protected $guarded = array('id');
public $table = "support_tickets";
public function modified_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'last_modified_by');
}
public function created_by_info(){
return $this->hasOne('App\Models\StaffMember', 'id', 'created_by');
}
public function assignedTo(){
return $this->hasOne('App\Models\StaffMember', 'id', 'assigned_to');
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SupportTicketsDocument extends Model
{
//
protected $guarded = array('id');
public $table = "support_ticket_attachments";
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SystemCredential extends Model{
protected $guarded = array('id');
public $table = "sys_credentials";
public function modified_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'last_modified_by_id');
}
public function network_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'network_id');
}
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function created_by_info(){
return $this->hasOne('App\Models\SystemUser', 'id', 'created_by_id');
}
}

18
app/Models/SystemUser.php Executable file
View File

@@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SystemUser extends Model
{
// use LogsActivity;
//use CausesActivity;
protected $guarded = array('id');
public $table = "auth_users";
// protected static $logUnguarded = true;
public function designation_info(){
return $this->hasOne('App\Models\Designation', 'id', 'designation');
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class UserActivity extends Model
{
protected $guarded = array('id');
public $table = "user_activities";
// protected $appends = ['activity_time'];
public function userInfo(){
return $this->hasOne('App\Models\StaffMember', 'id', 'user_id');
}
public function userInfoSystem(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
public function getActivityTimeAttribute(){
$created = $this->created_at;
$parsed_created_date = Carbon::parse($created);
$current_date = Carbon::parse(date('Y-m-d'));
$days = $parsed_created_date->diffForHumans();
return $days;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UssdClientPayment extends Model
{
protected $guarded = array('id');
public $table = "ussd_client_payments";
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
}

23
app/Models/Utility.php Normal file
View File

@@ -0,0 +1,23 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Traits\LogsActivity;
use Spatie\Activitylog\LogOptions;
class Utility extends Model{
use LogsActivity;
protected $guarded = ['id'];
protected $table = "utility";
protected static $logUnguarded = true;
public function getActivitylogOptions(): LogOptions
{
return LogOptions::defaults()
->logUnguarded();
// ->logOnly(['name', 'type']);
// Chain fluent methods for configuration options
}
}

109
app/Models/VpnClients.php Normal file
View File

@@ -0,0 +1,109 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
class VpnClient extends Model
{
protected $table = 'vpn_clients';
protected $fillable = [
'name',
'username',
'type',
'server_id',
'auth_type',
'password',
'allowed_ips',
'routes',
'push_dns',
'compress',
'notes',
'active',
'config_path', // optional stored config file path
];
protected $casts = [
'push_dns' => 'boolean',
'compress' => 'boolean',
'active' => 'boolean',
];
// Relationships
public function server()
{
return $this->belongsTo(Server::class);
}
// Scopes
public function scopeActive($q)
{
return $q->where('active', 1);
}
public function scopeOfType($q, $type)
{
return $q->where('type', $type);
}
// Generate a basic OpenVPN config (example). Adapt to your templates and security needs.
public function generateConfig()
{
// If a pre-generated config is stored, return it
if ($this->config_path && Storage::exists($this->config_path)) {
return Storage::get($this->config_path);
}
// Example template — replace with your real generation logic
$server = $this->server ? $this->server->address : 'vpn.example.com';
$proto = 'udp';
$port = 1194;
$conf = [];
$conf[] = "client";
$conf[] = "dev tun";
$conf[] = "proto {$proto}";
$conf[] = "remote {$server} {$port}";
$conf[] = "resolv-retry infinite";
$conf[] = "nobind";
if ($this->compress) {
$conf[] = "comp-lzo";
}
if ($this->push_dns) {
$conf[] = "dhcp-option DNS 10.8.0.1";
}
if ($this->allowed_ips) {
// allowed_ips are usually server-side; include as comment for operator
$conf[] = "# Allowed IPs: " . $this->allowed_ips;
}
// insert certs/keys placeholders — do NOT store private keys in cleartext unless secure
if ($this->auth_type === 'cert') {
$conf[] = "<ca>\n# CA cert here\n</ca>";
$conf[] = "<cert>\n# Client cert here\n</cert>";
$conf[] = "<key>\n# Client key hidden\n</key>";
} else {
// username/password auth
$conf[] = "auth-user-pass";
}
return implode("\n", $conf) . "\n";
}
/**
* Store generated config to disk (optional).
* Returns storage path.
*/
public function storeGeneratedConfig()
{
$config = $this->generateConfig();
$filename = 'vpn/configs/' . Str::slug($this->name) . '-' . $this->id . '.ovpn';
Storage::put($filename, $config);
$this->config_path = $filename;
$this->save();
return $filename;
}
}

20
app/Models/VpnConfig.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class VpnConfig extends Model
{
protected $guarded = ['id'];
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function mno_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
public function userInfo(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Worldwidemno extends Model
{
protected $guarded = array('id');
public $table = "mno_world_wide";
}