Zugriff Redakteur, Kundenhoheit API

This commit is contained in:
Kevin Adametz 2022-01-04 11:17:07 +01:00
parent 570d428b1c
commit 3f1fb9377d
13 changed files with 109 additions and 61 deletions

View file

@ -13,7 +13,7 @@ class AttributeController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('admin'); $this->middleware('copyreader');
} }
public function index() public function index()

View file

@ -5,7 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Category; use App\Models\Category;
use App\Models\IqImage; use App\Models\IqImage;
use App\Models\ProductCategory; use App\Models\ProductCategory;
use\Request; use Request;
class CategoryController extends Controller class CategoryController extends Controller
@ -14,7 +14,7 @@ class CategoryController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('admin'); $this->middleware('copyreader');
} }
public function index() public function index()

View file

@ -15,7 +15,7 @@ class DataTableController extends Controller
public function getUsers() public function getUsers()
{ {
$query = User::with('account')->select('users.*')->where('users.deleted_at', '=', null)->where('users.admin', "<", 4); $query = User::with('account')->select('users.*')->where('users.deleted_at', '=', null)->where('users.admin', "<", 10);
return \DataTables::eloquent($query) return \DataTables::eloquent($query)
->addColumn('first_name', function (User $user) { ->addColumn('first_name', function (User $user) {

View file

@ -16,7 +16,7 @@ class IngredientController extends Controller
public function __construct() public function __construct()
{ {
$this->middleware('admin'); $this->middleware('copyreader');
} }
public function index() public function index()

View file

@ -18,7 +18,7 @@ class ProductController extends Controller
public function __construct(ProductRepository $productRepo) public function __construct(ProductRepository $productRepo)
{ {
$this->middleware('admin'); $this->middleware('copyreader');
$this->productRepo = $productRepo; $this->productRepo = $productRepo;
} }

View file

@ -54,6 +54,7 @@ class Kernel extends HttpKernel
protected $routeMiddleware = [ protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class, 'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'copyreader' => \App\Http\Middleware\CopyReader::class,
'admin' => \App\Http\Middleware\Admin::class, 'admin' => \App\Http\Middleware\Admin::class,
'superadmin' => \App\Http\Middleware\SuperAdmin::class, 'superadmin' => \App\Http\Middleware\SuperAdmin::class,
'sysadmin' => \App\Http\Middleware\SysAdmin::class, 'sysadmin' => \App\Http\Middleware\SysAdmin::class,

View file

@ -0,0 +1,26 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class CopyReader
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isCopyReader() )
{
return $next($request);
}
return redirect('/home');
}
}

View file

@ -234,6 +234,7 @@ class CustomerPriority
->where('auth_user_id', '=', NULL) ->where('auth_user_id', '=', NULL)
->where('number', '!=', NULL) //has number ->where('number', '!=', NULL) //has number
->where('id', '!=', $shopping_user->id) ->where('id', '!=', $shopping_user->id)
->where('member_id', '!=', $shopping_user->member_id)
->where('billing_lastname', '=', $shopping_user->billing_lastname) ->where('billing_lastname', '=', $shopping_user->billing_lastname)
->where('billing_zipcode', '=', $shopping_user->billing_zipcode) ->where('billing_zipcode', '=', $shopping_user->billing_zipcode)
->get()->pluck('number', 'id')->unique()->toArray(); ->get()->pluck('number', 'id')->unique()->toArray();

View file

@ -33,9 +33,11 @@ class HTMLHelper
private static $roles = [ private static $roles = [
0 => 'Kunde', 0 => 'Kunde',
1 => 'Admin', 1 => 'Redakteur',
2 => 'SuperAdmin', 7 => 'Admin',
3 => 'SySAdmin', 8 => 'SuperAdmin',
9 => 'SySAdmin',
//10 => "API",
]; ];
@ -55,12 +57,18 @@ class HTMLHelper
case 1: case 1:
return 'badge-warning'; return 'badge-warning';
break; break;
case 2: case 7:
return 'badge-primary'; return 'badge-primary';
break; break;
case 3: case 8:
return 'badge-primary'; return 'badge-primary';
break; break;
case 9:
return 'badge-danger';
break;
case 10:
return 'badge-danger';
break;
} }
} }

View file

