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;
|
$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(
|
public function linkDiscordId(
|
||||||
@ -76,7 +76,7 @@ class LodestoneLinkController extends Controller
|
|||||||
int $discordUserId,
|
int $discordUserId,
|
||||||
Request $request
|
Request $request
|
||||||
) {
|
) {
|
||||||
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->post('code'));
|
return $this->lodestoneLinkingService->validateLinkDiscord($lodestoneId, $discordUserId, $request->json()->get('code'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function linkWebsiteName(
|
public function linkWebsiteName(
|
||||||
@ -88,7 +88,7 @@ class LodestoneLinkController extends Controller
|
|||||||
) {
|
) {
|
||||||
$lodestoneId = $this->lodestoneCacheService->getCharacterByName($server, $name, $this->lodestoneApiService)->lodestoneId;
|
$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(
|
public function linkWebsiteId(
|
||||||
@ -97,6 +97,6 @@ class LodestoneLinkController extends Controller
|
|||||||
int $websiteUserId,
|
int $websiteUserId,
|
||||||
Request $request
|
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 [
|
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 [
|
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