feat: login v2
This commit is contained in:
@@ -22,6 +22,82 @@
|
||||
use App\Models\UserBreathingSession;
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function loginV2(Request $request)
|
||||
{
|
||||
$data = $request->validate([
|
||||
'token' => 'required|string',
|
||||
'package_name' => 'required|string',
|
||||
]);
|
||||
|
||||
$response = Http::acceptJson()->withToken($data['token'])->get('http://localhost:8000/api/status', [
|
||||
'package_name' => $request['package_name']
|
||||
]);
|
||||
|
||||
if (!$response->successful()) {
|
||||
return response()->json(['message' => 'invalid token'], 401);
|
||||
}
|
||||
|
||||
$response = json_decode($response->body(), true);
|
||||
|
||||
// First, try to find user by identifier
|
||||
$user = null;
|
||||
if (!empty($response['uuid'])) {
|
||||
$user = User::where('identifier', $response['uuid'])->first();
|
||||
}
|
||||
|
||||
// If not found, try by email
|
||||
if (!$user) {
|
||||
$user = User::where('email', $response['email'])->first();
|
||||
}
|
||||
|
||||
// If user still doesn't exist, create new
|
||||
if (!$user) {
|
||||
$user = User::create([
|
||||
'email' => $response['email'],
|
||||
'identifier' => $response['uuid'] ?? null,
|
||||
'password' => config('app.default_password'),
|
||||
'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')),
|
||||
'mobile' => $response['mobile'] ?? null,
|
||||
]);
|
||||
} else {
|
||||
// Only update name and mobile for existing user
|
||||
$user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? ''));
|
||||
$user->mobile = $response['mobile'] ?? $user->mobile;
|
||||
$user->save(); // Do NOT update identifier!
|
||||
}
|
||||
|
||||
$access_token = $user->createToken('user')->plainTextToken;
|
||||
|
||||
return [
|
||||
'email' => $user->email,
|
||||
'identifier' => $user->identifier,
|
||||
'token' => $access_token,
|
||||
'user' => $user,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function loginForeginer(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'user_token' => ['required'],
|
||||
'package_name' => ['required', new PackageNameExist],
|
||||
]);
|
||||
$response = $this->repository->userTokenVerify($request['package_name'], $request['user_token']);
|
||||
if ($response['ok']) {
|
||||
$user = User::where('identifier', $response['data']['identifier'])->first();
|
||||
if (empty($user)) {
|
||||
$user = new User();
|
||||
$user['identifier'] = $response['data']['identifier'];
|
||||
$user['name'] = $response['data']['username'];
|
||||
$user->save();
|
||||
}
|
||||
if (!empty($request['fcm_token'])) FcmToken::firstOrCreate(['token' => $request['fcm_token'], 'user_id' => $user['id']]);
|
||||
$access_token = $user->createToken('user')->plainTextToken;
|
||||
return ['identifier' => $user['identifier'], 'token' => $access_token];
|
||||
} else abort(500);
|
||||
}
|
||||
public function login(Request $request)
|
||||
{
|
||||
$data = $request->validate([
|
||||
@@ -356,8 +432,8 @@ public function profile()
|
||||
|
||||
return response()->json([
|
||||
'email' => $user->email,
|
||||
'first_name' => $user->first_name,
|
||||
'last_name' => $user->last_name,
|
||||
'name' => $user->name,
|
||||
// 'last_name' => $user->last_name,
|
||||
'mobile'=> $user->mobile,
|
||||
'birthday' => $user ->birthday,
|
||||
'xp' => $user->xp,
|
||||
|
||||
+1
-2
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Traits\HasUuid;
|
||||
use DateTimeInterface;
|
||||
use EloquentFilter\Filterable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
@@ -13,7 +12,7 @@
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use HasApiTokens, HasFactory, Notifiable, HasUuid, Filterable;
|
||||
use HasApiTokens, HasFactory, Notifiable, Filterable;
|
||||
|
||||
const GENDERS = [
|
||||
'male' => 1,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
trait HasUuid
|
||||
{
|
||||
public static function bootHasUUID(): void
|
||||
public static function bootHasUuid(): void
|
||||
{
|
||||
static::creating(function ($model) {
|
||||
if (!$model->uuid) {
|
||||
|
||||
Reference in New Issue
Block a user