mobilebackendgateway/app/Http/Controllers/AccessTokenController.php

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'));
}
}