Решил сделать авторизацию и регистрацию только по телефону.
Сделал вот такую форму авторизации:
Вот такую регистрации:
Вот такой контроллер LoginController:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request) {
$phone = $request->phone;
$user = User::where('phone', $phone)->first();
if ($user) {
Auth::login($user);
return redirect()->route('catalog.index');
}
else {
return redirect()->back();
}
}
public function username() {
return 'phone';
}
}
Вот такой RegisterController:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
return Validator::make($data, [
// 'name' => ['required', 'string', 'max:255'],
'phone' => ['required', 'numeric', 'min:11']
// 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
// 'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
protected function create(array $data)
{
return User::create([
'phone' => $data['phone'],
// 'name' => $data['name'],
// 'email' => $data['email'],
// 'password' => Hash::make($data['password']),
]);
}
}
Как видите, в RegisterController есть валидация, в которой указано, что минимум 11 символов.
Но суть в том, что в форме я могу указать хоть 1 символ и юзер успешно создасться.
А на авторизации попросту не выходит никаких ошибок. Т.е. если укажу номер телефона, которого не сущесвует в БД (т.е.нет такого юзера), он меня не авторизует, но и не выведет никаких ошибок. Обновится страница и все.
В коде вы могли заметить моменты связанные с FireBase. Я просто делаю потверждение номера по нему, но сейчас это не так важно. Я пока-что её убрал и просто сделал грубо говоря регистрацию и авторизацию по одному полю - чисто номер телефона.