@ -220,12 +220,22 @@ class User extends Authenticatable
return $ret; return $ret;
} }
/**
* @return bool
*/
public function isCopyReader()
{
if($this->admin >= 1){
return true;
}
return false;
}
/** /**
* @return bool * @return bool
*/ */
public function isAdmin() public function isAdmin()
{ {
if($this->admin >= 1){ if($this->admin >= 7){
return true; return true;
} }
return false; return false;
@ -236,7 +246,7 @@ class User extends Authenticatable
*/ */
public function isSuperAdmin() public function isSuperAdmin()
{ {
if($this->admin >= 2){ if($this->admin >= 8){
return true; return true;
} }
return false; return false;
@ -247,7 +257,7 @@ class User extends Authenticatable
*/ */
public function isSySAdmin() public function isSySAdmin()
{ {
if($this->admin >= 3){ if($this->admin >= 9){
return true; return true;
} }
return false; return false;
@ -258,7 +268,7 @@ class User extends Authenticatable
*/ */
public function isApiUser() public function isApiUser()
{ {
if($this->admin >= 4){ if($this->admin >= 10){
return true; return true;
} }
return false; return false;

View file

@ -415,7 +415,7 @@
{ data: 'action_delete', orderable: false, searchable: false}, { data: 'action_delete', orderable: false, searchable: false},
], ],
"bLengthChange": false, "bLengthChange": false,
"iDisplayLength": 50, "iDisplayLength": 25,
"language": { "language": {
"url": "/js/German.json" "url": "/js/German.json"
} }

View file

@ -108,11 +108,36 @@
</li> </li>
@endif @endif
@endif @endif
@if(Auth::user()->isCopyReader())
<li class="sidenav-divider mb-1"></li>
<li class="sidenav-header small font-weight-semibold">REDAKTEUR</li>
<li class="sidenav-item @if(Request::is('admin/product/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-cube"></i>
<div>{{ __('navigation.products') }}</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is('admin/product/show') ? ' active' : '' }}">
<a href="{{ route('admin_product_show') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cube"></i><div>{{ __('navigation.overview') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/product/categories') ? ' active' : '' }}">
<a href="{{ route('admin_product_categories') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-list"></i><div>{{ __('navigation.categories') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/product/ingredients') ? ' active' : '' }}">
<a href="{{ route('admin_product_ingredients') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-ice-cream"></i><div>{{ __('navigation.ingredients') }}</div></a>
</li>
{{--<li class="sidenav-item{{ Request::is('admin/product/attributes') ? ' active' : '' }}">
<a href="{{ route('admin_product_attributes') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-apps"></i><div>{{ __('navigation.attribute') }}</div></a>
</li>
--}}
</ul>
</li>
@endif
@if(Auth::user()->isAdmin()) @if(Auth::user()->isAdmin())
<li class="sidenav-divider mb-1"></li> <li class="sidenav-divider mb-1"></li>
<li class="sidenav-header small font-weight-semibold">ADMIN</li> <li class="sidenav-header small font-weight-semibold">ADMIN</li>
<li class="sidenav-item{{ Request::is('admin/leads') ? ' active' : '' }} {{ Request::is('admin/lead/edit/*') ? ' active' : '' }}"> <li class="sidenav-item{{ Request::is('admin/leads') ? ' active' : '' }} {{ Request::is('admin/lead/edit/*') ? ' active' : '' }}">
<a href="{{ route('admin_leads') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-contacts"></i><div>{{ __('navigation.member') }}</div></a> <a href="{{ route('admin_leads') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-contacts"></i><div>{{ __('navigation.member') }}</div></a>
</li> </li>
@ -134,8 +159,6 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="sidenav-item @if(Request::is('admin/payments/*')) open @endif"> <li class="sidenav-item @if(Request::is('admin/payments/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle"> <a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-cash"></i> <i class="sidenav-icon ion ion-md-cash"></i>
@ -152,29 +175,7 @@
<a href="{{ route('admin_payments_invoice') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-arrow-dropleft-circle"></i><div>{{ __('navigation.invoice') }}</div></a> <a href="{{ route('admin_payments_invoice') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-arrow-dropleft-circle"></i><div>{{ __('navigation.invoice') }}</div></a>
</li> </li>
</ul> </ul>
</li> </li>
<li class="sidenav-item @if(Request::is('admin/product/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-cube"></i>
<div>{{ __('navigation.products') }}</div>
</a>
<ul class="sidenav-menu">
<li class="sidenav-item{{ Request::is('admin/product/show') ? ' active' : '' }}">
<a href="{{ route('admin_product_show') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cube"></i><div>{{ __('navigation.overview') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/product/categories') ? ' active' : '' }}">
<a href="{{ route('admin_product_categories') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-list"></i><div>{{ __('navigation.categories') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/product/ingredients') ? ' active' : '' }}">
<a href="{{ route('admin_product_ingredients') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-ice-cream"></i><div>{{ __('navigation.ingredients') }}</div></a>
</li>
<li class="sidenav-item{{ Request::is('admin/product/attributes') ? ' active' : '' }}">
<a href="{{ route('admin_product_attributes') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-apps"></i><div>{{ __('navigation.attribute') }}</div></a>
</li>
</ul>
</li>
<li class="sidenav-item @if(Request::is('admin/promotions', '/admin/promotion/*')) open @endif"> <li class="sidenav-item @if(Request::is('admin/promotions', '/admin/promotion/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle"> <a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-ios-rocket"></i> <i class="sidenav-icon ion ion-ios-rocket"></i>

View file

@ -202,26 +202,8 @@ Route::domain(config('app.domain'))->group(function () {
Route::get('/user/promotion/delete/{id}/{del?}', 'User\PromotionController@delete')->name('user_promotion_delete'); Route::get('/user/promotion/delete/{id}/{del?}', 'User\PromotionController@delete')->name('user_promotion_delete');
}); });
Route::group(['middleware' => ['copyreader']], function()
Route::group(['middleware' => ['admin']], function()
{ {
//translate
Route::get('/admin/translate/all', 'TranslationController@index')->name('admin_translate_all');
Route::get('/admin/translate/all/edit/{lang}/{from?}', 'TranslationController@edit')->name('admin_translate_all_edit');
Route::post('/admin/translate/all/update/{lang}/{from?}', 'TranslationController@update')->name('admin_translate_all_update');
Route::get('/admin/translate/file', 'TranslationFileController@index')->name('admin_translate_file');
Route::get('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@edit')->name('admin_translate_file_edit');
Route::post('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@update')->name('admin_translate_file_update');
//site
Route::get('/admin/sites/{site}', 'SitesController@show')->name('admin_sites');
Route::post('/admin/sites/store/{site}', 'SitesController@store')->name('admin_sites_store');
Route::post('/admin/sites/image/upload/{site}', 'SitesController@imageUpload')->name('admin_sites_image_upload');
Route::get('/admin/sites/image/delete/{site}/{image_id}', 'SitesController@imageDelete')->name('admin_sites_image_delete');
Route::get('/admin/sites/image/attribute/{site}/{image_id}/{attr}/{val}', 'SitesController@imageAttribute')->name('admin_sites_image_attribute');
//products //products
Route::get('/admin/product/show', 'ProductController@index')->name('admin_product_show'); Route::get('/admin/product/show', 'ProductController@index')->name('admin_product_show');
Route::post('/admin/product/store', 'ProductController@store')->name('admin_product_store'); Route::post('/admin/product/store', 'ProductController@store')->name('admin_product_store');
@ -255,8 +237,27 @@ Route::domain(config('app.domain'))->group(function () {
Route::get('/admin/product/attributes', 'AttributeController@index')->name('admin_product_attributes'); Route::get('/admin/product/attributes', 'AttributeController@index')->name('admin_product_attributes');
Route::post('/admin/product/attribute/store', 'AttributeController@store')->name('admin_product_attribute_store'); Route::post('/admin/product/attribute/store', 'AttributeController@store')->name('admin_product_attribute_store');
Route::get('/admin/product/attribute/delete/{id}', 'AttributeController@delete')->name('admin_product_attribute_delete'); Route::get('/admin/product/attribute/delete/{id}', 'AttributeController@delete')->name('admin_product_attribute_delete');
});
Route::group(['middleware' => ['admin']], function()
{
//translate
Route::get('/admin/translate/all', 'TranslationController@index')->name('admin_translate_all');
Route::get('/admin/translate/all/edit/{lang}/{from?}', 'TranslationController@edit')->name('admin_translate_all_edit');
Route::post('/admin/translate/all/update/{lang}/{from?}', 'TranslationController@update')->name('admin_translate_all_update');
Route::get('/admin/translate/file', 'TranslationFileController@index')->name('admin_translate_file');
Route::get('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@edit')->name('admin_translate_file_edit');
Route::post('/admin/translation/file/{file}/{language?}/{langsource?}/{show?}', 'TranslationFileController@update')->name('admin_translate_file_update');
//site
Route::get('/admin/sites/{site}', 'SitesController@show')->name('admin_sites');
Route::post('/admin/sites/store/{site}', 'SitesController@store')->name('admin_sites_store');
Route::post('/admin/sites/image/upload/{site}', 'SitesController@imageUpload')->name('admin_sites_image_upload');
Route::get('/admin/sites/image/delete/{site}/{image_id}', 'SitesController@imageDelete')->name('admin_sites_image_delete');
Route::get('/admin/sites/image/attribute/{site}/{image_id}/{attr}/{val}', 'SitesController@imageAttribute')->name('admin_sites_image_attribute');
//Route::get('/admin/products/import', 'ImportProductController@import')->name('admin_product_import'); //Route::get('/admin/products/import', 'ImportProductController@import')->name('admin_product_import');
//leads //leads