Working on API Login Authentication

This commit is contained in:
David Bomba 2019-04-18 16:11:37 +10:00
parent f03da9d02d
commit 788a42e9a4
7 changed files with 99 additions and 14 deletions

View File

@ -79,7 +79,7 @@ class LoginController extends Controller
{
Auth::login($user, true);
return redirect($this->redirectTo);
return redirect($this->redirectTo); //todo return USERACCOUNT json
}
//throw error

View File

@ -27,9 +27,7 @@ class TokenAuth
}
else {
$error['error'] = ['message' => 'Invalid token'];
return response()->json(json_encode($error, JSON_PRETTY_PRINT) ,403);
return response()->json(json_encode(['message' => 'Invalid token'], JSON_PRETTY_PRINT) ,403);
}
return $next($request);

View File

@ -80,7 +80,18 @@ class User extends Authenticatable implements MustVerifyEmail
*/
public function tokens()
{
return $this->hasMany(CompanyToken::class)->orderBy('id');
return $this->hasMany(CompanyToken::class)->orderBy('id', 'ASC');
}
/**
* Return first user token
*
* @return token object
*/
public function token()
{
return $this->tokens()->first();
}
/**

View File

@ -216,23 +216,32 @@ class MultiDatabaseUserProvider implements UserProvider
$query = $this->conn->table('users');
if ($id) {
if ($id)
$query->where('id', '=', $id);
}
if ($token) {
$query->where('token', '=', $token);
}
if ($email) {
if ($email)
$query->where('email', '=', $email);
}
$user = $query->get();
if (count($user) >= 1) {
break;
}
$query = $this->conn->table('company_tokens');
if ($token)
{
$query->whereRaw("BINARY `token`= ?", $token);
$token = $query->get();
if (count($token) >= 1) {
break;
}
}
}
}

View File

@ -0,0 +1,45 @@
<?php
namespace App\Transformers;
use App\Models\CompanyToken;
use App\Utils\Traits\MakesHash;
/**
* Class CompanyTokenTransformer.
*/
class CompanyTokenTransformer extends EntityTransformer
{
use MakesHash;
/**
* @var array
*/
protected $defaultIncludes = [
];
/**
* @var array
*/
protected $availableIncludes = [
];
/**
* @param CompanyToken $company_token
*
* @return array
*/
public function transform(CompanyToken $company_token)
{
return [
'id' => $this->encodePrimaryKey($company_token->id),
'token' => $company_token->token,
'name' => $company_token->name,
'user_id' => $company_token->user_id,
'company_id' => $company_token->company_id,
];
}
}

View File

@ -3,7 +3,11 @@
namespace App\Transformers;
use App\Models\Account;
use App\Models\Company;
use App\Models\CompanyToken;
use App\Models\User;
use App\Transformers\CompanyTokenTransformer;
use App\Transformers\CompanyTransformer;
use App\Utils\Traits\MakesHash;
/**
@ -37,6 +41,8 @@ class UserTransformer extends EntityTransformer
* @var array
*/
protected $defaultIncludes = [
'company_token',
'companies',
];
/**
@ -73,4 +79,19 @@ class UserTransformer extends EntityTransformer
}
public function includeCompanies(User $user)
{
$transformer = new CompanyTransformer($this->serializer);
return $this->includeCollection($user->companies(), $transformer, Company::class)
}
public function includeCompanyToken(User $user)
{
$transformer = new CompanyTokenTransformer($this->serializer);
return $this->includeItem($user->token(), $transformer, CompanyToken::class)
}
}

View File

@ -20,7 +20,8 @@ Route::middleware('auth:api')->get('/user', function (Request $request) {
Route::group(['middleware' => ['api_secret_check']], function () {
Route::post('api/v1/signup', 'AccountController@store')->name('signup.submit');
Route::post('api/v1/signup', 'AccountController@store')->name('signup.submit');
Route::post('api/v1/login', 'UserController@login')->name('login.submit');
});