Laravel 5.4 несовместим без ответа и без ошибок в журналах - PullRequest
0 голосов
/ 16 октября 2018

ВАЖНОЕ РЕДАКТИРОВАНИЕ: Кажется, я не могу воспроизвести проблему в Chrome, она периодически возникает в Firefox (около 50/50).И это происходит еще больше на краю (около 70/30).

Я проверил другие подобные вопросы, но они не решают проблему.

Я использую Angular JS с Laravel 5.4, отправляю запрос GET, и иногда он бывает успешным, а иногда и неудачным.Когда я говорю «провал», я имею в виду, что буквально ничего не получаю назад.Я не получаю ошибок, и я могу подтвердить, что файл laravel.log регистрирует другие ошибки, но ничего для этого нет.

В моей консоли у меня есть два примера, которые были сделаны один за другим.

запрос называется get-user-roles, а функция вызывается по адресу UserController@getUserRoles

Ошибка: enter image description here

Успешно: enter image description here Вы можете видеть, что во втором я получаю пустые данные, как и ожидалось.

Вот мои web.php в / маршрутов

Route::group(
    [
        'middleware' => ['cors', 'switchdb'],

    ], function () {

    // auth

    Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
    Route::post('authenticate', 'AuthenticateController@authenticate');

    Route::group(
        [
            'middleware' => ['jwt.auth'],

        ], function () {
        Route::get('get-user-roles', 'UserController@getUserRoles');
    });

    Route::group(
        [
            'middleware' => ['jwt.auth', 'is-not-customer'],

        ], function () {
        // more functions
    });
});

Вот мой контроллер UserController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\Role;
use App\Http\Requests\PublishUserRequest;
use App\Http\Requests\ChangePasswordRequest;
use Auth;


class UserController extends Controller
{

    protected $user;

    public function __construct()
    {
        $this->user = new User();
    }

    public function getUserRoles()
    {
        try {
            $roles = $this->user->getPagesForRoles(Auth::user()->id);
            foreach ($roles as $key => $role) {
                if ($role['hasRole'] == 0) {
                    unset($roles[$key]);
                }
            }

            return response()->json([
                'data' => $roles
            ], 200
            );

        } catch (\Exception $e) {
            return response()->json([
                'message' => $e->getMessage(),
                'line' => $e->getLine()
            ], 400
            );
        }
    }
}

И мой код модели (App\User) для получения ролей ...

public function getPagesForRoles($userID = false)
{
    if (!$userID) {
        $userID = Auth::user()->id;
    }

    $pagesForRoles = $this->role->getRoles();

    // check if user has role or not and add it to data
    if ($userID != 0) {

        foreach ($pagesForRoles as $key => &$role) {
            $hasRole = DB::table('user_roles')
                ->where('role_id', '=', $key)
                ->where('user_id', '=', $userID)
                ->get();

            if (isset($hasRole[0])) {
                if($key == 'admin') {
                    $hasAdminRole = 1;
                }
                $role['hasRole'] = 1;
            } else {
                $role['hasRole'] = 0;
            }
        }
    }

    if($userID == 1 || (isset($hasAdminRole) && $hasAdminRole == 1)) {
        $pagesForRoles = array(
            $pagesForRoles['admin']
        );
        $pagesForRoles[0]['hasRole'] = 1;
    }

    return $pagesForRoles;
}

getRoles(), который вызывается в коде моделипросто возвращает жестко закодированный массив.

EDIT: Стоит отметить, что когда я выполняю die('test'); в своей функции контроллера, я получаю ответ каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...