سلام وقت بخیر
من میخام وقتی کاربر شماره موبایل تایید کرد وارد صفحه قوانین بشه
و بعدا هر وقت خواست وارد سایت بشه هدایت بشه به صفحه home
ولی تو کد زیر که دارم کاربر به جای اینکه به صفحه قوانین بره به صفحه هوم هدایت میشه
public function token(Request $request)
{
$request->validate([
'token' => 'required'
]);
if(! $request->session()->has('auth')) {
return redirect(route('register'));
}
$user = User::findOrFail($request->session()->get('auth.user_id'));
$status = ActiveCode::verifyCode($request->token , $user);
if(! $status) {
// alert()->error('کد صحیح نبود');
return redirect(route('register'));
}
if(auth()->loginUsingId($user->id)) {
$user->activeCode()->delete();
return redirect(route('rule'));
}
return redirect(route('register'));
}
این تیکه کد رو به چه شکل باید بنویسم ؟
if(auth()->loginUsingId($user->id)) {
$user->activeCode()->delete();
return redirect(route('rule'));
}
اگر روت خانه شما نام دارد به این شکل
if(auth()->loginUsingId($user->id)) {
$user->activeCode()->delete();
return redirect()->route('home');
}
اگر صفحه خانه شما اسم ندارد به این شکل
return redirect('/');
@juza66
نه منظورم رو درست نگفتم
میخام موقع ثبت نام بعد از تایید کد به صفحه قوانین هدایت بشه ولی هر دفعه به صفحه home هدایت میشه
و زمانی که کاربر دفعه بعد خواست لاگین بشه میخام به صفحه home بره
تو logincontroller گفتم به home هدایت بشه
ولی تو این کد گفتم به rule ولی این اتفاق نمیفته و همش میره تو home
به RouteServiceProvider برید و public const HOME رو از روت home به هر جایی دوست دارید تغییر بدید
@siros.fakhri
ممنونم یه سوال دیگه
من میخام فقط یکبار وقتی کاربر ثبت نام میکنه یه کد به شماره موبایلش ارسال بشه دیگه موقع ورود نمیخام کدی بیاد
تو این حالت نباید از نوتیفیکیشن استفاده کرد درسته؟ چون نوتیفیکیشن زمانی میاد که کاربر تو دیتابیس ثبت شده باشه
وقتی کاربری هنوز شماره موبایلشو تایید نکرد نباید تو دیتابیس ساخته بشه درسته ؟
حالا من نمیدونم چه روشی درسته که انجامش بدم
به روش زیر انجام میدم
public function register(Request $request)
{
$data = $request->validate([
'phone' => 'required|unique:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/',
'password' => ['required', 'string', 'min:8', 'confirmed'],
'reagent_code' => ['nullable' , 'string' , 'max:255' , 'min:3'],
// 'g-recaptcha-response' =>['required' , New Recaptcha],
],
[
// 'g-recaptcha-response.required' =>'لطفا روی من ربات نیستم کلیک کنید',
]);
User::create([
'phone' => $data['phone'],
'password' => Hash::make($data['password']),
'reagent_code' => $data['reagent_code'],
]);
$user = User::wherePhone($data['phone'])->first();
$request->session()->flash('auth' , [
'user_id' => $user->id,
]);
$code = ActiveCode::generateCode($user);
$user->notify(new ActiveCodeNotification($code , $user->phone));
return redirect(route('auth.phone.token'));
}
ببین موبایل دو حالت میتونی انجام بدی:
1- توی دیتابیس سیو میکنی (چه همون لحظه تایید بشه چه نشه) ولی درعوض موقع ورود چک میکنی و اگر موبایل تایید نبود اجازه ادامه کار نمیدی و مجبورش می کنی اول تایید بکنه (یه چیزی مثل تایید ایمیل خود لاراول)
کافیه براش یه میدلور تعریف کنی.
2-میتونی توی دیتابیس ذخیره نکنی تا حتما تایید بشه.
هر کدوم از روش بالا خواستی درسته و بستگی به پروژه شما داره.
طبق کد شما راه اول رفتی و سیو کردی و بقیه اش اکیه
فقط دیگه لازم نیست بعد سیو دوباره کوئری بزنی
$user = User::wherePhone($data['phone'])->first();
بجاش اینو توی متغییر سیو کن :
$user = User::create([
'phone' => $data['phone'],
'password' => Hash::make($data['password']),
'reagent_code' => $data['reagent_code'],
]);
@siros.fakhri
ممنونم
فقط ما نوتیفیکیشن رو زمانی بکار میبریم که کاربر تو دیتابیس باشه درسته ؟
اینجا باید از ایونت و لیسنر استفاده کرد یا به صورت عادی درخواست ارسال بشه؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