diff --git a/.env.example b/.env.example index 7719445..1252e1d 100644 --- a/.env.example +++ b/.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 diff --git a/app/Http/Controllers/AccessTokenController.php b/app/Http/Controllers/AccessTokenController.php index 1d09a09..0e453c0 100644 --- a/app/Http/Controllers/AccessTokenController.php +++ b/app/Http/Controllers/AccessTokenController.php @@ -1,6 +1,9 @@ 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 diff --git a/app/Models/Agent.php b/app/Models/AgentPlus.php similarity index 57% rename from app/Models/Agent.php rename to app/Models/AgentPlus.php index cdd851b..45feaba 100644 --- a/app/Models/Agent.php +++ b/app/Models/AgentPlus.php @@ -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(); } /** diff --git a/app/Models/Country.php b/app/Models/Country.php new file mode 100644 index 0000000..d3d5114 --- /dev/null +++ b/app/Models/Country.php @@ -0,0 +1,54 @@ + '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'); + } +} diff --git a/app/Models/Network.php b/app/Models/Network.php new file mode 100644 index 0000000..7600340 --- /dev/null +++ b/app/Models/Network.php @@ -0,0 +1,47 @@ + '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'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index b025e0a..eee16db 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -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(); } /** diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index a9f8c8b..bbda942 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -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', + ]); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index a68ade2..9806c01 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -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, diff --git a/config/auth.php b/config/auth.php index 1b7995f..80b0755 100644 --- a/config/auth.php +++ b/config/auth.php @@ -72,7 +72,7 @@ return [ ], 'agents' => [ 'driver' => 'eloquent', - 'model' => \App\Models\Agent::class + 'model' => \App\Models\AgentPlus::class ] ],