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()
{
$this->middleware('admin');
$this->middleware('copyreader');
}
public function index()

View file

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

View file

@ -15,7 +15,7 @@ class DataTableController extends Controller
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)
->addColumn('first_name', function (User $user) {

View file

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

View file

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

View file

@ -54,6 +54,7 @@ class Kernel extends HttpKernel
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'copyreader' => \App\Http\Middleware\CopyReader::class,
'admin' => \App\Http\Middleware\Admin::class,
'superadmin' => \App\Http\Middleware\SuperAdmin::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('number', '!=', NULL) //has number
->where('id', '!=', $shopping_user->id)
->where('member_id', '!=', $shopping_user->member_id)
->where('billing_lastname', '=', $shopping_user->billing_lastname)
->where('billing_zipcode', '=', $shopping_user->billing_zipcode)
->get()->pluck('number', 'id')->unique()->toArray();

View file

@ -33,9 +33,11 @@ class HTMLHelper
private static $roles = [
0 => 'Kunde',
1 => 'Admin',
2 => 'SuperAdmin',
3 => 'SySAdmin',
1 => 'Redakteur',
7 => 'Admin',
8 => 'SuperAdmin',
9 => 'SySAdmin',
//10 => "API",
];
@ -55,12 +57,18 @@ class HTMLHelper
case 1:
return 'badge-warning';
break;
case 2:
case 7:
return 'badge-primary';
break;
case 3:
case 8:
return 'badge-primary';
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 bool
*/
public function isCopyReader()
{
if($this->admin >= 1){
return true;
}
return false;
}
/**
* @return bool
*/
public function isAdmin()
{
if($this->admin >= 1){
if($this->admin >= 7){
return true;
}
return false;
@ -236,7 +246,7 @@ class User extends Authenticatable
*/
public function isSuperAdmin()
{
if($this->admin >= 2){
if($this->admin >= 8){
return true;
}
return false;
@ -247,7 +257,7 @@ class User extends Authenticatable
*/
public function isSySAdmin()
{
if($this->admin >= 3){
if($this->admin >= 9){
return true;
}
return false;
@ -258,7 +268,7 @@ class User extends Authenticatable
*/
public function isApiUser()
{
if($this->admin >= 4){
if($this->admin >= 10){
return true;
}
return false;

View file

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

View file

@ -108,11 +108,36 @@
</li>
@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())
<li class="sidenav-divider mb-1"></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' : '' }}">
<a href="{{ route('admin_leads') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-contacts"></i><div>{{ __('navigation.member') }}</div></a>
</li>
@ -134,8 +159,6 @@
</li>
</ul>
</li>
<li class="sidenav-item @if(Request::is('admin/payments/*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<i class="sidenav-icon ion ion-md-cash"></i>
@ -153,28 +176,6 @@
</li>
</ul>
</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">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">
<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::group(['middleware' => ['admin']], function()
Route::group(['middleware' => ['copyreader']], 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
Route::get('/admin/product/show', 'ProductController@index')->name('admin_product_show');
Route::post('/admin/product/store', 'ProductController@store')->name('admin_product_store');
@ -255,6 +237,25 @@ Route::domain(config('app.domain'))->group(function () {
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::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');