<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Imali\MerchantAccount;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Route;
use Laravel\Passport\Client;
use DB;
class MerchantController extends Controller
{
private $client;
public function __construct()
{
$this->client = Client::find(8);
}
public function loggedUser(Request $request)
{
$user = MerchantAccount::query()
->where('id', $request->user()->id)
->first();
return response()->json($user);
}
public function login(Request $request)
{
$this->validate($request, [
'email' => 'required',
'password' => 'required'
], [
'email.required' => 'O Campo Email é Obrigatório',
'password.required' => 'O Campo Senha é Obrigatório',
]);
$params = [
'grant_type' => 'password',
'client_id' => $this->client->id,
'client_secret' => $this->client->secret,
'username' => request('email'),
'password' => request('password'),
'provider' => 'merchant_accounts',
'scope' => '*'
];
$request->request->add($params);
Config::set('auth.guards.api.provider', $params['provider']);
$proxy = Request::create('oauth/token', 'POST');
return Route::dispatch($proxy);
}
public function refresh(Request $request)
{
$this->validate($request, [
'refresh_token' => 'required'
]);
$params = [
'grant_type' => 'refresh_token',
'refresh_token' => request('refresh_token'),
'client_id' => $this->client->id,
'client_secret' => $this->client->secret,
'provider' => 'merchant_accounts',
'username' => request('email'),
'password' => request('password'),
];
$request->request->add($params);
Config::set('auth.guards.api.provider', $params['provider']);
$proxy = Request::create('oauth/token', 'POST');
return Route::dispatch($proxy);
}
public function logout(Request $request)
{
$accessToken = Auth::user()->token();
DB::table('oauth_refresh_tokens')->where('access_token_id', $accessToken->id)
->update(['revoked' => true]);
$accessToken->revoke();
return response()->json([], 204);
}
}