diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index b66316904cfc..0af7a4beed87 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -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 diff --git a/app/Http/Middleware/TokenAuth.php b/app/Http/Middleware/TokenAuth.php index 857567e619ff..9200771424c6 100644 --- a/app/Http/Middleware/TokenAuth.php +++ b/app/Http/Middleware/TokenAuth.php @@ -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); diff --git a/app/Models/User.php b/app/Models/User.php index dc1b84084efe..24fea90e9bf4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -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(); } /** diff --git a/app/Providers/MultiDatabaseUserProvider.php b/app/Providers/MultiDatabaseUserProvider.php index 15676e1186c9..0c818e9c43b2 100644 --- a/app/Providers/MultiDatabaseUserProvider.php +++ b/app/Providers/MultiDatabaseUserProvider.php @@ -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; + } + } + } } diff --git a/app/Transformers/CompanyTokenTransformer.php b/app/Transformers/CompanyTokenTransformer.php new file mode 100644 index 000000000000..86485e80ccdc --- /dev/null +++ b/app/Transformers/CompanyTokenTransformer.php @@ -0,0 +1,45 @@ + $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, + ]; + } + + +} diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php index 72a7dab6a9eb..d043a75e0ff8 100644 --- a/app/Transformers/UserTransformer.php +++ b/app/Transformers/UserTransformer.php @@ -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) + + + } } diff --git a/routes/api.php b/routes/api.php index 93a8b04d16b0..58ebcd6a2d48 100644 --- a/routes/api.php +++ b/routes/api.php @@ -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'); });