@josie
Для реализации регистрации с подтверждением номера на Laravel вы можете использовать следующие шаги:
- Создайте миграцию для таблицы пользователей с полями, такими как имя, email, пароль и номер телефона.Пример миграции:Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->string('phone_number')->unique();
$table->boolean('phone_number_verified')->default(false);
$table->rememberToken();
$table->timestamps();
});
- Создайте контроллер для регистрации пользователей и добавьте методы для отображения формы регистрации и обработки отправленной формы.Пример контроллера:namespace AppHttpControllersAuth;
use AppHttpControllersController;
use AppModelsUser;
use IlluminateAuthEventsRegistered;
use IlluminateHttpRequest;
use IlluminateSupportFacadesHash;
class RegisterController extends Controller
{
public function showRegistrationForm()
{
return view('auth.register');
}
public function register(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
'phone_number' => 'required|string|unique:users',
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'phone_number' => $request->phone_number,
]);
event(new Registered($user));
return redirect()->route('login')->with('success', 'Registration successful. Please verify your phone number.');
}
}
- Добавьте маршруты для отображения формы регистрации и обработки отправленной формы в файле web.php.Пример маршрутов:use AppHttpControllersAuthRegisterController;
Route::get('register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('register', [RegisterController::class, 'register']);
- Создайте миграцию для таблицы с подтверждениями номеров телефонов и добавьте поле user_id, которое будет связывать запись с пользователем.Пример миграции:Schema::create('phone_verifications', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->string('code');
$table->timestamp('expires_at')->nullable();
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
- Создайте модель для таблицы с подтверждениями номеров телефонов и добавьте методы для генерации и проверки кода подтверждения.Пример модели: