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) { $claims = array_merge($claims, [ 'company_id' => $company->id ]); } $this->builder->factory()->customClaims(['user' => $claims]); $this->builder->factory()->buildClaimsCollection(); } }