84
common/Auth/Controllers/MobileAuthController.php
Executable file
84
common/Auth/Controllers/MobileAuthController.php
Executable file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Auth\Controllers;
|
||||
|
||||
use Common\Auth\Fortify\ValidateLoginCredentials;
|
||||
use Common\Core\BaseController;
|
||||
use Common\Core\Bootstrap\MobileBootstrapData;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Laravel\Fortify\Contracts\CreatesNewUsers;
|
||||
use Laravel\Fortify\Contracts\EmailVerificationNotificationSentResponse;
|
||||
use Laravel\Fortify\Contracts\RegisterResponse;
|
||||
use Laravel\Fortify\Fortify;
|
||||
|
||||
class MobileAuthController extends BaseController
|
||||
{
|
||||
public function login(Request $request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
Fortify::username() => 'required|string',
|
||||
'password' => 'required|string',
|
||||
'token_name' => 'required|string|min:3|max:100',
|
||||
]);
|
||||
|
||||
$validator = app(ValidateLoginCredentials::class);
|
||||
$user = $validator->execute($request);
|
||||
|
||||
if (!$user) {
|
||||
$validator->throwFailedAuthenticationException(
|
||||
$request,
|
||||
trans('auth.failed'),
|
||||
);
|
||||
}
|
||||
|
||||
if (settings('single_device_login')) {
|
||||
Auth::logoutOtherDevices($request->get('password'));
|
||||
}
|
||||
|
||||
Auth::login($user);
|
||||
|
||||
$bootstrapData = app(MobileBootstrapData::class)
|
||||
->init()
|
||||
->refreshToken($request->get('token_name'))
|
||||
->get();
|
||||
|
||||
return $this->success($bootstrapData);
|
||||
}
|
||||
|
||||
public function register(
|
||||
Request $request,
|
||||
CreatesNewUsers $creator,
|
||||
): RegisterResponse {
|
||||
event(new Registered(($user = $creator->create($request->all()))));
|
||||
|
||||
Auth::login($user);
|
||||
|
||||
return app(RegisterResponse::class);
|
||||
}
|
||||
|
||||
public function sendEmailVerificationNotification()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
|
||||
if (
|
||||
request()
|
||||
->user()
|
||||
->hasVerifiedEmail()
|
||||
) {
|
||||
return request()->wantsJson()
|
||||
? new JsonResponse('', 204)
|
||||
: redirect()->intended(
|
||||
Fortify::redirects('email-verification'),
|
||||
);
|
||||
}
|
||||
|
||||
request()
|
||||
->user()
|
||||
->sendEmailVerificationNotification();
|
||||
|
||||
return app(EmailVerificationNotificationSentResponse::class);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user