Register page should work

This commit is contained in:
2023-12-02 14:36:38 +05:00
parent 71da05f019
commit 306ee0f8a5
10 changed files with 87 additions and 7 deletions

View File

@@ -3,13 +3,16 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\System\Verification;
use App\Models\User;
use App\Rules\PhoneCodeVerification;
use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Laravel\Nova\Nova;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
@@ -100,8 +103,18 @@ class RegisterController extends Controller
/**
* Verify sms code
*/
public function verifySmsCode()
public function verifySmsCode(Request $request)
{
$this->middleware('auth');
$request->validate([
'code' => ['required', 'integer', new PhoneCodeVerification()]
]);
auth()->user()->update([
'phone_verified_at' => now()
]);
return redirect(Nova::path());
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckPhoneVerification
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
if (! auth()->check()) {
return redirect('/login');
}
if (! auth()->user()->isSystemUser() && is_null(auth()->user()->phone_verified_at)) {
return to_route('sms-verification');
}
return $next($request);
}
}

View File

@@ -29,6 +29,7 @@ class User extends Authenticatable
'email',
'phone',
'email_verified_at',
'phone_verified_at',
'password',
'locale',
'active',
@@ -98,6 +99,14 @@ class User extends Authenticatable
return $this->hasRole('operator');
}
/**
* Is System User
*/
public function isSystemUser(): bool
{
return $this->isAdmin() || $this->isOperator();
}
/**
* Check if user owns loan order.
*/

View File

@@ -45,6 +45,6 @@ class AuthServiceProvider extends ServiceProvider
{
Gate::define('isMe', fn ($user) => $user->isMe());
Gate::define('isAdmin', fn ($user) => $user->isAdmin());
Gate::define('systemUser', fn ($user) => $user->isAdmin() || $user->isOperator());
Gate::define('systemUser', fn ($user) => $user->isSystemUser());
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Rules;
use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
class PhoneCodeVerification implements ValidationRule
{
/**
* Run the validation rule.
*
* @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
*/
public function validate(string $attribute, mixed $value, Closure $fail): void
{
$verification = Verification::where('username', auth()->user()->phone)
->where('code', $request->verification_code)
->first();
if (! $verification) {
$fail(__('Write a correct data please'));
}
}
}