43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\AuthenticateSocialUser;
|
|
use App\Enums\SocialProvider;
|
|
use App\Http\Requests\MobileSocialLoginRequest;
|
|
use App\Http\Requests\MobileSocialNonceRequest;
|
|
use App\Http\Resources\UserResource;
|
|
use App\Services\SocialAuthenticationNonce;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class MobileSocialAuthController extends Controller
|
|
{
|
|
public function nonce(
|
|
MobileSocialNonceRequest $request,
|
|
SocialAuthenticationNonce $socialAuthenticationNonce,
|
|
): JsonResponse {
|
|
$provider = SocialProvider::from($request->validated('provider'));
|
|
|
|
return response()->json([
|
|
'nonce' => $socialAuthenticationNonce->issue($provider),
|
|
]);
|
|
}
|
|
|
|
public function store(
|
|
MobileSocialLoginRequest $request,
|
|
AuthenticateSocialUser $authenticateSocialUser,
|
|
): JsonResponse {
|
|
$data = $request->validated();
|
|
$user = $authenticateSocialUser->execute($data);
|
|
$deviceName = $data['device_name'] ?? null;
|
|
$tokenName = is_string($deviceName) && trim($deviceName) !== ''
|
|
? trim($deviceName)
|
|
: 'mobile';
|
|
|
|
return response()->json([
|
|
'token' => $user->createToken($tokenName)->plainTextToken,
|
|
'user' => new UserResource($user),
|
|
]);
|
|
}
|
|
}
|