From acc90bf905c25dceb1cfda51987b6f09748b8cc4 Mon Sep 17 00:00:00 2001 From: DJERY-TOM Date: Sun, 19 Apr 2020 19:53:29 +0100 Subject: [PATCH] Change oauth grant type : 'clients_credentials' to 'password' --- app/Models/User.php | 4 +- app/Models/UsersCredentials.php | 76 +++++++++++++++++++++++++++ app/Providers/AuthServiceProvider.php | 2 + bootstrap/app.php | 6 +-- composer.lock | 54 ++++++++++++++++++- config/auth.php | 23 ++++---- routes/web.php | 7 ++- 7 files changed, 153 insertions(+), 19 deletions(-) create mode 100644 app/Models/UsersCredentials.php diff --git a/app/Models/User.php b/app/Models/User.php index eee16db..e2d05d1 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -14,7 +14,7 @@ use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Laravel\Lumen\Auth\Authorizable; use Laravel\Passport\HasApiTokens; use Illuminate\Support\Facades\Hash; -use SMartins\PassportMultiauth\HasMultiAuthApiTokens; +//use SMartins\PassportMultiauth\HasMultiAuthApiTokens; /** * Class User @@ -39,7 +39,7 @@ use SMartins\PassportMultiauth\HasMultiAuthApiTokens; */ class User extends Model implements AuthenticatableContract, AuthorizableContract { - use HasMultiAuthApiTokens, Authenticatable, Authorizable; + use HasApiTokens, Authenticatable, Authorizable; protected $table = 'users'; public $timestamps = false; diff --git a/app/Models/UsersCredentials.php b/app/Models/UsersCredentials.php new file mode 100644 index 0000000..598efbb --- /dev/null +++ b/app/Models/UsersCredentials.php @@ -0,0 +1,76 @@ +where('phone', $username)->first(); +// dd($this->where('email', $username)->orWhere('phone', $username)->first()); + return $this->where('email', $username)->orWhere('phone', $username)->first(); + } + + /** + * Validate the password of the user for the Passport password grant. + * + * @param string $password + * @return bool + */ + public function validateForPassportPasswordGrant($password) + { +// return Hash::check($password, $this->password); + $encrypted_password = base64_encode(sha1($password . $this->salt, true) . $this->salt); + return $this->encrypted_password == $encrypted_password; + } + +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 5dd9f5c..3234c4e 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -40,6 +40,8 @@ class AuthServiceProvider extends ServiceProvider LumenPassport::routes($this->app->router); + LumenPassport::allowMultipleTokens(); + // Middleware `oauth.providers` middleware defined on $routeMiddleware above // Route::group(['middleware' => 'oauth.providers'], function () { //// LumenPassport::routes(function ($router) { diff --git a/bootstrap/app.php b/bootstrap/app.php index 6a695fd..879e5a9 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -83,9 +83,9 @@ $app->configure('app'); // ]); $app->routeMiddleware([ -// 'auth' => App\Http\Middleware\Authenticate::class, - 'clients.credentials' => Laravel\Passport\Http\Middleware\ - CheckClientCredentials::class, + 'auth' => App\Http\Middleware\Authenticate::class, +// 'clients.credentials' => Laravel\Passport\Http\Middleware\ +// CheckClientCredentials::class, // ** New middleware ** // 'auth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class, // 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, diff --git a/composer.lock b/composer.lock index 65bc7f2..18b144e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "9e7a1979b3fe8cbe7bb0f48938029862", + "content-hash": "4b74369ff3d65550f83f77eaa90a3132", "packages": [ { "name": "brick/math", @@ -3407,6 +3407,58 @@ ], "time": "2020-03-22T02:34:13+00:00" }, + { + "name": "smartins/passport-multiauth", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sfelix-martins/passport-multiauth.git", + "reference": "f4766428e28abe05cc8307415fa16389c56af965" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sfelix-martins/passport-multiauth/zipball/f4766428e28abe05cc8307415fa16389c56af965", + "reference": "f4766428e28abe05cc8307415fa16389c56af965", + "shasum": "" + }, + "require": { + "laravel/passport": "^8.0", + "php": "^7.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/database": "^4.0", + "orchestra/testbench": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "SMartins\\PassportMultiauth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Martins", + "email": "sfelix_martins@hotmail.com" + } + ], + "description": "Add support to multi-auth on Laravel Passport", + "keywords": [ + "laravel", + "multi-auth", + "passport" + ], + "time": "2020-04-03T00:08:01+00:00" + }, { "name": "symfony/console", "version": "v5.0.5", diff --git a/config/auth.php b/config/auth.php index 0bafe5a..c396587 100644 --- a/config/auth.php +++ b/config/auth.php @@ -14,7 +14,8 @@ return [ */ 'defaults' => [ - 'guard' => env('AUTH_GUARD', 'api'), + 'guard' => 'api', + 'passwords' => 'users', ], /* @@ -35,15 +36,15 @@ return [ */ 'guards' => [ - 'api' => ['driver' => 'passport'], -// 'api' => [ -// 'driver' => 'passport', -// 'provider' => 'users', -// ], -// 'agent' => [ -// 'driver' => 'passport', -// 'provider' => 'agents', -// ] +// 'api' => ['driver' => 'passport'], + 'api' => [ + 'driver' => 'passport', + 'provider' => 'users', + ], + 'agent' => [ + 'driver' => 'passport', + 'provider' => 'agents', + ] ], /* @@ -66,7 +67,7 @@ return [ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => \App\Models\User::class + 'model' => \App\Models\UsersCredentials::class ], 'agents' => [ 'driver' => 'eloquent', diff --git a/routes/web.php b/routes/web.php index e39d596..e06e8de 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,7 +18,7 @@ /** * Routes for MobileBackend */ - $router->group(['prefix' => '/mobilebackend/interacted' , 'middleware' => 'clients.credentials'], function () use ($router){ + $router->group(['prefix' => '/mobilebackend/interacted' , 'middleware' => 'auth:api'], function () use ($router){ $router->post('LoginAction', 'MobileBackendController@action'); $router->post('BalanceAction', 'MobileBackendController@action'); @@ -34,7 +34,10 @@ /** * Routes for Wallet Service */ - $router->group(['prefix' => '/'.env('WALLET_SERVICE_NAME') ,'middleware' => 'clients.credentials'], function () use ($router){ + $router->group(['prefix' => '/'.env('WALLET_SERVICE_NAME') ,'middleware' => 'auth:api'], function () use ($router){ + + $router->post('/transactions','WalletControllerr@post'); + $router->post('/virement','WalletController@post'); // Wallets routes $router->group(['prefix' => '/wallets'] , function () use ($router){