fix: create token in register
This commit is contained in:
@@ -114,9 +114,12 @@ public function register(Request $request)
|
|||||||
'email' => 'email|required_without:mobile',
|
'email' => 'email|required_without:mobile',
|
||||||
'password' => 'string|nullable|required_with:email',
|
'password' => 'string|nullable|required_with:email',
|
||||||
'mobile' => ['string', new MobileNumber, 'nullable', 'required_without:email'],
|
'mobile' => ['string', new MobileNumber, 'nullable', 'required_without:email'],
|
||||||
'fcm_token' => 'string|nullable'
|
'fcm_token' => 'string|nullable',
|
||||||
|
'package_name' => 'string|required'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$packageNameValue = $data['package_name'];
|
||||||
|
unset($data['package_name']);
|
||||||
|
|
||||||
if (isset($data['mobile'])) {
|
if (isset($data['mobile'])) {
|
||||||
$data['mobile'] = MobileNumberHelper::formatMobile($data['mobile']);
|
$data['mobile'] = MobileNumberHelper::formatMobile($data['mobile']);
|
||||||
@@ -129,12 +132,38 @@ public function register(Request $request)
|
|||||||
return response()->json(['message' => 'Email already exists'], 400);
|
return response()->json(['message' => 'Email already exists'], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
$data['password'] = $data['password'] ?? Hash::make(Str::random(8));
|
// ✅ Check if email can receive a message before creating the user
|
||||||
$user = User::create($data);
|
|
||||||
|
|
||||||
// Send email verification if email exists
|
|
||||||
if (isset($data['email'])) {
|
if (isset($data['email'])) {
|
||||||
$code = rand(1000, 9999);
|
$code = rand(1000, 9999);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Try sending email
|
||||||
|
\Mail::to($data['email'])->send(new \App\Mail\VerifyEmailCodeMail($code));
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return response()->json([
|
||||||
|
'message' => 'لطفا آدرس ایمیل خود را بررسی کنید و مجدد تلاش کنید',
|
||||||
|
], 400);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hash password
|
||||||
|
$data['password'] = isset($data['password'])
|
||||||
|
? Hash::make($data['password'])
|
||||||
|
: Hash::make(Str::random(8));
|
||||||
|
|
||||||
|
// Create user only if email sending didn't fail
|
||||||
|
$user = User::create($data);
|
||||||
|
|
||||||
|
// Attach package
|
||||||
|
if ($packageName = PackageName::where('name', $packageNameValue)->first()) {
|
||||||
|
$user->packageNames()->attach($packageName->id, [
|
||||||
|
'tries' => $packageName->tries,
|
||||||
|
'fcm_token' => $data['fcm_token'] ?? null,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save email verification code after user is created
|
||||||
|
if (isset($data['email'])) {
|
||||||
\DB::table('email_verifications')->insert([
|
\DB::table('email_verifications')->insert([
|
||||||
'user_id' => $user->id,
|
'user_id' => $user->id,
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
@@ -142,18 +171,20 @@ public function register(Request $request)
|
|||||||
'created_at' => now(),
|
'created_at' => now(),
|
||||||
'updated_at' => now(),
|
'updated_at' => now(),
|
||||||
]);
|
]);
|
||||||
\Mail::to($user->email)->send(new \App\Mail\VerifyEmailCodeMail($code));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create token
|
||||||
|
$token = $user->createToken('token', $user->is_admin ? ['admin'] : ['user'])->plainTextToken;
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'message' => 'User registered successfully.',
|
'message' => 'User registered successfully.',
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
|
'token' => $token
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function verifyEmailCode(Request $request)
|
public function verifyEmailCode(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
|
|||||||
Reference in New Issue
Block a user