mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 12:33:56 +00:00
84 lines
2.0 KiB
PHP
84 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Accounts\Services;
|
|
|
|
use App\Classes\Exceptions\InternalServerErrorException;
|
|
use App\Classes\ValueObjects\Constants\RoleTypes;
|
|
use App\Models\Company;
|
|
use App\Models\Role;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
use Tymon\JWTAuth\JWT;
|
|
|
|
class GeneratesAuthenticationToken {
|
|
|
|
/** @var JWT */
|
|
private $builder;
|
|
|
|
|
|
/**
|
|
* GeneratesAuthenticationToken constructor.
|
|
* @param JWT $builder
|
|
*/
|
|
public function __construct(JWT $builder) {
|
|
$this->builder = $builder;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param User $user
|
|
* @param bool $rememberUser
|
|
* @return string
|
|
*/
|
|
public function execute(User $user, bool $rememberUser = false): string {
|
|
|
|
$this->builder->manager()->setBlacklistEnabled(false);
|
|
|
|
// generate token for the customer
|
|
$this->builder->factory()->setTTL(Carbon::now()->addDay()->timestamp);
|
|
|
|
if ($rememberUser === true) {
|
|
$this->builder->factory()->setTTL(Carbon::now()->addWeek()->timestamp);
|
|
}
|
|
|
|
// set the claim based on the object
|
|
$this->setTokenClaims($user);
|
|
|
|
return $this->builder->fromUser($user);
|
|
}
|
|
|
|
|
|
/**
|
|
* @param User $user
|
|
*/
|
|
private function setTokenClaims(User $user): void {
|
|
|
|
/** @var Company $company */
|
|
$company = $user->company()->first();
|
|
|
|
$claims = [
|
|
'id' => $user->id,
|
|
'name' => $user->name,
|
|
'email' => $user->email,
|
|
'type' => $user->type,
|
|
'status' => $user->status
|
|
];
|
|
|
|
if($user->type === RoleTypes::USER) {
|
|
|
|
/** @var Company $companyModule */
|
|
$claims = array_merge($claims, [
|
|
'company_id' => $company->id,
|
|
'company_name' => $company->name,
|
|
'company_marking' => $company->reference,
|
|
]);
|
|
}
|
|
|
|
$this->builder->factory()->customClaims(['user' => $claims]);
|
|
|
|
|
|
$this->builder->factory()->buildClaimsCollection();
|
|
|
|
}
|
|
}
|