feat: add user authentication
This commit is contained in:
@@ -3,57 +3,43 @@
|
|||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use App\Http\Requests\Auth\LoginPostRequest;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
class LoginController extends Controller
|
class LoginController extends Controller
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* نمایش صفحه ورود
|
|
||||||
*/
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
return view('auth.login');
|
return view('auth.login');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ورود کاربر
|
public function post(LoginPostRequest $request)
|
||||||
*/
|
|
||||||
public function post(Request $request)
|
|
||||||
{
|
{
|
||||||
// $credentials = $request->validate([
|
$login = $request->validated();
|
||||||
// 'email' => [
|
|
||||||
// 'required',
|
$field = filter_var($login['username'], FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
|
||||||
// 'email',
|
|
||||||
// ],
|
$credentials = [
|
||||||
//
|
$field => $login['username'],
|
||||||
// 'password' => [
|
'password' => $login['password'],
|
||||||
// 'required',
|
];
|
||||||
// 'string',
|
|
||||||
// ],
|
|
||||||
// ],
|
|
||||||
//
|
|
||||||
// [
|
|
||||||
// 'email.required' => 'ایمیل را وارد کنید.',
|
|
||||||
// 'email.email' => 'فرمت ایمیل صحیح نیست.',
|
|
||||||
// 'password.required' => 'رمز عبور را وارد کنید.',
|
|
||||||
// ]);
|
|
||||||
|
|
||||||
$remember = $request->boolean('remember');
|
$remember = $request->boolean('remember');
|
||||||
|
|
||||||
if (Auth::guard('web')->attempt($credentials, $remember)) {
|
if (Auth::attempt($credentials, $remember)) {
|
||||||
|
|
||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
|
|
||||||
return redirect()->intended(
|
return redirect()
|
||||||
route('index')
|
->intended(route('account.index'))
|
||||||
);
|
->with('success', 'با موفقیت وارد حساب کاربری شدید.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return back()
|
return back()
|
||||||
->withInput($request->only('email', 'remember'))
|
->withInput($request->only('username'))
|
||||||
->withErrors([
|
->withErrors([
|
||||||
'email' => 'ایمیل یا رمز عبور اشتباه است.',
|
'username' => 'نام کاربری، ایمیل یا رمز عبور اشتباه است.',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,17 @@ namespace App\Http\Controllers\Auth;
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
class LogoutController extends Controller
|
class LogoutController extends Controller
|
||||||
{
|
{
|
||||||
//
|
public function index(Request $request)
|
||||||
|
{
|
||||||
|
Auth::logout();
|
||||||
|
$request->session()->invalidate();
|
||||||
|
$request->session()->regenerateToken();
|
||||||
|
|
||||||
|
return redirect()->route('auth.login.index')->with('success', 'با موفقیت از حساب کاربری خارج شدید.');
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Auth;
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
@@ -7,11 +8,8 @@ use App\Http\Requests\Auth\RegisterPostRequest;
|
|||||||
use App\Models\City;
|
use App\Models\City;
|
||||||
use App\Models\Province;
|
use App\Models\Province;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Hash;
|
use Illuminate\Support\Facades\Hash;
|
||||||
use Illuminate\Support\Facades\Storage;
|
|
||||||
use Illuminate\Validation\Rule;
|
|
||||||
|
|
||||||
class RegisterController extends Controller
|
class RegisterController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,9 +24,13 @@ class RegisterController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ثبت نام کاربر
|
||||||
|
*/
|
||||||
public function post(RegisterPostRequest $request)
|
public function post(RegisterPostRequest $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// $data = $request->validated();
|
||||||
|
|
||||||
$imagePath = null;
|
$imagePath = null;
|
||||||
|
|
||||||
@@ -42,65 +44,59 @@ class RegisterController extends Controller
|
|||||||
|
|
||||||
$user = User::create([
|
$user = User::create([
|
||||||
|
|
||||||
'first_name' => $request->input('first_name'),
|
'first_name' => $request['first_name'],
|
||||||
|
|
||||||
'last_name' => $request->input('last_name'),
|
'last_name' => $request['last_name'],
|
||||||
|
|
||||||
'national_code' => $request->input('national_code'),
|
'national_code' => $request['national_code'],
|
||||||
|
|
||||||
'gender' => $request->input('gender'),
|
'gender' => $request['gender'],
|
||||||
|
|
||||||
'marital_status' => $request->input('marital_status'),
|
'marital_status' => $request['marital_status'],
|
||||||
|
|
||||||
'spouse_name' => $request->input('marital_status') == 2
|
'spouse_name' => $request['marital_status'] == 2
|
||||||
? $request->input('spouse_name')
|
? ($data['spouse_name'] ?? null)
|
||||||
: null,
|
: null,
|
||||||
|
|
||||||
'mobile' => $request->input('mobile'),
|
'mobile' => $request['mobile'],
|
||||||
|
|
||||||
'email' => $request->input('email'),
|
'email' => $request['email'],
|
||||||
|
|
||||||
'username' => $request->input('username'),
|
'username' => $request['username'],
|
||||||
|
|
||||||
'password' => Hash::make($request->input('password')),
|
'password' => Hash::make($request['password']),
|
||||||
|
|
||||||
'image' => $imagePath,
|
'image' => $imagePath,
|
||||||
|
|
||||||
'province_id' => $request->input('province_id'),
|
'province_id' => $data['province_id'] ?? null,
|
||||||
|
|
||||||
'city_id' => $request->input('city_id'),
|
'city_id' => $request['city_id'] ?? null,
|
||||||
|
|
||||||
'status' => 1,
|
'status' => 1,
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| ورود خودکار بعد از ثبت نام
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
Auth::guard('web')->login($user);
|
Auth::guard('web')->login($user);
|
||||||
|
|
||||||
$request->session()->regenerate();
|
// $request->session()->regenerate();
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| انتقال به پنل کاربری
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('account.index')
|
->route('account.index')
|
||||||
->with('success', 'ثبتنام شما با موفقیت انجام شد.');
|
->with('success', 'ثبتنام شما با موفقیت انجام شد.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* دریافت شهرستانهای یک استان
|
||||||
|
*/
|
||||||
public function cities(Province $province)
|
public function cities(Province $province)
|
||||||
{
|
{
|
||||||
$cities = City::where('province_id', $province->id)
|
$cities = City::where('province_id', $province->id)
|
||||||
->orderBy('name')
|
->orderBy('name')
|
||||||
->get(['id', 'name']);
|
->get([
|
||||||
|
'id',
|
||||||
|
'name'
|
||||||
|
]);
|
||||||
|
|
||||||
return response()->json($cities);
|
return response()->json($cities);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,9 +23,14 @@ class LoginPostRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'email' => [
|
// 'email' => [
|
||||||
|
// 'required',
|
||||||
|
// 'email',
|
||||||
|
// ],
|
||||||
|
|
||||||
|
'username' => [
|
||||||
'required',
|
'required',
|
||||||
'email',
|
'string',
|
||||||
],
|
],
|
||||||
|
|
||||||
'password' => [
|
'password' => [
|
||||||
|
|||||||
@@ -27,22 +27,26 @@ class RegisterPostRequest extends FormRequest
|
|||||||
|
|
||||||
'first_name' => [
|
'first_name' => [
|
||||||
'required',
|
'required',
|
||||||
|
'persian_alpha',
|
||||||
'string',
|
'string',
|
||||||
|
'min:3',
|
||||||
'max:100',
|
'max:100',
|
||||||
'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
'last_name' => [
|
'last_name' => [
|
||||||
'required',
|
'required',
|
||||||
|
'persian_alpha',
|
||||||
'string',
|
'string',
|
||||||
'max:100',
|
'max:100',
|
||||||
'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
'national_code' => [
|
'national_code' => [
|
||||||
'required',
|
'required',
|
||||||
|
// 'ir_national_id',
|
||||||
'digits:10',
|
'digits:10',
|
||||||
'unique:users,national_code',
|
'unique:users,national_code',
|
||||||
],
|
],
|
||||||
@@ -67,14 +71,15 @@ class RegisterPostRequest extends FormRequest
|
|||||||
'string',
|
'string',
|
||||||
'max:200',
|
'max:200',
|
||||||
'required_if:marital_status,2',
|
'required_if:marital_status,2',
|
||||||
'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
// 'regex:/^[\x{0600}-\x{06FF}\x{200C}\s]+$/u',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
'mobile' => [
|
'mobile' => [
|
||||||
'required',
|
'required',
|
||||||
'digits:11',
|
'digits:11',
|
||||||
'regex:/^09\d{9}$/',
|
'ir_mobile:zero',
|
||||||
|
// 'regex:/^09\d{9}$/',
|
||||||
'unique:users,mobile',
|
'unique:users,mobile',
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -89,10 +94,11 @@ class RegisterPostRequest extends FormRequest
|
|||||||
|
|
||||||
'username' => [
|
'username' => [
|
||||||
'required',
|
'required',
|
||||||
|
'persian_not_accept',
|
||||||
'string',
|
'string',
|
||||||
'min:3',
|
'min:3',
|
||||||
'max:50',
|
'max:50',
|
||||||
'regex:/^[A-Za-z0-9]+$/',
|
// 'regex:/^[A-Za-z0-9]+$/',
|
||||||
'unique:users,username',
|
'unique:users,username',
|
||||||
],
|
],
|
||||||
|
|
||||||
@@ -125,7 +131,6 @@ class RegisterPostRequest extends FormRequest
|
|||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,8 +98,8 @@
|
|||||||
|
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
id="login"
|
id="username"
|
||||||
name="login"
|
name="username"
|
||||||
value="{{ old('login') }}"
|
value="{{ old('login') }}"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="ایمیل یا نام کاربری"
|
placeholder="ایمیل یا نام کاربری"
|
||||||
|
|||||||
Reference in New Issue
Block a user