Skip to content

Commit f272f5b

Browse files
authored
Merge pull request #1 from queents/dev
fix settings on not connected database
2 parents 8f8c89f + bf4d3d4 commit f272f5b

3 files changed

Lines changed: 78 additions & 23 deletions

File tree

Providers/SettingsServiceProvider.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55

66
use Illuminate\Database\Eloquent\Factory;
7+
use Illuminate\Support\Facades\Config;
78
use Illuminate\Support\ServiceProvider;
89
use Modules\Base\Services\Components\Base\Lang;
910
use Modules\Base\Services\Core\VILT;
@@ -35,6 +36,23 @@ public function boot()
3536

3637
VILT::loadPages($this->moduleName);
3738

39+
Config::set('mail.mailers.smtp', [
40+
'transport' => 'smtp',
41+
'host' => setting('email.host'),
42+
'port' => setting('email.port'),
43+
'encryption' => setting('email.encryption'),
44+
'username' => setting('email.username'),
45+
'password' => setting('email.password'),
46+
'timeout' => null,
47+
'auth_mode' => null,
48+
]);
49+
50+
Config::set('mail.from', [
51+
'address' => setting('email.from'),
52+
'name' => setting('email.from.name'),
53+
]);
54+
55+
3856
VILT::registerTranslation(Lang::make('site_settings.sidebar')->label(__('Site Settings')));
3957
VILT::registerTranslation(Lang::make('google_settings.sidebar')->label(__('Google Settings')));
4058
VILT::registerTranslation(Lang::make('email_settings.sidebar')->label(__('Email Settings')));

Providers/helpers.php

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,60 @@
11
<?php
22

3+
use Illuminate\Support\Facades\Config;
4+
use Illuminate\Support\Facades\DB;
35
use Spatie\LaravelSettings\Models\SettingsProperty;
46

57

6-
if (!function_exists('setting')) {
7-
function setting($key)
8-
{
9-
$setting = SettingsProperty::where('name', $key)->first();
10-
if ($setting) {
11-
return json_decode($setting->payload);
12-
} else {
13-
return false;
8+
9+
// Test database connection
10+
try {
11+
DB::connection()->getPdo();
12+
13+
if (!function_exists('setting')) {
14+
function setting($key)
15+
{
16+
try{
17+
Config::set('session.driver','database');
18+
$setting = SettingsProperty::where('name', $key)->first();
19+
}catch (\Exception $e){
20+
$setting = false;
21+
Config::set('session.driver','array');
22+
}
23+
if ($setting) {
24+
return json_decode($setting->payload);
25+
} else {
26+
return false;
27+
}
1428
}
1529
}
16-
}
17-
if (!function_exists('dollar')) {
18-
function dollar($total)
19-
{
20-
$getDollar = setting('site_currency');
21-
if ($getDollar) {
22-
return "<b>" . number_format($total, 2) . "</b><small>$getDollar</small>";
23-
} else {
24-
return false;
30+
if (!function_exists('dollar')) {
31+
function dollar($total)
32+
{
33+
$getDollar = setting('site_currency');
34+
if ($getDollar) {
35+
return "<b>" . number_format($total, 2) . "</b><small>$getDollar</small>";
36+
} else {
37+
return false;
38+
}
2539
}
2640
}
27-
}
41+
if (!function_exists('hasModule')) {
42+
function hasModule($name)
43+
{
44+
return \Module::collections()->has($name);
45+
}
46+
}
47+
48+
Config::set('session.driver','database');
2849

29-
if (!function_exists('hasModule')) {
30-
function hasModule($name)
31-
{
32-
return \Module::collections()->has($name);
50+
} catch (\Exception $e) {
51+
if (!function_exists('setting')) {
52+
function setting($key)
53+
{
54+
return $key;
55+
}
3356
}
57+
58+
Config::set('session.driver','array');
3459
}
60+

Services/Setting.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,17 @@ public function beforeLoad(Request $request, $rows): array
2323

2424
public function index(Request $request): \Illuminate\Http\JsonResponse|\Inertia\Response
2525
{
26+
/*
27+
* Check if the user has permission to view the resource
28+
*/
29+
$this->loadRoles();
30+
/*
31+
* Check if the user has permission or redirect 403
32+
*/
33+
if ($this->checkRoles('canView') && !$this->isAPI($request)) {
34+
return $this->checkRoles('canView');
35+
}
36+
2637
/*
2738
* Get Setting Class
2839
*/
@@ -179,7 +190,7 @@ public function routes()
179190
public function menus(): array
180191
{
181192
$menus = [
182-
Menu::make(Str::ucfirst($this->table))->group($this->group)->label($this->table . '.sidebar')->icon($this->icon)->route('admin.settings.'.$this->table . '.index')->can(true)
193+
Menu::make(Str::ucfirst($this->table))->group($this->group)->label($this->table . '.sidebar')->icon($this->icon)->route('admin.settings.'.$this->table . '.index')->can('view_'.$this->table)
183194
];
184195
return array_merge($menus, $this->menu());
185196
}

0 commit comments

Comments
 (0)