Поиск пользователя с помощью Auth - Laravel - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь найти зарегистрированного пользователя в моем приложении, используя Auth, но я получаю trying to get property of non-object, что я ясно понимаю, что оно возвращает ноль.

В моем коде ниже, событие вызывает мой webhook и сообщение отправляется на адрес ниже. Функция orderCreateWebhook срабатывает, но именно здесь возникает ошибка ..

Линия $get_template = Order::where('id', Auth::user()->id);. Почему Auth возвращает ноль, пожалуйста? Я также вошел, потому что я использую аутентификацию в этом же контроллере для другой функции, которая работает нормально.

Это потому, что это веб-крючок?

Контроллер

public function registerOrderCreateWebhook(Request $request)
    {

            $shop = "feas.myshopify.com";
            $token = "8f43d89a64e922d7d343c1173f6d";
            $shopify = Shopify::setShopUrl($shop)->setAccessToken($token);
            Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", ['webhook' => 
             ['topic' => 'orders/create',
             'address' => 'https://larashop.domain.com/order-create-webhook',
             'format' => 'json'
             ]
            ]);
    }




     public function orderCreateWebhook(Request $request)
    {

         $get_template = Order::where('id', Auth::user()->id);

        $baseurl = "https://apps.domain.net/smsapi";
        $query = "?key=7e3e4d4a6cfebc08eadc&to=number&msg=message&sender_id=Shopify";
        $final_uri = $baseurl.$query;
        $response = file_get_contents($final_uri);
        header ("Content-Type:text/xml");

    }

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

В вашей функции registerOrderCreateWebhook вы, похоже, делаете запрос на шоппинг api и предоставляете свой webhook в качестве адреса, по которому shopify перенаправляет пользователя в случае успеха. Если это правильно, то этот запрос не знает о пользователе, который сгенерировал исходный запрос, который сделал запрос API, поскольку запрос исходит из совершенно другого источника.

Вам нужно будет передать ключ вместе с URL-адресом, а затем получить пользователя в orderCreateWebhook. Что-то вроде:

Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", 
['webhook' => 
    ['topic' => 'orders/create',
     'address' => 'https://larashop.domain.com/order-create-webhook/some-unique-key',
     'format' => 'json'
    ]
 ]);

Мое предложение - хранить где-то уникальный хеш, который относится к пользователю в вашей системе, возможно, к столбцу в вашей таблице пользователей. Я бы не стал использовать user_id по соображениям безопасности. Таким образом, вы получите что-то вроде:

//route
Route::get('/order-create-webhook/{uniqueKey}', 'YourController@orderCreateWebhook');
//or
Route::post('/order-create-webhook/{uniqueKey}', 'YourController@orderCreateWebhook');
// depending on the request type used by api which calls this endpoint

// controller function
public function orderCreateWebhook($uniqueKey, Request $request)
{

     $user = User::where('unique_key', $uniqueKey)->first();
     $get_template = Order::where('id', Auth::user()->id);

     $baseurl = "https://apps.domain.net/smsapi";
     $query = "?key=7e3e4d4a6cfebc08eadc&to=number&msg=message&sender_id=Shopify";
     $final_uri = $baseurl.$query;
     $response = file_get_contents($final_uri);
     header ("Content-Type:text/xml");

}
0 голосов
/ 07 ноября 2018

просто используйте это, чтобы получить аутентифицированного пользователя использовать фасад в своем классе / Контроллер

use Illuminate\Support\Facades\Auth

public function getAuthUser(){
    $user = Auth::user()
    if(!is_null($user)
   {
    //user is authenticated
   }
  else 
   {
    // no user
   }
}
0 голосов
/ 06 ноября 2018

Это потому что это веб-крючок?

Да, вы не можете использовать сеансы в веб-крюке. Это сервер shopify, который делает звонок. Вы должны прочитать документ, это может быть способ дать уникальный идентификатор в вашем звонке, чтобы сделать покупки API и вернуть его в webhook, чтобы найти вашего пользователя, связанного.

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