Quellcode durchsuchen

+ Авторизация на базе манагера, + выбор описания при формировании

Александр Мусихин vor 2 Jahren
Ursprung
Commit
6241727445

+ 22 - 1
app/Http/Controllers/ExportController.php

@@ -17,6 +17,27 @@ class ExportController extends Controller
         $vars_for_template = [];
         $i = 1;
         foreach ($products as $product){
+            switch ($request->descr) {
+                case 1:
+                    $descr = $product->characteristics . "\r\n" . $product->tech_description_short;
+                    break;
+                case 2:
+                    $descr = $product->characteristics . "\r\n" . $product->tech_description;
+                    break;
+                case 3:
+                    $descr = $product->tech_description_short;
+                    break;
+                case 4:
+                    $descr = $product->tech_description;
+                    break;
+                case 5:
+                default:
+                    $descr = $product->characteristics;
+                    break;
+            }
+
+
+
             $vars_for_template = array_merge($vars_for_template, [
                 'series#' . $i        => $product->series,
                 'product_group#' .$i  => $product->product_group,
@@ -25,7 +46,7 @@ class ExportController extends Controller
                 'name_for_form#' . $i          => $product->name_for_form,
                 'price#' . $i         => number_format($product->price, 0, '', ' '),
                 'image#' . $i         => $product->image_path,
-                'description#' . $i   => str_replace("\n", '</w:t><w:br/><w:t xml:space="preserve">', $product->characteristics . "\r\n" . $product->tech_description),
+                'description#' . $i   => str_replace("\n", '</w:t><w:br/><w:t xml:space="preserve">', $descr),
             ]);
             $i++;
         }

+ 1 - 0
app/Http/Kernel.php

@@ -63,5 +63,6 @@ class Kernel extends HttpKernel
         'signed' => \App\Http\Middleware\ValidateSignature::class,
         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
         'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+        'mgrauth' => \App\Http\Middleware\managerAuthMiddleware::class,
     ];
 }

+ 54 - 0
app/Http/Middleware/managerAuthMiddleware.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Redirect;
+
+class managerAuthMiddleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
+     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
+     */
+    public function handle(Request $request, Closure $next)
+    {
+        if($this->get_auth()){
+            return $next($request);
+        } else {
+            return Redirect::to('http://manager.stroyprofit.com');
+        }
+    }
+
+    private function get_auth()
+    {
+        $user = session('user', false);
+//        dd($user);
+        if (!isset($user['id'])) {
+            $opts = array(
+                'http' => array(
+                    'method' => "GET",
+                    'header' => "Accept-language: en\r\n" .
+                        "Cookie: ci_session=" . $_COOKIE['ci_session'] . "\r\n"
+                )
+            );
+
+            $context = stream_context_create($opts);
+            $response = json_decode(file_get_contents('http://manager.stroyprofit.com/check_auth', false, $context), true);
+
+            if ($response['auth'] != true) {
+
+                return false;
+            } else {
+                session(['user' => $response['user']]);
+
+            }
+        }
+        return true;
+    }
+
+}

+ 11 - 30
resources/views/layouts/app.blade.php

@@ -38,37 +38,18 @@
                     <!-- Right Side Of Navbar -->
                     <ul class="navbar-nav ms-auto">
                         <!-- Authentication Links -->
-                        @guest
-                            @if (Route::has('login'))
-                                <li class="nav-item">
-                                    <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
-                                </li>
+                        <li class="nav-item">
+                            @php
+                                $user = session('user', ['role' => 99, 'sname' => 'blank', 'tname' => 'blank', 'fname' => 'blank', 'username' => 'blank']);
+                            @endphp
+                            @if($user['role'] == '1')
+                                Администратор:
+                            @else
+                                Менеджер:
                             @endif
-
-                            @if (Route::has('register'))
-                                <li class="nav-item">
-                                    <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
-                                </li>
-                            @endif
-                        @else
-                            <li class="nav-item dropdown">
-                                <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
-                                    {{ Auth::user()->name }}
-                                </a>
-
-                                <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
-                                    <a class="dropdown-item" href="{{ route('logout') }}"
-                                       onclick="event.preventDefault();
-                                                     document.getElementById('logout-form').submit();">
-                                        {{ __('Logout') }}
-                                    </a>
-
-                                    <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
-                                        @csrf
-                                    </form>
-                                </div>
-                            </li>
-                        @endguest
+                            {{ $user['sname'] }} {{ $user['fname'] }} {{ $user['tname'] }}
+                            (логин: {{ $user['username'] }})
+                        </li>
                     </ul>
                 </div>
             </div>

