Implement post routes on link controller
This commit is contained in:
parent
10d6c7bb25
commit
f5c47ceaa6
@ -68,7 +68,7 @@ class LodestoneLinkController extends Controller
|
||||
) {
|
||||
$lodestoneId = $this->lodestoneCacheService->getCharacterByName($server, $name, $this->lodestoneApiService)->lodestoneId;
|
||||
|
||||
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->post('code'));
|
||||
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->json()->get('code'));
|
||||
}
|
||||
|
||||
public function linkDiscordId(
|
||||
@ -76,7 +76,7 @@ class LodestoneLinkController extends Controller
|
||||
int $discordUserId,
|
||||
Request $request
|
||||
) {
|
||||
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->post('code'));
|
||||
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->json()->get('code'));
|
||||
}
|
||||
|
||||
public function linkWebsiteName(
|
||||
@ -88,7 +88,7 @@ class LodestoneLinkController extends Controller
|
||||
) {
|
||||
$lodestoneId = $this->lodestoneCacheService->getCharacterByName($server, $name, $this->lodestoneApiService)->lodestoneId;
|
||||
|
||||
return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->post('code'));
|
||||
return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->json()->get('code'));
|
||||
}
|
||||
|
||||
public function linkWebsiteId(
|
||||
@ -97,6 +97,6 @@ class LodestoneLinkController extends Controller
|
||||
int $websiteUserId,
|
||||
Request $request
|
||||
) {
|
||||
return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->post('code'));
|
||||
return $this->lodestoneLinkingService->validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $request->json()->get('code'));
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,17 +96,82 @@ class LodestoneLinkingService
|
||||
];
|
||||
}
|
||||
|
||||
public function validateLinkDiscord($lodestoneId, int $discordUserId, string $code)
|
||||
public function validateLinkDiscord($lodestoneId, $discordUserId, $code)
|
||||
{
|
||||
$character = $this->lodestoneCacheService->getCharacterById($lodestoneId, $this->lodestoneApiService)->content;
|
||||
|
||||
$linkCode = LinkCode::where('expires', '>', Carbon::now())
|
||||
->where('lodestoneId', $lodestoneId)
|
||||
->where('discordUserId', $discordUserId)
|
||||
->first();
|
||||
|
||||
if ($linkCode === null) {
|
||||
// There is no code for that user
|
||||
return $this->getLinkDiscord($lodestoneId, $discordUserId);
|
||||
}
|
||||
|
||||
if ($linkCode->code !== $code) {
|
||||
// The provided code is not valid
|
||||
return [
|
||||
'error' => 'Not yet implemented'
|
||||
'linked' => false,
|
||||
'error' => 'Invalid code'
|
||||
];
|
||||
}
|
||||
|
||||
public function validateLinkWebsite($lodestoneId, string $hostname, int $websiteUserId, string $code)
|
||||
{
|
||||
UserLink::updateOrCreate([
|
||||
'lodestoneId' => $lodestoneId
|
||||
], [
|
||||
'discordUserId' => $discordUserId
|
||||
]);
|
||||
$linkCode->delete();
|
||||
|
||||
return [
|
||||
'error' => 'Not yet implemented'
|
||||
'linked' => true,
|
||||
'lodestoneId' => $character['Character']['ID'],
|
||||
'server' => $character['Character']['Server'],
|
||||
'name' => $character['Character']['Name'],
|
||||
'discordUserId' => $discordUserId
|
||||
];
|
||||
}
|
||||
|
||||
public function validateLinkWebsite($lodestoneId, $hostname, $websiteUserId, $code)
|
||||
{
|
||||
$character = $this->lodestoneCacheService->getCharacterById($lodestoneId, $this->lodestoneApiService)->content;
|
||||
|
||||
$linkCode = LinkCode::where('expires', '>', Carbon::now())
|
||||
->where('lodestoneId', $lodestoneId)
|
||||
->where('websiteHostname', $hostname)
|
||||
->where('websiteUserId', $websiteUserId)
|
||||
->first();
|
||||
|
||||
if ($linkCode === null) {
|
||||
// There is no code for that user
|
||||
return $this->getLinkWebsite($lodestoneId, $hostname, $websiteUserId);
|
||||
}
|
||||
|
||||
if ($linkCode->code !== $code) {
|
||||
// The provided code is not valid
|
||||
return [
|
||||
'linked' => false,
|
||||
'error' => 'Invalid code'
|
||||
];
|
||||
}
|
||||
|
||||
UserLink::updateOrCreate([
|
||||
'lodestoneId' => $lodestoneId
|
||||
], [
|
||||
'websiteHostname' => $hostname,
|
||||
'websiteUserId' => $websiteUserId
|
||||
]);
|
||||
$linkCode->delete();
|
||||
|
||||
return [
|
||||
'linked' => true,
|
||||
'lodestoneId' => $character['Character']['ID'],
|
||||
'server' => $character['Character']['Server'],
|
||||
'name' => $character['Character']['Name'],
|
||||
'websiteHostname' => $hostname,
|
||||
'websiteUserId' => $websiteUserId
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user