User login via API

This commit is contained in:
David Bomba 2019-04-19 12:58:40 +10:00
parent f82aaefd4c
commit 72dee9bfb6
2 changed files with 33 additions and 17 deletions

View File

@ -2,16 +2,19 @@
namespace App\Http\Controllers\Auth; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\BaseController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Libraries\OAuth; use App\Libraries\OAuth;
use App\Models\User; use App\Models\User;
use App\Transformers\UserTransformer;
use App\Utils\Traits\UserSessionAttributes; use App\Utils\Traits\UserSessionAttributes;
use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Laravel\Socialite\Facades\Socialite; use Laravel\Socialite\Facades\Socialite;
class LoginController extends Controller class LoginController extends BaseController
{ {
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -27,6 +30,10 @@ class LoginController extends Controller
use AuthenticatesUsers; use AuthenticatesUsers;
use UserSessionAttributes; use UserSessionAttributes;
protected $entity_type = User::class;
protected $entity_transformer = UserTransformer::class;
/** /**
* Where to redirect users after login. * Where to redirect users after login.
* *
@ -41,7 +48,8 @@ class LoginController extends Controller
*/ */
public function __construct() public function __construct()
{ {
$this->middleware('guest:user')->except('logout'); parent::__construct();
// $this->middleware('guest:user')->except('logout');
} }
/** /**
@ -59,12 +67,11 @@ class LoginController extends Controller
{ {
$this->validateLogin($request); $this->validateLogin($request);
if ($this->attemptLogin($request)) { if ($this->attemptLogin($request))
return $this->itemResponse($this->guard()->user());
else
return response()->json(['message' => ctrans('texts.invalid_credentials')]);
return $this->authenticated($request, $this->guard()->user())
?: response()->json(['message' => ctrans('texts.invalid_credentials')]);
}
} }
/** /**

View File

@ -3,12 +3,12 @@
namespace App\Providers; namespace App\Providers;
use App\Libraries\MultiDB; use App\Libraries\MultiDB;
use Illuminate\Support\Str;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
use Illuminate\Contracts\Auth\Authenticatable as UserContract; use Illuminate\Contracts\Auth\Authenticatable as UserContract;
use PhpParser\Node\Expr\BinaryOp\Mul; use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
use Illuminate\Contracts\Support\Arrayable;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
class MultiDatabaseUserProvider implements UserProvider class MultiDatabaseUserProvider implements UserProvider
{ {
@ -108,14 +108,20 @@ class MultiDatabaseUserProvider implements UserProvider
*/ */
public function retrieveByCredentials(array $credentials) public function retrieveByCredentials(array $credentials)
{ {
Log::error('retrieving by credentials');
if (empty($credentials) || if (empty($credentials) ||
(count($credentials) === 1 && (count($credentials) === 1 &&
array_key_exists('password', $credentials))) { array_key_exists('password', $credentials))) {
return; return;
} }
Log::error('settings DB');
$this->setDefaultDatabase(false, $credentials['email'], false); $this->setDefaultDatabase(false, $credentials['email'], false);
Log::error('set DB');
// First we will add each credential element to the query as a where clause. // First we will add each credential element to the query as a where clause.
// Then we can execute the query and, if we found a user, return it in a // Then we can execute the query and, if we found a user, return it in a
// Eloquent User "model" that will be utilized by the Guard instances. // Eloquent User "model" that will be utilized by the Guard instances.
@ -132,7 +138,7 @@ class MultiDatabaseUserProvider implements UserProvider
$query->where($key, $value); $query->where($key, $value);
} }
} }
Log::error($query->count());
return $query->first(); return $query->first();
} }
@ -144,9 +150,10 @@ class MultiDatabaseUserProvider implements UserProvider
* @return bool * @return bool
*/ */
public function validateCredentials(UserContract $user, array $credentials) public function validateCredentials(UserContract $user, array $credentials)
{ { Log::error('validateCredentials');
$plain = $credentials['password'];
$plain = $credentials['password'];
Log::error($plain);
return $this->hasher->check($plain, $user->getAuthPassword()); return $this->hasher->check($plain, $user->getAuthPassword());
} }
@ -210,7 +217,7 @@ class MultiDatabaseUserProvider implements UserProvider
private function setDefaultDatabase($id = false, $email = false, $token = false) : void private function setDefaultDatabase($id = false, $email = false, $token = false) : void
{ {
Log::error('setting DB');
foreach (MultiDB::getDbs() as $database) { foreach (MultiDB::getDbs() as $database) {
$this->setDB($database); $this->setDB($database);
@ -225,6 +232,7 @@ class MultiDatabaseUserProvider implements UserProvider
$user = $query->get(); $user = $query->get();
if (count($user) >= 1) { if (count($user) >= 1) {
Log::error('found user, settings DB for EMAIL');
break; break;
} }
@ -232,7 +240,8 @@ class MultiDatabaseUserProvider implements UserProvider
if ($token) if ($token)
{ {
Log::error('found user, settings DB for TOKEN');
$query->whereRaw("BINARY `token`= ?", $token); $query->whereRaw("BINARY `token`= ?", $token);
$token = $query->get(); $token = $query->get();