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;
use App\Http\Controllers\BaseController;
use App\Http\Controllers\Controller;
use App\Libraries\OAuth;
use App\Models\User;
use App\Transformers\UserTransformer;
use App\Utils\Traits\UserSessionAttributes;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Laravel\Socialite\Facades\Socialite;
class LoginController extends Controller
class LoginController extends BaseController
{
/*
|--------------------------------------------------------------------------
@ -27,6 +30,10 @@ class LoginController extends Controller
use AuthenticatesUsers;
use UserSessionAttributes;
protected $entity_type = User::class;
protected $entity_transformer = UserTransformer::class;
/**
* Where to redirect users after login.
*
@ -41,7 +48,8 @@ class LoginController extends Controller
*/
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);
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;
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 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
{
@ -108,14 +108,20 @@ class MultiDatabaseUserProvider implements UserProvider
*/
public function retrieveByCredentials(array $credentials)
{
Log::error('retrieving by credentials');
if (empty($credentials) ||
(count($credentials) === 1 &&
array_key_exists('password', $credentials))) {
return;
}
Log::error('settings DB');
$this->setDefaultDatabase(false, $credentials['email'], false);
Log::error('set DB');
// 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
// Eloquent User "model" that will be utilized by the Guard instances.
@ -132,7 +138,7 @@ class MultiDatabaseUserProvider implements UserProvider
$query->where($key, $value);
}
}
Log::error($query->count());
return $query->first();
}
@ -144,9 +150,10 @@ class MultiDatabaseUserProvider implements UserProvider
* @return bool
*/
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
{ Log::error('validateCredentials');
$plain = $credentials['password'];
Log::error($plain);
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
{
Log::error('setting DB');
foreach (MultiDB::getDbs() as $database) {
$this->setDB($database);
@ -225,6 +232,7 @@ class MultiDatabaseUserProvider implements UserProvider
$user = $query->get();
if (count($user) >= 1) {
Log::error('found user, settings DB for EMAIL');
break;
}
@ -232,7 +240,8 @@ class MultiDatabaseUserProvider implements UserProvider
if ($token)
{
Log::error('found user, settings DB for TOKEN');
$query->whereRaw("BINARY `token`= ?", $token);
$token = $query->get();