93 lines
3.2 KiB
PHP
Executable File
93 lines
3.2 KiB
PHP
Executable File
<?php
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\AgentPlus;
|
|
use App\Models\Country;
|
|
use App\Models\Network;
|
|
use App\Models\User;
|
|
use App\Traits\ApiResponser;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Http\Request;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
use League\OAuth2\Server\Exception\OAuthServerException;
|
|
|
|
use \Laravel\Passport\Http\Controllers\AccessTokenController as ATC;
|
|
|
|
// Completely overrides Laravel\Passport\Http\Controllers\AccessTokenController
|
|
class AccessTokenController extends ATC
|
|
{
|
|
use ApiResponser;
|
|
public function issueToken(ServerRequestInterface $request)
|
|
{
|
|
|
|
try {
|
|
// dd($request);
|
|
// //get username (default is :email)
|
|
// $username = $request->getParsedBody()['username'];
|
|
//
|
|
// //get user
|
|
// $user = User::where('email', '=', $username)->firstOrFail();
|
|
|
|
//issuetoken
|
|
$tokenResponse = parent::issueToken($request);
|
|
|
|
//convert response to json string
|
|
$content = $tokenResponse->getContent();
|
|
|
|
//convert json to array
|
|
$data = json_decode($content, true);
|
|
|
|
if(isset($data["error"]))
|
|
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
|
|
|
|
if($request->getParsedBody()["grant_type"] == "password"){
|
|
|
|
$username = $request->getParsedBody()['username'];
|
|
$user = null ;
|
|
if ($request->getParsedBody()["provider"] == "users")
|
|
{
|
|
$user = User::where('email', $username)->orWhere('phone', $username)->first();
|
|
$user["network"] = Network::where('id', $user["network_id"])->firstOrFail();
|
|
$user["country"] = Country::where('id', $user["network"]["country_id"])->firstOrFail();
|
|
}elseif ($request->getParsedBody()["provider"] == "agents")
|
|
{
|
|
$user = AgentPlus::where('email', $username)->orWhere('phone', $username)->orWhere('transactionNumber', $username)->first();
|
|
$user["nbre_sous_reseau"] = $user["number_geoBysuper"];
|
|
unset($user["number_geoBysuper"]);
|
|
$user["nbre_reseau"] = $user["number_super"];
|
|
unset($user["number_super"]);
|
|
}
|
|
|
|
$data["user"] = $user;
|
|
}
|
|
|
|
//add access token to user
|
|
// $user = collect($user);
|
|
// $user->put('access_token', $data['access_token']);
|
|
//
|
|
// return Response::json(array($user));
|
|
return $data;
|
|
}
|
|
catch (ModelNotFoundException $e) { // email notfound
|
|
//return error message
|
|
}
|
|
catch (OAuthServerException $e) { //password not correct..token not granted
|
|
//return error message
|
|
}
|
|
catch (Exception $e) {
|
|
////return error message
|
|
}
|
|
}
|
|
|
|
|
|
public function logout(Request $request) {
|
|
// Auth::user()->tokens->each(function($token, $key) {
|
|
// $token->delete();
|
|
// });
|
|
$request->user()->token()->delete();
|
|
return $this->successResponse(trans('errors.logout'));
|
|
}
|
|
|
|
}
|