+ 12 - 0
resources/views/products/select_export.blade.php

@@ -13,6 +13,18 @@
             <div class="col-12 text-center">
                 <form method="post" action="{{ route('export_docx') }}">
                     @csrf
+                    <div class="row justify-content-center">
+                        <div class="col-3 mb-3">
+                            <label class="form-label">Выберите какое описание вставить в документ</label>
+                            <select name="descr" class="form-select">
+                                <option value="1">Характеристики + краткое описание</option>
+                                <option value="2">Характеристики + полное описание</option>
+                                <option value="3">Только краткое описание</option>
+                                <option value="4">Только полное описание</option>
+                                <option value="5">Только характеристики</option>
+                            </select>
+                        </div>
+                    </div>
                     <input type="hidden" name="ids" value="{{ json_encode($ids) }}">
                     <button type="submit" class="btn btn-primary">Экспорт в .docx</button>
                 </form>

+ 10 - 9
routes/web.php

@@ -15,13 +15,14 @@ use Illuminate\Support\Facades\Route;
 */
 
 
-
-Route::get('/', [ProductController::class, 'index'])->name('index');
-Route::get('/product/{id}', [ProductController::class, 'product'])->name('view_product');
-Route::post('/upload_xls', [ProductController::class, 'upload_xls'])->name('upload_xls');
-Route::post('/upload_image', [ProductController::class, 'upload_image'])->name('upload_image');
-Route::post('/save_product', [ProductController::class, 'save_product'])->name('save_product');
-Route::post('/update_image/{id}', [ProductController::class, 'update_image'])->name('update_image');
-Route::post('/select_export', [ProductController::class, 'select_export'])->name('select_export');
-Route::post('/export_docx', [\App\Http\Controllers\ExportController::class, 'export_docx'])->name('export_docx');
+Route::middleware('mgrauth')->group(function (){
+    Route::get('/', [ProductController::class, 'index'])->name('index');
+    Route::get('/product/{id}', [ProductController::class, 'product'])->name('view_product');
+    Route::post('/upload_xls', [ProductController::class, 'upload_xls'])->name('upload_xls');
+    Route::post('/upload_image', [ProductController::class, 'upload_image'])->name('upload_image');
+    Route::post('/save_product', [ProductController::class, 'save_product'])->name('save_product');
+    Route::post('/update_image/{id}', [ProductController::class, 'update_image'])->name('update_image');
+    Route::post('/select_export', [ProductController::class, 'select_export'])->name('select_export');
+    Route::post('/export_docx', [\App\Http\Controllers\ExportController::class, 'export_docx'])->name('export_docx');
+});
 

+ 3 - 3
todo.txt

@@ -6,12 +6,12 @@
 + если несколько изображений найдено по артикулу - можно выбрать одно
 + выбор товаров с запоминаннием при переходах между страницами
 + формирование документа ворд из выбранных товаров
++ Авторизация в системе на базе «манагера»
++ Выбор описания при экспорте
 
 
-
-todo Авторизация в системе на базе «манагера»
 todo Вынести импорт и экспорт в jobs (позволит импортировать/экспортировать в фоне)
-todo Выбор описания при экспорте
+
 
 
 

+ 19 - 0
www/check-manager-auth.php

@@ -0,0 +1,19 @@
+<?php
+
+$opts = array(
+  'http'=>array(
+    'method'=>"GET",
+    'header'=>"Accept-language: en\r\n" .
+              "Cookie: ci_session=" . $_COOKIE['ci_session'] . "\r\n"
+  )
+);
+
+$context = stream_context_create($opts);
+
+// Open the file using the HTTP headers set above
+$file = file_get_contents('http://manager.stroyprofit.com/check_auth', false, $context);
+
+
+
+echo '<pre>';
+var_dump($file);