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_NAME=MobileBackendGateway
|
||||||
APP_ENV=local
|
APP_ENV=production
|
||||||
APP_KEY=
|
APP_KEY=HMkQkYmHtj9OORi9mlW5cfUkymV7NBuh
|
||||||
APP_DEBUG=true
|
APP_DEBUG=false
|
||||||
APP_URL=http://localhost
|
APP_URL=https://test.ilink-app.com
|
||||||
APP_TIMEZONE=UTC
|
APP_TIMEZONE=UTC
|
||||||
|
|
||||||
LOG_CHANNEL=stack
|
LOG_CHANNEL=stack
|
||||||
|
@ -11,9 +11,12 @@ LOG_SLACK_WEBHOOK_URL=
|
||||||
DB_CONNECTION=mysql
|
DB_CONNECTION=mysql
|
||||||
DB_HOST=127.0.0.1
|
DB_HOST=127.0.0.1
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_DATABASE=homestead
|
DB_DATABASE=iLink_test2
|
||||||
DB_USERNAME=homestead
|
DB_USERNAME=root
|
||||||
DB_PASSWORD=secret
|
DB_PASSWORD=vps@2017GA
|
||||||
|
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=file
|
||||||
QUEUE_CONNECTION=sync
|
QUEUE_CONNECTION=sync
|
||||||
|
|
||||||
|
MOBILEBACKEND_BASE_URL =https://ilink-app.com
|
||||||
|
MOBILEBACKENDTEST_BASE_URL =https://ilink-app.com
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
<?php
|
<?php
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\AgentPlus;
|
||||||
|
use App\Models\Country;
|
||||||
|
use App\Models\Network;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
@ -16,17 +19,18 @@ class AccessTokenController extends ATC
|
||||||
{
|
{
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//get username (default is :email)
|
// dd($request);
|
||||||
$username = $request->getParsedBody()['username'];
|
// //get username (default is :email)
|
||||||
|
// $username = $request->getParsedBody()['username'];
|
||||||
//get user
|
//
|
||||||
$user = User::where('email', '=', $username)->firstOrFail();
|
// //get user
|
||||||
|
// $user = User::where('email', '=', $username)->firstOrFail();
|
||||||
|
|
||||||
//issuetoken
|
//issuetoken
|
||||||
$tokenResponse = parent::issueToken($request);
|
$tokenResponse = parent::issueToken($request);
|
||||||
|
|
||||||
//convert response to json string
|
//convert response to json string
|
||||||
$content = $tokenResponse->getBody()->__toString();
|
$content = $tokenResponse->getContent();
|
||||||
|
|
||||||
//convert json to array
|
//convert json to array
|
||||||
$data = json_decode($content, true);
|
$data = json_decode($content, true);
|
||||||
|
@ -34,11 +38,33 @@ class AccessTokenController extends ATC
|
||||||
if(isset($data["error"]))
|
if(isset($data["error"]))
|
||||||
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
|
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
|
||||||
|
|
||||||
//add access token to user
|
if($request->getParsedBody()["grant_type"] == "password"){
|
||||||
$user = collect($user);
|
|
||||||
$user->put('access_token', $data['access_token']);
|
|
||||||
|
|
||||||
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
|
catch (ModelNotFoundException $e) { // email notfound
|
||||||
//return error message
|
//return error message
|
||||||
|
|
|
@ -12,96 +12,107 @@ use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
|
||||||
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
|
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Laravel\Lumen\Auth\Authorizable;
|
use Laravel\Lumen\Auth\Authorizable;
|
||||||
use Laravel\Passport\HasApiTokens;
|
use phpDocumentor\Reflection\Types\This;
|
||||||
use SMartins\PassportMultiauth\HasMultiAuthApiTokens;
|
use SMartins\PassportMultiauth\HasMultiAuthApiTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Agent
|
* Class AgentPlus
|
||||||
*
|
*
|
||||||
* @property int $id
|
* @property int $id
|
||||||
* @property string $uid
|
* @property string $uid
|
||||||
* @property string $firstname
|
* @property string $firstname
|
||||||
|
* @property string $adresse
|
||||||
* @property string $lastname
|
* @property string $lastname
|
||||||
* @property string $email
|
* @property string $email
|
||||||
* @property float $longitude
|
|
||||||
* @property float $latitude
|
|
||||||
* @property string $adresse
|
|
||||||
* @property float $balance
|
|
||||||
* @property string $encrypted_password
|
* @property string $encrypted_password
|
||||||
* @property string $salt
|
* @property string $salt
|
||||||
|
* @property float $longitude
|
||||||
|
* @property float $latitude
|
||||||
|
* @property string $phone
|
||||||
* @property int $active
|
* @property int $active
|
||||||
* @property Carbon $date_created
|
* @property Carbon $created
|
||||||
* @property Carbon $open_hours
|
* @property Carbon $openHours
|
||||||
* @property Carbon $close_hours
|
* @property Carbon $closeHours
|
||||||
* @property int $town_id
|
* @property float $solde
|
||||||
* @property int $number_super
|
* @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 int $number_geoBysuper
|
||||||
*
|
* @property int $network_id
|
||||||
* @property Town $town
|
* @property string $code_dial
|
||||||
|
* @property string $transactionNumber
|
||||||
*
|
*
|
||||||
* @package App\Models
|
* @package App\Models
|
||||||
*/
|
*/
|
||||||
class Agent extends Model implements AuthenticatableContract, AuthorizableContract
|
class AgentPlus extends Model implements AuthenticatableContract, AuthorizableContract
|
||||||
{
|
{
|
||||||
use HasMultiAuthApiTokens, Authenticatable, Authorizable;
|
use HasMultiAuthApiTokens, Authenticatable, Authorizable;
|
||||||
|
protected $table = 'agent_plus';
|
||||||
protected $table = 'agents';
|
public $incrementing = false;
|
||||||
public $timestamps = false;
|
public $timestamps = false;
|
||||||
|
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
|
'id' => 'int',
|
||||||
'longitude' => 'float',
|
'longitude' => 'float',
|
||||||
'latitude' => 'float',
|
'latitude' => 'float',
|
||||||
'balance' => 'float',
|
|
||||||
'active' => 'int',
|
'active' => 'int',
|
||||||
'town_id' => 'int',
|
'solde' => 'float',
|
||||||
'number_super' => 'int',
|
'etat' => 'int',
|
||||||
'number_geoBysuper' => 'int'
|
'number_geoBysuper' => 'int',
|
||||||
|
'network_id' => 'int'
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $dates = [
|
protected $dates = [
|
||||||
'date_created',
|
'created',
|
||||||
'open_hours',
|
'openHours',
|
||||||
'close_hours'
|
'closeHours'
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
'encrypted_password'
|
'encrypted_password'
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
|
'id',
|
||||||
'uid',
|
'uid',
|
||||||
'firstname',
|
'firstname',
|
||||||
|
'adresse',
|
||||||
'lastname',
|
'lastname',
|
||||||
'email',
|
'email',
|
||||||
|
'encrypted_password',
|
||||||
|
'salt',
|
||||||
'longitude',
|
'longitude',
|
||||||
'latitude',
|
'latitude',
|
||||||
'adresse',
|
'phone',
|
||||||
'balance',
|
|
||||||
'encrypted_password',
|
|
||||||
'salt',
|
|
||||||
'active',
|
'active',
|
||||||
'date_created',
|
'created',
|
||||||
'open_hours',
|
'openHours',
|
||||||
'close_hours',
|
'closeHours',
|
||||||
'town_id',
|
'solde',
|
||||||
'number_super',
|
'etat',
|
||||||
'number_geoBysuper'
|
'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.
|
* Find the user instance for the given username.
|
||||||
*
|
*
|
||||||
* @param string $username
|
* @param string $username
|
||||||
* @return \App\Models\User
|
* @return \App\Models\AgentPlus
|
||||||
*/
|
*/
|
||||||
public function findForPassport($username)
|
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)
|
public function findForPassport($username)
|
||||||
{
|
{
|
||||||
// return $this->where('phone', $username)->first();
|
// 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);
|
LumenPassport::routes($this->app->router);
|
||||||
|
|
||||||
// Middleware `oauth.providers` middleware defined on $routeMiddleware above
|
// Middleware `oauth.providers` middleware defined on $routeMiddleware above
|
||||||
Route::group(['middleware' => 'oauth.providers'], function () {
|
// Route::group(['middleware' => 'oauth.providers'], function () {
|
||||||
// LumenPassport::routes(function ($router) {
|
//// LumenPassport::routes(function ($router) {
|
||||||
//// dd($router);
|
////// dd($router);
|
||||||
// return $router->all();
|
//// return $router->all();
|
||||||
// });
|
//// });
|
||||||
LumenPassport::routes($this->app->router);
|
// LumenPassport::routes($this->app->router);
|
||||||
});
|
// });
|
||||||
|
|
||||||
//For customizing access token response
|
//For customizing access token response
|
||||||
// Route::post('/oauth/token','\App\Http\Controllers\AccessTokenController@issueToken');
|
Route::post('/oauth/token', [
|
||||||
// Route::post('/oauth/token', [
|
'uses' => '\App\Http\Controllers\AccessTokenController@issueToken',
|
||||||
// 'uses' => '\App\Http\Controllers\AccessTokenController@issueToken',
|
// 'as' => 'passport.token',
|
||||||
//// 'as' => 'passport.token',
|
'middleware' => 'oauth.providers',
|
||||||
//// 'middleware' => 'throttle',
|
]);
|
||||||
// ]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,9 +86,8 @@ $app->configure('app');
|
||||||
// 'auth' => App\Http\Middleware\Authenticate::class,
|
// 'auth' => App\Http\Middleware\Authenticate::class,
|
||||||
'clients.credentials' => Laravel\Passport\Http\Middleware\
|
'clients.credentials' => Laravel\Passport\Http\Middleware\
|
||||||
CheckClientCredentials::class,
|
CheckClientCredentials::class,
|
||||||
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
|
|
||||||
// ** New middleware **
|
// ** New middleware **
|
||||||
'multiauth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class,
|
'auth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class,
|
||||||
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
|
||||||
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
|
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||||
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
'can' => \Illuminate\Auth\Middleware\Authorize::class,
|
||||||
|
|
|
@ -72,7 +72,7 @@ return [
|
||||||
],
|
],
|
||||||
'agents' => [
|
'agents' => [
|
||||||
'driver' => 'eloquent',
|
'driver' => 'eloquent',
|
||||||
'model' => \App\Models\Agent::class
|
'model' => \App\Models\AgentPlus::class
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue