Started work on SiteDetails and Setup

This commit is contained in:
Deon George
2018-07-31 14:11:00 +10:00
parent 0ce640c283
commit 1cde2a888a
24 changed files with 1373 additions and 177 deletions

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\SiteDetails;
class AdminHomeController extends Controller
{
public function setup()
{
return view('a.setup');
}
public function setup_update(Request $request)
{
$request->validate([
'site_name' => 'required|string|max:255',
'site_email' => 'required|string|email|max:255',
'site_address1' => 'required|string|max:255',
'site_address2' => 'nullable|string|max:255',
'site_city' => 'required|string|max:64',
'site_state' => 'required|string|max:32',
'site_postcode' => 'required|string|max:8',
'site_phone' => 'nullable|regex:/[0-9 ]+/|min:6|max:12',
'site_fax' => 'nullable|regex:/[0-9 ]+/|min:6|max:12',
]);
// If we are more input that sample data, reject the update.
if (config('SITE_SETUP')->allowed_keys(array_keys($request->except('_token'))))
return redirect()->back()
->withInput()
->withErrors('Invalid configuration - values not expected.');
foreach ($request->except('_token') as $key => $value)
{
if (! $value) {
SiteDetails::where('site_id',config('SITE_SETUP')->id)->where('key',$key)->delete();
} else {
try {
// Update or create our config record.
SiteDetails::updateOrCreate([
'site_id'=>config('SITE_SETUP')->id,
'key'=>$key,
],[
'value'=>$value,
]);
} catch (\Exception $e) {
dd($e);
}
}
}
return redirect()->back()
->with('success','Setup Updated!');;
}
}

View File

@@ -14,17 +14,17 @@ class UserHomeController extends Controller
public function home()
{
switch (Auth::user()->role()) {
case 'Customer':
case 'customer':
return View('userhome',['o'=>Auth::user()]);
case 'Reseller':
case 'reseller':
return View('resellerhome',['o'=>Auth::user()]);
case 'Wholesaler':
case 'wholesaler':
return View('resellerhome',['o'=>Auth::user()]);
default:
abort(500,'Unknown role: ',Auth::user()->role());
abort(500,'Unknown role: '.Auth::user()->role());
}
}

View File

@@ -6,10 +6,6 @@ use Auth;
class UserServicesController extends Controller
{
public function __construct()
{
}
public function invoices()
{
return ['data'=>Auth::user()->invoices_due->values()];

View File

@@ -61,7 +61,7 @@ class Kernel extends HttpKernel
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'demoMode' => \Spatie\DemoMode\DemoMode::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'reseller' => \App\Http\Middleware\Reseller::class,
'role' => \App\Http\Middleware\Role::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'theme' => \Igaster\LaravelTheme\Middleware\setTheme::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

View File

@@ -1,19 +0,0 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
class Reseller
{
public function handle($request, Closure $next)
{
if (! in_array(Auth::user()->role(),['Wholesaler','Reseller']))
{
abort(303,'Not Reseller');
} else
return $next($request);
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
class Role
{
public function handle($request, Closure $next, $role)
{
if ($role AND ! Auth::user())
return abort(303,'Not Authenticated');
switch ($role) {
case 'wholesaler':
if (Auth::user()->role() == $role)
return $next($request);
break;
case 'reseller':
if (in_array(Auth::user()->role(),['wholesaler','reseller']))
return $next($request);
break;
}
abort(404,'User doesnt have role?');
}
}

View File

@@ -29,11 +29,9 @@ class SetSite
// @todo Figure out how to know if this is an API call - and deny it if it's not in the database.
$so = new Site;
if (Schema::hasTable('site'))
if ($so->getTable() AND Schema::hasTable($so->getTable()))
{
$so = Site::where('url',$request->root())
->orwhere('devurl',$request->root())
// @todo With an API call, we would use ->firstorfail();
->first();
}