mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +00:00
email verification review
This commit is contained in:
@@ -51,7 +51,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -250,7 +250,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -449,7 +449,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -648,7 +648,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -847,7 +847,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -1046,7 +1046,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -1245,7 +1245,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -1444,7 +1444,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -1643,7 +1643,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -1842,7 +1842,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
@@ -2041,7 +2041,7 @@ namespace PHPSTORM_META {
|
||||
'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class,
|
||||
'Illuminate\Testing\ParallelTesting' => \Illuminate\Testing\ParallelTesting::class,
|
||||
'LaravelCrawlerDetect' => \Jaybizzle\CrawlerDetect\CrawlerDetect::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUser::class,
|
||||
'Laravel\Fortify\Contracts\CreatesNewUsers' => \App\Actions\Fortify\CreateNewUserAction::class,
|
||||
'Laravel\Fortify\Contracts\FailedPasswordConfirmationResponse' => \Laravel\Fortify\Http\Responses\FailedPasswordConfirmationResponse::class,
|
||||
'Laravel\Fortify\Contracts\FailedTwoFactorLoginResponse' => \Laravel\Fortify\Http\Responses\FailedTwoFactorLoginResponse::class,
|
||||
'Laravel\Fortify\Contracts\LockoutResponse' => \Laravel\Fortify\Http\Responses\LockoutResponse::class,
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
namespace App\Actions\Fortify;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\Setting;
|
||||
use App\Models\UserSettings;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Contracts\Auth\StatefulGuard;
|
||||
use Laravel\Fortify\Contracts\CreatesNewUsers;
|
||||
use Laravel\Fortify\Contracts\RegisterResponse;
|
||||
|
||||
class CreateNewUser implements CreatesNewUsers
|
||||
{
|
||||
use PasswordValidationRules;
|
||||
|
||||
/**
|
||||
* The guard implementation.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Auth\StatefulGuard
|
||||
*/
|
||||
protected $guard;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Auth\StatefulGuard $guard
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(StatefulGuard $guard)
|
||||
{
|
||||
$this->guard = $guard;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate and create a newly registered user.
|
||||
*
|
||||
* @param array $input
|
||||
* @return \App\Models\User
|
||||
*/
|
||||
public function create(array $input)
|
||||
{
|
||||
$settings = Setting::whereIn('name', ['storage_default', 'registration'])
|
||||
->pluck('value', 'name');
|
||||
|
||||
// Check if account registration is enabled
|
||||
if (! intval($settings['registration'])) {
|
||||
abort(401);
|
||||
}
|
||||
|
||||
Validator::make($input, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => [
|
||||
'required',
|
||||
'string',
|
||||
'email',
|
||||
'max:255',
|
||||
Rule::unique(User::class),
|
||||
],
|
||||
'password' => $this->passwordRules(),
|
||||
])->validate();
|
||||
|
||||
$user = User::create([
|
||||
'email' => $input['email'],
|
||||
'password' => bcrypt($input['password']),
|
||||
]);
|
||||
|
||||
UserSettings::unguard();
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $input['name'],
|
||||
'storage_capacity' => $settings['storage_default'],
|
||||
]);
|
||||
|
||||
if(!get_setting('user_verification')) {
|
||||
$user->markEmailAsVerified();
|
||||
}
|
||||
|
||||
UserSettings::reguard();
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new registered user.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Laravel\Fortify\Contracts\CreatesNewUsers $creator
|
||||
* @return \Laravel\Fortify\Contracts\RegisterResponse
|
||||
*/
|
||||
public function store(Request $request,
|
||||
CreatesNewUsers $creator): RegisterResponse
|
||||
{
|
||||
event(new Registered($user = $creator->create($request->all())));
|
||||
|
||||
if(! get_setting('user_verification')) {
|
||||
$this->guard->login($user);
|
||||
};
|
||||
|
||||
return app(RegisterResponse::class);
|
||||
}
|
||||
}
|
||||
79
app/Actions/Fortify/CreateNewUserAction.php
Normal file
79
app/Actions/Fortify/CreateNewUserAction.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Actions\Fortify;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Models\Setting;
|
||||
use App\Models\UserSettings;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Contracts\Auth\StatefulGuard;
|
||||
|
||||
class CreateNewUserAction extends Controller
|
||||
{
|
||||
use PasswordValidationRules;
|
||||
|
||||
public function __construct(
|
||||
protected StatefulGuard $guard
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Validate and create a newly registered user.
|
||||
*/
|
||||
public function __invoke(Request $request): Response
|
||||
{
|
||||
$settings = Setting::whereIn('name', [
|
||||
'storage_default', 'registration'
|
||||
])
|
||||
->pluck('value', 'name');
|
||||
|
||||
// Check if account registration is enabled
|
||||
if (!intval($settings['registration'])) {
|
||||
abort(401);
|
||||
}
|
||||
|
||||
Validator::make($request->all(), [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => [
|
||||
'required',
|
||||
'string',
|
||||
'email',
|
||||
'max:255',
|
||||
Rule::unique(User::class),
|
||||
],
|
||||
'password' => $this->passwordRules(),
|
||||
])->validate();
|
||||
|
||||
$user = User::create([
|
||||
'email' => $request->email,
|
||||
'password' => bcrypt($request->password),
|
||||
]);
|
||||
|
||||
UserSettings::unguard();
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $request->name,
|
||||
'storage_capacity' => $settings['storage_default'],
|
||||
]);
|
||||
|
||||
if (!get_setting('user_verification')) {
|
||||
$user->markEmailAsVerified();
|
||||
}
|
||||
|
||||
UserSettings::reguard();
|
||||
|
||||
event(new Registered($user));
|
||||
|
||||
if (!get_setting('user_verification')) {
|
||||
$this->guard->login($user);
|
||||
}
|
||||
|
||||
return response('User registered successfully', 201);
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ class Kernel extends ConsoleKernel
|
||||
|
||||
$schedule->call(function () use ($scheduler) {
|
||||
$scheduler->delete_unverified_users();
|
||||
})->everySixHours();
|
||||
})->daily();
|
||||
|
||||
// Run queue jobs every minute
|
||||
$schedule->command('queue:work --stop-when-empty')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Lang;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\User;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Services\DemoService;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Resources\UserResource;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Resources\InvoiceCollection;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
@@ -13,6 +16,7 @@ use App\Http\Resources\UserStorageResource;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use App\Http\Requests\User\UpdateUserPasswordRequest;
|
||||
use App\Http\Requests\User\UserCreateAccessTokenRequest;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\PersonalAccessToken;
|
||||
|
||||
class AccountController extends Controller
|
||||
@@ -131,10 +135,8 @@ class AccountController extends Controller
|
||||
|
||||
/**
|
||||
* Get all user tokens
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function tokens_index()
|
||||
public function tokens(): Response
|
||||
{
|
||||
return response(
|
||||
Auth::user()->tokens()->get(),
|
||||
@@ -142,35 +144,30 @@ class AccountController extends Controller
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create token
|
||||
*
|
||||
* @param Request $request
|
||||
* @return Collection
|
||||
*/
|
||||
public function create_token(UserCreateAccessTokenRequest $request)
|
||||
public function create_token(UserCreateAccessTokenRequest $request): Response
|
||||
{
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 201, [
|
||||
"name" => "token",
|
||||
"token" => Str::random(40),
|
||||
"abilities" => '["*"]',
|
||||
"tokenable_id" => Str::uuid(),
|
||||
"updated_at" => now(),
|
||||
"created_at" => now(),
|
||||
"id" => Str::random(40),
|
||||
]);
|
||||
|
||||
return response(
|
||||
Auth::user()->createToken($request->input('name')),
|
||||
201
|
||||
);
|
||||
$token = Auth::user()->createToken($request->input('name'));
|
||||
|
||||
return response($token, 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* Revoke token
|
||||
*
|
||||
* @param $id
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function revoke_token(PersonalAccessToken $token)
|
||||
public function revoke_token(PersonalAccessToken $token): Response
|
||||
{
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Deleted!');
|
||||
|
||||
if(Auth::user()->id !== $token->tokenable_id) {
|
||||
if (Auth::id() !== $token->tokenable_id) {
|
||||
return response('Unauthorized', 401);
|
||||
}
|
||||
|
||||
@@ -179,17 +176,10 @@ class AccountController extends Controller
|
||||
return response('Deleted!', 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* Email verification
|
||||
*
|
||||
* @param Request $request
|
||||
* @param User $user
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function email_verify($id, Request $request)
|
||||
public function email_verification(string $id, Request $request): RedirectResponse|Response
|
||||
{
|
||||
if (!$request->hasValidSignature()) {
|
||||
return response("Invalid/Expired url provided.", 401);
|
||||
return response("Invalid or expired url provided.", 401);
|
||||
}
|
||||
|
||||
$user = User::find($id);
|
||||
@@ -201,21 +191,16 @@ class AccountController extends Controller
|
||||
return redirect()->to('/successfully-verified');
|
||||
}
|
||||
|
||||
/**
|
||||
* Resend verification email
|
||||
*
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function resend_verify_email(Request $request)
|
||||
public function resend_verification_email(Request $request): Response
|
||||
{
|
||||
$user = User::whereEmail($request->input('email'))->first();
|
||||
|
||||
if ($user->hasVerifiedEmail()) {
|
||||
return response("Email already verified.", 204);
|
||||
return response("Email was already verified.", 204);
|
||||
}
|
||||
|
||||
$user->sendEmailVerificationNotification();
|
||||
|
||||
return response("Email verification link sent on your email", 200);
|
||||
return response("Email verification link sent to your email", 204);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ namespace App\Providers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Fortify\Fortify;
|
||||
use App\Actions\Fortify\CreateNewUser;
|
||||
use App\Actions\Fortify\CreateNewUserAction;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use App\Actions\Fortify\ResetUserPassword;
|
||||
@@ -29,7 +29,6 @@ class FortifyServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
Fortify::createUsersUsing(CreateNewUser::class);
|
||||
Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class);
|
||||
Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
|
||||
Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
|
||||
|
||||
@@ -13,7 +13,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $namespace = 'App\Http\Controllers';
|
||||
protected $namespace = null;
|
||||
|
||||
/**
|
||||
* The path to the "home" route for your application.
|
||||
@@ -22,16 +22,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public const HOME = '/home';
|
||||
|
||||
/**
|
||||
* Define your route model bindings, pattern filters, etc.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
parent::boot();
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the routes for the application.
|
||||
*
|
||||
|
||||
@@ -77,17 +77,13 @@ class SchedulerService
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete unverified users older as 30 days
|
||||
* Delete unverified users older than 30 days
|
||||
*/
|
||||
public function delete_unverified_users(): void
|
||||
{
|
||||
User::where('created_at', '<=', now()->subDay(30)->toDateString())
|
||||
User::where('created_at', '<=', now()->subDays(30)->toDateString())
|
||||
->where('email_verified_at', null)
|
||||
->get()
|
||||
->each(function ($user) {
|
||||
|
||||
// Delete users
|
||||
$user->delete();
|
||||
});
|
||||
->each(fn ($user) => $user->delete());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,39 +10,39 @@
|
||||
"require": {
|
||||
"php": "^8.0",
|
||||
"ext-json": "*",
|
||||
"brianium/paratest": "^6.2",
|
||||
"brianium/paratest": "^6.3",
|
||||
"cartalyst/stripe-laravel": "^13.1",
|
||||
"doctrine/dbal": "^2.12.1",
|
||||
"doctrine/dbal": "^2.13.2",
|
||||
"fideloper/proxy": "^4.4.1",
|
||||
"fruitcake/laravel-cors": "^2.0.3",
|
||||
"fruitcake/laravel-cors": "^2.0.4",
|
||||
"gabrielelana/byte-units": "^0.5.0",
|
||||
"guzzlehttp/guzzle": "^7.2.0",
|
||||
"intervention/image": "^2.5.1",
|
||||
"guzzlehttp/guzzle": "^7.3.0",
|
||||
"intervention/image": "^2.6.0",
|
||||
"jaybizzle/laravel-crawler-detect": "^1.2",
|
||||
"kyslik/column-sortable": "^6.4",
|
||||
"laravel/cashier": "^12.9.1",
|
||||
"laravel/fortify": "^1.7.7",
|
||||
"laravel/framework": "^8.30.1",
|
||||
"laravel/sanctum": "^2.9",
|
||||
"kyslik/column-sortable": "^6.4.1",
|
||||
"laravel/cashier": "^12.15.0",
|
||||
"laravel/fortify": "^1.7.14",
|
||||
"laravel/framework": "^8.50.0",
|
||||
"laravel/sanctum": "^2.11.2",
|
||||
"laravel/tinker": "^2.6.1",
|
||||
"laravel/ui": "^3.2.0",
|
||||
"league/flysystem-aws-s3-v3": "^1.0.29",
|
||||
"league/flysystem-cached-adapter": "^1.1.0",
|
||||
"madnest/madzipper": "^1.1.0",
|
||||
"spatie/laravel-backup": "^6.15",
|
||||
"spatie/laravel-tail": "^4.3",
|
||||
"teamtnt/laravel-scout-tntsearch-driver": "^11.1.0",
|
||||
"vimeo/psalm": "^4.7"
|
||||
"spatie/laravel-backup": "^6.16.1",
|
||||
"spatie/laravel-tail": "^4.3.3",
|
||||
"teamtnt/laravel-scout-tntsearch-driver": "^11.5.0.0",
|
||||
"vimeo/psalm": "^4.8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-json": "*",
|
||||
"friendsofphp/php-cs-fixer": "^3.0",
|
||||
"barryvdh/laravel-ide-helper": "^2.9",
|
||||
"facade/ignition": "^2.5.14",
|
||||
"fakerphp/faker": "^1.14.1",
|
||||
"barryvdh/laravel-ide-helper": "^2.10",
|
||||
"facade/ignition": "^2.11.0",
|
||||
"fakerphp/faker": "^1.15.0",
|
||||
"mockery/mockery": "^1.4.3",
|
||||
"nunomaduro/collision": "^5.3.0",
|
||||
"phpunit/phpunit": "^9.5.2"
|
||||
"nunomaduro/collision": "^5.5.0",
|
||||
"phpunit/phpunit": "^9.5.6"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
|
||||
11931
composer.lock
generated
11931
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -480,8 +480,8 @@ return [
|
||||
'page_not_verified.resend_button' => 'Resend verification email.',
|
||||
'page_email_successfully_verified.title' => 'Your account was successfully verified!',
|
||||
'page_email_successfully_verified.subtitle' => 'Now you can log in.',
|
||||
'page_email_successfully_send.title' => 'Email was successfully send!',
|
||||
'page_email_successfully_send.subtitle' => 'Check your email address where was the email send.',
|
||||
'page_email_successfully_send.title' => 'Verification email was successfully send!',
|
||||
'page_email_successfully_send.subtitle' => 'Check your email address where the email was send.',
|
||||
'popup_create_folder.folder_default_name' => 'New Folder',
|
||||
'popup_create_folder.label' => 'Type Name',
|
||||
'popup_create_folder.placeholder' => 'Type your name',
|
||||
@@ -686,5 +686,6 @@ return [
|
||||
'app_touch_icon' => 'App Touch Icon',
|
||||
'app_touch_icon_description' => 'If user store bookmark on his phone screen, this icon appear in app thumbnail. Preferred size is 156x156',
|
||||
'select_search_placeholder' => 'Search in list...',
|
||||
'go_home' => 'Go to the homepage',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -1,95 +1,102 @@
|
||||
{
|
||||
"/js/main.js": "/js/main.js",
|
||||
"/css/app.css": "/css/app.css",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=db23a3d539fec4b03c65",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=ca3bdda58d0bb26a896c",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=789a8508d6219be0904d",
|
||||
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~7d45cb3e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~7d45cb3e.js?id=6c5491727f3a920ce38d",
|
||||
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js?id=1d83683f5afa0abb114d",
|
||||
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=e1f223fd5412173ed827",
|
||||
"/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=2647d05d2a105cac3f0f",
|
||||
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=ae0bb7e684c857693aa8",
|
||||
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=ea0cb4ec8487af4776eb",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=3b66bd631241fe5466ed",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=69d6fefe404b9ec4f0de",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=07a6859a69c14d4bc289",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=b8f2628bc5946089d58a",
|
||||
"/chunks/app-billings.js": "/chunks/app-billings.js?id=8db305db2a42878cb243",
|
||||
"/chunks/app-email.js": "/chunks/app-email.js?id=21f1982949085b513cd4",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=ed459a1ea3fa89d3de30",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=3e30d578c3d751351eb9",
|
||||
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js?id=53e545b823ce2e687b31",
|
||||
"/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js?id=e3df08bfa100e0216a95",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=28f3ddde79d9fac1d6c0",
|
||||
"/chunks/app-payments.js": "/chunks/app-payments.js?id=54d9bf8fc371179f295b",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=7036abc45d63af4fe972",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=94f462aaa7a7e7dcd03d",
|
||||
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=d25da896180b673d0ff1",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=f317578eda4c05b98d7f",
|
||||
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=023e6b0ad58fa1dc5bc6",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=86c558e2cb256bda86c3",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=e2a93e2ceb83cab77b77",
|
||||
"/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=8e86179595c935837731",
|
||||
"/chunks/database.js": "/chunks/database.js?id=b86430381b515d8d220a",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=2167671fe3099f75ecfe",
|
||||
"/chunks/email-verified.js": "/chunks/email-verified.js?id=3166a561f7fac48f4a66",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=575db3cd8ad3a9ce6c37",
|
||||
"/chunks/files.js": "/chunks/files.js?id=b852156f00c07bcd55aa",
|
||||
"/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=c1af7637432594f4a242",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=e5133c50af3101591521",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=39824e4246c795c46ed9",
|
||||
"/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js?id=fdeb2974fe93fe48a7c0",
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=ba95a545dbdf9a00995d",
|
||||
"/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=eb1d55596ca638768696",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=ebcbbc0115c1589dcca5",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=b62a9ad724d34bcbc44d",
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=63a8701083fa67e7c689",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=b1ba41c331f013837e2d",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=e795bd0f98216a25dc06",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=88b6d026ec4d3794aa1a",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=2373f18eb236bf6775fa",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=fd5882a90b4705a172f2",
|
||||
"/chunks/plan-create.js": "/chunks/plan-create.js?id=47c71e0ae08db8d11c52",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=0e8ea332703dcae2fbdd",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=2b856bf8204afcea4078",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=bc757f00e838ebeddad0",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=36ebc380b6e7773a04ff",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=5a0101097d87433a7986",
|
||||
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=2224a6de276a2edc346b",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=20236b41dd811bfd492c",
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=f532862b4c362de67360",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=f708db10063dd6c0a864",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=862f21eca40d822b2190",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=aa81750b0d9e206d5ee9",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=3810f765b5305c2ce25c",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=82b0855d47725e3af2df",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=c3c536eec45ffbbc77f4",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=ee860273cc027ffa83c1",
|
||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=d15d2096bcf308b21a50",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=d90814559910a424902d",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=de5b7595a352f2614b55",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=238c362399a4018549bd",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=d630c473dc6b751ec50f",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=040a7241ea133456200c",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=7400cf64cbdf59ff0e65",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=4145fb89140eac0c34a4",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=20721ca146c27a67bccd",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=d21cbdb1cee9197323c3",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=de43eac3b1627e00424d",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=114cd615807f23990197",
|
||||
"/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=75510b0f500e49b263d1",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=e75ca6ec0b01b9bead51",
|
||||
"/chunks/user.js": "/chunks/user.js?id=a73470995a4ae3fd2881",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=b051dfa4977253898319",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=a0782d05787effe95383",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=ff37a70a549fccc51dfc",
|
||||
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=fb09652ecb27af5f3b10",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=c6b39bbd4e2cf6175864",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=bef79e67371f255f883e",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=c64145dfa85586f564b0",
|
||||
"/chunks/users.js": "/chunks/users.js?id=0652fa00a2b955a7c591",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js?id=57c854adb91ed9a9d088",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js?id=170765b4fd923b62195c",
|
||||
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=ca01bfe1656f58710763",
|
||||
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=eb141834bc24b72d8e92"
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=baf8a45b3c1d04f09229",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=61bd29aac87199e45174",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=d21b5946c88a87e9099d",
|
||||
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js?id=b80fc9fc5b08a9c60e2e",
|
||||
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js?id=b26eff2899df7f85229d",
|
||||
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=146db62ff2aa25c39386",
|
||||
"/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=e23621e57bab3e9e349a",
|
||||
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=4da2e03f6f01c274a7cc",
|
||||
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=7611512975ed49edb61f",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=b709bf1d7c3cd24f9529",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=075ff381293e1a20d167",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=5f27527c258dada4aeb9",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=b6c9565875974d8c350c",
|
||||
"/chunks/app-billings.js": "/chunks/app-billings.js?id=b23ac97d9e65beff5fc6",
|
||||
"/chunks/app-email.js": "/chunks/app-email.js?id=35afede5ea121718e2cc",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=0d8a74f6041001c36ab3",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=8f77e8eebf32943fdf4b",
|
||||
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js?id=2551061f37c2a8056921",
|
||||
"/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~934b6779.js?id=cecfc7ab2626eb4e988f",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=a16de82f2298df235166",
|
||||
"/chunks/app-payments.js": "/chunks/app-payments.js?id=245920077be074208693",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=d57e806c59d1aef2eb3a",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=526bb7b757956f6c70c3",
|
||||
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=3805f23ba0a474ce7b4e",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=67b977184f0744593de9",
|
||||
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=2a8def187ec322eb760e",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=72d02c781aa8e6295069",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=a7aef88def02bf2fec08",
|
||||
"/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=1027aa9c1e090b196d29",
|
||||
"/chunks/database.js": "/chunks/database.js?id=27ab279a8b380da7a0e8",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=1141f8e183483da82e8a",
|
||||
"/chunks/email-verified.js": "/chunks/email-verified.js?id=60a7eabffc13b2fe48e0",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=3e657a9476a8596396b3",
|
||||
"/chunks/files.js": "/chunks/files.js?id=54c6dddb471986e202f3",
|
||||
"/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=b5e21d1b7386c6551aa2",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=3b96cba1e5482e4c33d4",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=48f4f2c0aa3064162ad9",
|
||||
"/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js?id=1b96ff16168a192ea787",
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=221f9578098058fc4c4a",
|
||||
"/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=a6be7116bbdadfb8b1cc",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=96019e230f0c5b59478a",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=5a299216398f59a4947b",
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=12cbea54eb6f5b94606c",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=35179ba2b74cdaf74492",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=3f0c127b00d113541acc",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=761c916a5efdee5ffddd",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=7b3c7ee8c586e73fe65a",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=c4cc3da1bedaa9139087",
|
||||
"/chunks/plan-create.js": "/chunks/plan-create.js?id=2a672b390de82eb8cef6",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=f00946b7df419813f099",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=dbc08f8cdc23900ef40a",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=8c4b655b9286e06894c5",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=2b26173a02ed9f86e875",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=5d4ed2751b809310e23b",
|
||||
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be3d7cf51585313cf53b",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=41b536880e846017d2d0",
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=93ffe6eca4dcafbe8234",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b35e751cdc1946a4fb60",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=84f0716dc70fb1ab5de5",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=7404a1125aee6014b72a",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=094eb70eb2fa6b7c8dd2",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=31e3562551bfc4907b5b",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=47ad97b554fcc1564685",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=b06d4a1d504b2a6cbeed",
|
||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=1bffa4ae7d545af08355",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=41d3478184ec24644a1c",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=7524b7a783d4aed23794",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=bfdf9bb904d354bdcbd1",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=0f6c34512740fca7e007",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=7886247bb35deada28a2",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=fb2de6069de0669b0e02",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=b30b10ca09b115efc6ca",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=b2bc73016f0811f6838d",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=e12081daec0f6ea047ab",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=a09dc140a3914fb64a1a",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=3fe276a31a66ba244d10",
|
||||
"/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=43888143d0a6afe67d7a",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=5979a154f760a992e617",
|
||||
"/chunks/user.js": "/chunks/user.js?id=41076be9126702330159",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=c65b1718b207ae7b678e",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=ecebc7e50b64744420c3",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=7ae038f6b4a4683c5bdb",
|
||||
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=1395c30e08946026fbc4",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=f5fa3532fb7f4f5f2707",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=e19c7dee4ef5eb38a075",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=c6ec1b7215530cfdbceb",
|
||||
"/chunks/users.js": "/chunks/users.js?id=71de2e012c4c566a8ec3",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~2fac28cc.js?id=5007f400f6b506ab23f4",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~d5e36d91.js?id=2b11dd8f37c3c2421f2f",
|
||||
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=9d10953d3b088324dfe3",
|
||||
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=7d09e0b0658e140a7ffa",
|
||||
"/chunks/sign-up.975b48abd4874d2d4701.hot-update.js": "/chunks/sign-up.975b48abd4874d2d4701.hot-update.js",
|
||||
"/chunks/email-verified.51f60246090cc58fa13c.hot-update.js": "/chunks/email-verified.51f60246090cc58fa13c.hot-update.js",
|
||||
"/chunks/email-verified.793fadba4eec7baa97de.hot-update.js": "/chunks/email-verified.793fadba4eec7baa97de.hot-update.js",
|
||||
"/chunks/email-verified.e34f4263892542caa617.hot-update.js": "/chunks/email-verified.e34f4263892542caa617.hot-update.js",
|
||||
"/chunks/email-verified.b1f4240b7eb52aea68c7.hot-update.js": "/chunks/email-verified.b1f4240b7eb52aea68c7.hot-update.js",
|
||||
"/chunks/app-others.a134296fc107b0a807e3.hot-update.js": "/chunks/app-others.a134296fc107b0a807e3.hot-update.js",
|
||||
"/chunks/sign-up.e3dc2f848ca66fd4b8ea.hot-update.js": "/chunks/sign-up.e3dc2f848ca66fd4b8ea.hot-update.js"
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
storageLimitation: parseInt(response.data.storage_limitation),
|
||||
mimetypesBlacklist : response.data.mimetypes_blacklist,
|
||||
uploadLimit: response.data.upload_limit,
|
||||
userVerification: response.data.user_verification
|
||||
userVerification: parseInt(response.data.user_verification)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -138,15 +138,15 @@
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
|
||||
if(! config.userVerification) {
|
||||
if(! this.config.userVerification) {
|
||||
// Set login state
|
||||
this.$store.commit('SET_AUTHORIZED', true)
|
||||
|
||||
// Go to files page
|
||||
this.$router.push({name: 'Files'})
|
||||
} else {
|
||||
// Go to sign-in page
|
||||
this.$router.push({name: 'SignIn'})
|
||||
// Go to SuccessfullySend page
|
||||
this.$router.push({name: 'SuccessfullySend'})
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
@@ -7,6 +7,12 @@
|
||||
<h1>{{ $t('page_email_successfully_send.title') }}</h1>
|
||||
<h2>{{ $t('page_email_successfully_send.subtitle') }}</h2>
|
||||
|
||||
<span class="additional-link">
|
||||
<router-link :to="{name: 'Homepage'}" class="text-theme">
|
||||
{{ $t('go_home') }}
|
||||
</router-link>
|
||||
</span>
|
||||
|
||||
</AuthContent>
|
||||
</AuthContentWrapper>
|
||||
</template>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Actions\Fortify\CreateNewUser;
|
||||
use App\Actions\Fortify\CreateNewUserAction;
|
||||
use App\Http\Controllers\App\AppFunctionsController;
|
||||
use App\Http\Controllers\FileManager\ShareController;
|
||||
use App\Http\Controllers\FileManager\TrashController;
|
||||
@@ -23,7 +23,7 @@ Route::group(['prefix' => 'password'], function () {
|
||||
});
|
||||
|
||||
// Register user
|
||||
Route::post('/register', [CreateNewUser::class, 'store']);
|
||||
Route::post('/register', CreateNewUserAction::class);
|
||||
|
||||
// User master Routes
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
|
||||
@@ -8,8 +8,8 @@ use App\Http\Controllers\User\PaymentMethodsController;
|
||||
Route::post('/check', [AuthController::class, 'check_account']);
|
||||
|
||||
// Email verification
|
||||
Route::get('/email/verify/{id}', [AccountController::class, 'email_verify'])->name('verification.verify');
|
||||
Route::post('/email/resend/verify', [AccountController::class, 'resend_verify_email'])->name('verification.send');
|
||||
Route::get('/email/verify/{id}', [AccountController::class, 'email_verification'])->name('verification.verify');
|
||||
Route::post('/email/resend/verify', [AccountController::class, 'resend_verification_email'])->name('verification.send');
|
||||
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
// Account
|
||||
@@ -18,7 +18,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
Route::post('/token/create', [AccountController::class, 'create_token']);
|
||||
Route::post('/password', [AccountController::class, 'change_password']);
|
||||
Route::get('/subscription', [SubscriptionController::class, 'show']);
|
||||
Route::get('/tokens', [AccountController::class, 'tokens_index']);
|
||||
Route::get('/tokens', [AccountController::class, 'tokens']);
|
||||
Route::get('/invoices', [AccountController::class, 'invoices']);
|
||||
Route::get('/storage', [AccountController::class, 'storage']);
|
||||
Route::get('/', [AccountController::class, 'user']);
|
||||
|
||||
@@ -266,7 +266,7 @@ class UserAccountTest extends TestCase
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_user_email_verify()
|
||||
public function it_verify_user_email()
|
||||
{
|
||||
$user = User::factory(User::class)
|
||||
->create([
|
||||
@@ -279,9 +279,9 @@ class UserAccountTest extends TestCase
|
||||
['id' => $user->id, 'hash' => sha1($user->email)]
|
||||
);
|
||||
|
||||
$response = $this->getJson($verificationUrl);
|
||||
|
||||
$response->assertRedirect('successfully-verified');
|
||||
$this
|
||||
->getJson($verificationUrl)
|
||||
->assertRedirect('successfully-verified');
|
||||
|
||||
$this->assertNotNull(User::find($user->id)->get('email_verified_at'));
|
||||
}
|
||||
|
||||
@@ -2,12 +2,11 @@
|
||||
|
||||
namespace Tests\Feature\App;
|
||||
|
||||
use App\Models\File;
|
||||
use App\Models\Share;
|
||||
use App\Models\User;
|
||||
use App\Models\Zip;
|
||||
use App\Services\SchedulerService;
|
||||
use App\Services\SetupService;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Storage;
|
||||
@@ -20,8 +19,8 @@ class SchedulerTest extends TestCase
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->setup = app()->make(SetupService::class);
|
||||
$this->scheduler = app()->make(SchedulerService::class);
|
||||
$this->setup = resolve(SetupService::class);
|
||||
$this->scheduler = resolve(SchedulerService::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,4 +98,42 @@ class SchedulerTest extends TestCase
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_delete_non_verified_users_after_30_days()
|
||||
{
|
||||
$expiredUser = User::factory(User::class)
|
||||
->create([
|
||||
'email_verified_at' => null,
|
||||
'created_at' => now()->subDays(31)
|
||||
]);
|
||||
|
||||
$nonExpiredUser = User::factory(User::class)
|
||||
->create([
|
||||
'email_verified_at' => null,
|
||||
'created_at' => now()->subDays(14)
|
||||
]);
|
||||
|
||||
$verifiedUser = User::factory(User::class)
|
||||
->create([
|
||||
'email_verified_at' => now()->subDays(15),
|
||||
'created_at' => now()->subDays(31)
|
||||
]);
|
||||
|
||||
$this->scheduler->delete_unverified_users();
|
||||
|
||||
$this->assertDatabaseMissing('users', [
|
||||
'id' => $expiredUser->id,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('users', [
|
||||
'id' => $nonExpiredUser->id,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('users', [
|
||||
'id' => $verifiedUser->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,22 @@
|
||||
|
||||
namespace Tests;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
|
||||
abstract class TestCase extends BaseTestCase
|
||||
{
|
||||
use CreatesApplication;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
Carbon::setTestNow('1. January 2021');
|
||||
|
||||
Notification::fake();
|
||||
|
||||
$this->withoutExceptionHandling();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user