codeGeneratorService = $codeGeneratorService; $this->lodestoneCacheService = $lodestoneCacheService; $this->lodestoneApiService = $lodestoneApiService; } public function getLinkDiscord($lodestoneId, $discordUserId) { // Check already linked if (UserLink::where('lodestoneId', $lodestoneId)->count() > 0) { return [ 'linked' => true, 'linkCode' => null, 'expires' => null ]; } // Check code exists $linkCode = LinkCode::where('lodestoneId', $lodestoneId)->first(); $expirationTime = Carbon::now()->addMinutes(5); if ($linkCode !== null && $linkCode->expires > Carbon::now()) { $linkCode->expires = $expirationTime; $linkCode->save(); } else { if ($linkCode !== null) $linkCode->delete(); $code = $this->codeGeneratorService->generateCode('discord'); $linkCode = LinkCode::create([ 'lodestoneId' => $lodestoneId, 'discordUserId' => $discordUserId, 'expires' => $expirationTime, 'code' => $code ]); } return [ 'linked' => false, 'linkCode' => $linkCode->code, 'expires' => $linkCode->expires ]; } public function getLinkWebsite($lodestoneId, $hostname, $websiteUserId) { // Check already linked if (UserLink::where('lodestoneId', $lodestoneId)->count() > 0) { return [ 'linked' => true, 'linkCode' => null, 'expires' => null ]; } // Check code exists $linkCode = LinkCode::where('lodestoneId', $lodestoneId)->first(); $expirationTime = Carbon::now()->addMinutes(5); if ($linkCode !== null && $linkCode->expires > Carbon::now()) { $linkCode->expires = $expirationTime; $linkCode->save(); } else { if ($linkCode !== null) $linkCode->delete(); $code = $this->codeGeneratorService->generateCode('discord'); $linkCode = LinkCode::create([ 'lodestoneId' => $lodestoneId, 'websiteHostname' => $hostname, 'websiteUserId' => $websiteUserId, 'expires' => $expirationTime, 'code' => $code ]); } return [ 'linked' => false, 'linkCode' => $linkCode->code, 'expires' => $linkCode->expires ]; } }