Create Custom Passport Authentication in Laravel Framework
13-03-2020config/auth.php file
'guards' => [ 'crm_account' => [ 'provider' => 'crm_accounts', 'driver' => 'passport', 'hash' => true, ], ], 'providers' => [ 'crm_accounts' => [ 'driver' => 'eloquent', 'model' => App\Models\CrmAccount::class, 'table' => 'crm_accounts', ], ],
CrmAccount Model:
namespace App\Models; use Illuminate\Foundation\Auth\User as Authenticatable; use Laravel\Passport\HasApiTokens; class CrmAccount extends Authenticatable { use HasApiTokens; public $fillable = [ 'id', 'name', ] . . . . }
routes/api.php
Route::prefix( "/users" )->middleware( ['auth:crm_account'] )->group( function () { Route::get('/','UserController@index'); Route::post('forget-password','UserController@forgetPassword'); });
Controller Class
class UserController extends Controller { public function login(Request $request) { $input = $request->all(); $crmAccount = CrmAccount::where('username', $input['username']) ->where('password', $input['password'])->first(); $token = $crmAccount->createToken($crmAccount->name)->accessToken; return Response::json(ResponseUtil::makeResponse('', ['access_token' => $token])); } public function forgetPassword(Request $request) { $crmAccount=Auth::user(); $password= StringUtil::generateRandomDigit(8); $message = 'Şifreniz başarıyla oluşturuldu. Giriş yapmak için şifreniz: ' . $password; SmsHelper::sendViaPostaGuvercini($crmAccount->phone, $message); $crmAccount->password=crypt($password, 'ib_salt'); $crmAccount->save(); return Response::json(ResponseUtil::makeResponse('', ['access_token' => $token])); } }
When you call Auth::user()
function, you will get logged user.