Add user to tokenResponse

This commit is contained in:
DJERY-TOM 2020-03-30 22:52:52 +01:00
parent 030a029ebd
commit acc445efef
9 changed files with 217 additions and 78 deletions

View File

@ -1,8 +1,8 @@
APP_NAME=Lumen
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_NAME=MobileBackendGateway
APP_ENV=production
APP_KEY=HMkQkYmHtj9OORi9mlW5cfUkymV7NBuh
APP_DEBUG=false
APP_URL=https://test.ilink-app.com
APP_TIMEZONE=UTC
LOG_CHANNEL=stack
@ -11,9 +11,12 @@ LOG_SLACK_WEBHOOK_URL=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_DATABASE=iLink_test2
DB_USERNAME=root
DB_PASSWORD=vps@2017GA
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
MOBILEBACKEND_BASE_URL =https://ilink-app.com
MOBILEBACKENDTEST_BASE_URL =https://ilink-app.com

View File

@ -1,6 +1,9 @@
<?php
namespace App\Http\Controllers;
use App\Models\AgentPlus;
use App\Models\Country;
use App\Models\Network;
use App\Models\User;
use Illuminate\Http\Response;
use Psr\Http\Message\ServerRequestInterface;
@ -16,17 +19,18 @@ class AccessTokenController extends ATC
{
try {
//get username (default is :email)
$username = $request->getParsedBody()['username'];
//get user
$user = User::where('email', '=', $username)->firstOrFail();
// 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->getBody()->__toString();
$content = $tokenResponse->getContent();
//convert json to array
$data = json_decode($content, true);
@ -34,11 +38,33 @@ class AccessTokenController extends ATC
if(isset($data["error"]))
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
//add access token to user
$user = collect($user);
$user->put('access_token', $data['access_token']);
if($request->getParsedBody()["grant_type"] == "password"){
return Response::json(array($user));
$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

View File

@ -12,96 +12,107 @@ use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Database\Eloquent\Model;
use Laravel\Lumen\Auth\Authorizable;
use Laravel\Passport\HasApiTokens;
use phpDocumentor\Reflection\Types\This;
use SMartins\PassportMultiauth\HasMultiAuthApiTokens;
/**
* Class Agent
* Class AgentPlus
*
* @property int $id
* @property string $uid
* @property string $firstname
* @property string $adresse
* @property string $lastname
* @property string $email
* @property float $longitude
* @property float $latitude
* @property string $adresse
* @property float $balance
* @property string $encrypted_password
* @property string $salt
* @property float $longitude
* @property float $latitude
* @property string $phone
* @property int $active
* @property Carbon $date_created
* @property Carbon $open_hours
* @property Carbon $close_hours
* @property int $town_id
* @property int $number_super
* @property Carbon $created
* @property Carbon $openHours
* @property Carbon $closeHours
* @property float $solde
* @property int $etat
* @property string $network
* @property string $country
* @property string $code_parrain
* @property string $category
* @property string $code_membre
* @property int $number_geoBysuper
*
* @property Town $town
* @property int $network_id
* @property string $code_dial
* @property string $transactionNumber
*
* @package App\Models
*/
class Agent extends Model implements AuthenticatableContract, AuthorizableContract
class AgentPlus extends Model implements AuthenticatableContract, AuthorizableContract
{
use HasMultiAuthApiTokens, Authenticatable, Authorizable;
protected $table = 'agents';
protected $table = 'agent_plus';
public $incrementing = false;
public $timestamps = false;
protected $casts = [
'id' => 'int',
'longitude' => 'float',
'latitude' => 'float',
'balance' => 'float',
'active' => 'int',
'town_id' => 'int',
'number_super' => 'int',
'number_geoBysuper' => 'int'
'solde' => 'float',
'etat' => 'int',
'number_geoBysuper' => 'int',
'network_id' => 'int'
];
protected $dates = [
'date_created',
'open_hours',
'close_hours'
'created',
'openHours',
'closeHours'
];
protected $hidden = [
'encrypted_password'
];
protected $hidden = [
'encrypted_password'
];
protected $fillable = [
'id',
'uid',
'firstname',
'adresse',
'lastname',
'email',
'encrypted_password',
'salt',
'longitude',
'latitude',
'adresse',
'balance',
'encrypted_password',
'salt',
'phone',
'active',
'date_created',
'open_hours',
'close_hours',
'town_id',
'number_super',
'number_geoBysuper'
'created',
'openHours',
'closeHours',
'solde',
'etat',
'network',
'country',
'code_parrain',
'category',
'code_membre',
'number_geoBysuper',
'network_id',
'code_dial',
'transactionNumber'
];
public function town()
{
return $this->belongsTo(Town::class);
}
/**
* Find the user instance for the given username.
*
* @param string $username
* @return \App\Models\User
* @return \App\Models\AgentPlus
*/
public function findForPassport($username)
{
return $this->where('email', $username)->first();
return $this->where('email', $username)->orWhere('phone', $username)->orWhere('transactionNumber', $username)->first();
}
/**

54
app/Models/Country.php Normal file
View File

@ -0,0 +1,54 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Country
*
* @property int $id
* @property string $code_dial
* @property string $name
* @property string $code_country
* @property float $longitude
* @property float $latitude
*
* @property Collection|Admin[] $admins
* @property Collection|ConfigGame[] $config_games
*
* @package App\Models
*/
class Country extends Model
{
protected $table = 'countries';
public $timestamps = false;
protected $casts = [
'longitude' => 'float',
'latitude' => 'float'
];
protected $fillable = [
'code_dial',
'name',
'code_country',
'longitude',
'latitude'
];
public function admins()
{
return $this->hasMany(Admin::class, 'country');
}
public function config_games()
{
return $this->hasMany(ConfigGame::class, 'id_pays');
}
}

47
app/Models/Network.php Normal file
View File

@ -0,0 +1,47 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* Class Network
*
* @property int $id
* @property int $country_id
* @property string $name
* @property int $id_networkAgent
* @property int $status
*
* @property Collection|ConfigWallet[] $config_wallets
*
* @package App\Models
*/
class Network extends Model
{
protected $table = 'networks';
public $timestamps = false;
protected $casts = [
'country_id' => 'int',
'id_networkAgent' => 'int',
'status' => 'int'
];
protected $fillable = [
'country_id',
'name',
'id_networkAgent',
'status'
];
public function config_wallets()
{
return $this->hasMany(ConfigWallet::class, 'id_network');
}
}

View File

@ -84,7 +84,7 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac
public function findForPassport($username)
{
// return $this->where('phone', $username)->first();
return $user = (new User)->where('email', $username)->orWhere('phone', $username)->first();
return $this->where('email', $username)->orWhere('phone', $username)->first();
}
/**

View File

@ -41,20 +41,19 @@ class AuthServiceProvider extends ServiceProvider
LumenPassport::routes($this->app->router);
// Middleware `oauth.providers` middleware defined on $routeMiddleware above
Route::group(['middleware' => 'oauth.providers'], function () {
// LumenPassport::routes(function ($router) {
//// dd($router);
// return $router->all();
// });
LumenPassport::routes($this->app->router);
});
// Route::group(['middleware' => 'oauth.providers'], function () {
//// LumenPassport::routes(function ($router) {
////// dd($router);
//// return $router->all();
//// });
// LumenPassport::routes($this->app->router);
// });
//For customizing access token response
// Route::post('/oauth/token','\App\Http\Controllers\AccessTokenController@issueToken');
// Route::post('/oauth/token', [
// 'uses' => '\App\Http\Controllers\AccessTokenController@issueToken',
//// 'as' => 'passport.token',
//// 'middleware' => 'throttle',
// ]);
Route::post('/oauth/token', [
'uses' => '\App\Http\Controllers\AccessTokenController@issueToken',
// 'as' => 'passport.token',
'middleware' => 'oauth.providers',
]);
}
}

View File

@ -86,9 +86,8 @@ $app->configure('app');
// 'auth' => App\Http\Middleware\Authenticate::class,
'clients.credentials' => Laravel\Passport\Http\Middleware\
CheckClientCredentials::class,
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
// ** New middleware **
'multiauth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class,
'auth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,

View File

@ -72,7 +72,7 @@ return [
],
'agents' => [
'driver' => 'eloquent',
'model' => \App\Models\Agent::class
'model' => \App\Models\AgentPlus::class
]
],