Add user to tokenResponse
This commit is contained in:
parent
030a029ebd
commit
acc445efef
19
.env.example
19
.env.example
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -12,56 +12,63 @@ 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 = [
|
||||
|
@ -69,39 +76,43 @@ class Agent extends Model implements AuthenticatableContract, AuthorizableContra
|
|||
];
|
||||
|
||||
protected $fillable = [
|
||||
'id',
|
||||
'uid',
|
||||
'firstname',
|
||||
'adresse',
|
||||
'lastname',
|
||||
'email',
|
||||
'longitude',
|
||||
'latitude',
|
||||
'adresse',
|
||||
'balance',
|
||||
'encrypted_password',
|
||||
'salt',
|
||||
'longitude',
|
||||
'latitude',
|
||||
'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();
|
||||
}
|
||||
|
||||
/**
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -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');
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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();
|
||||
// Route::group(['middleware' => 'oauth.providers'], function () {
|
||||
//// LumenPassport::routes(function ($router) {
|
||||
////// dd($router);
|
||||
//// return $router->all();
|
||||
//// });
|
||||
// LumenPassport::routes($this->app->router);
|
||||
// });
|
||||
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',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -72,7 +72,7 @@ return [
|
|||
],
|
||||
'agents' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => \App\Models\Agent::class
|
||||
'model' => \App\Models\AgentPlus::class
|
||||
]
|
||||
],
|
||||
|
||||
|
|
Loading…
Reference in New Issue