controller refactoring part 11

This commit is contained in:
Peter Papp
2021-07-20 17:17:18 +02:00
parent 2d814f3839
commit b0859f71cd
22 changed files with 295 additions and 252 deletions
@@ -0,0 +1,19 @@
<?php
namespace App\Users\Controllers\Account;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Users\Resources\UserResource;
class AccountDetailsController extends Controller
{
/**
* Get all user data for frontend
*/
public function __invoke(): UserResource
{
return new UserResource(
Auth::user()
);
}
}
@@ -0,0 +1,18 @@
<?php
namespace App\Users\Controllers\Account;
use App\Users\Resources\UserStorageResource;
use Illuminate\Support\Facades\Auth;
class StorageCapacityController
{
public function __invoke(): UserStorageResource
{
return new UserStorageResource(
Auth::user()
);
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Users\Controllers\Account;
use App\Http\Controllers\Controller;
use App\Users\Requests\UpdateUserPasswordRequest;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
class UpdatePasswordController extends Controller
{
public function __invoke(
UpdateUserPasswordRequest $request
): Response{
$user = Auth::user();
// Check if is demo
abort_if(is_demo_account($user->email), 204, 'Changed!');
// Store new password
$user->update([
'password' => bcrypt($request->input('password')),
]);
return response('Changed!', 204);
}
}
@@ -0,0 +1,58 @@
<?php
namespace App\Users\Controllers\Account;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
class UpdateProfileSettingsController extends Controller
{
/**
* Update user settings
*/
public function __invoke(Request $request): Response
{
// Validate request
// TODO: pridat validator do requestu
$validator = Validator::make($request->all(), [
'avatar' => 'sometimes|file',
'name' => 'string',
'value' => 'string',
]);
// Return error
if ($validator->fails()) {
abort(400, 'Bad input');
}
// Get user
$user = Auth::user();
// Check if is demo
abort_if(is_demo_account($user->email), 204, 'Done.');
// Update avatar
if ($request->hasFile('avatar')) {
$user
->settings()
->update([
'avatar' => store_avatar($request, 'avatar'),
]);
return response('Saved!', 204);
}
$user
->settings()
->update(
make_single_input($request)
);
return response('Saved!', 204);
}
}
@@ -1,159 +0,0 @@
<?php
namespace App\Users\Controllers;
use App\Users\Models\User;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Users\Resources\UserResource;
use Illuminate\Http\RedirectResponse;
use Support\Demo\Actions\DemoService;
use Laravel\Sanctum\PersonalAccessToken;
use Illuminate\Support\Facades\Validator;
use App\Users\Resources\UserStorageResource;
use Domain\Invoices\Resources\InvoiceCollection;
use App\Users\Requests\UpdateUserPasswordRequest;
use Illuminate\Contracts\Routing\ResponseFactory;
use App\Users\Requests\UserCreateAccessTokenRequest;
class AccountController extends Controller
{
public function __construct(
public DemoService $demo,
) {
}
/**
* Get all user data to frontend
*
* @return UserResource
*/
public function user()
{
return new UserResource(
Auth::user()
);
}
/**
* Get storage details
*
* @return UserStorageResource
*/
public function storage()
{
return new UserStorageResource(
Auth::user()
);
}
/**
* Get user invoices
*
* @return InvoiceCollection
*/
public function invoices()
{
return new InvoiceCollection(
Auth::user()->invoices()
);
}
/**
* Update user settings relationship
*
* @param Request $request
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function update_user_settings(Request $request)
{
// Validate request
// TODO: pridat validator do requestu
$validator = Validator::make($request->all(), [
'avatar' => 'sometimes|file',
'name' => 'string',
'value' => 'string',
]);
// Return error
if ($validator->fails()) {
abort(400, 'Bad input');
}
// Get user
$user = Auth::user();
// Check if is demo
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
// Update avatar
if ($request->hasFile('avatar')) {
$user
->settings()
->update([
'avatar' => store_avatar($request, 'avatar'),
]);
return response('Saved!', 204);
}
$user
->settings()
->update(
make_single_input($request)
);
return response('Saved!', 204);
}
/**
* Change user password
*
* @param Request $request
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function change_password(UpdateUserPasswordRequest $request)
{
// Get user
$user = Auth::user();
// Check if is demo
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
// Change and store new password
$user->password = bcrypt($request->input('password'));
$user->save();
return response('Changed!', 204);
}
public function email_verification(string $id, Request $request): RedirectResponse | Response
{
if (! $request->hasValidSignature()) {
return response('Invalid or expired url provided.', 401);
}
$user = User::find($id);
if (! $user->hasVerifiedEmail()) {
$user->markEmailAsVerified();
}
return redirect()->to('/successfully-verified');
}
public function resend_verification_email(Request $request): Response
{
$user = User::whereEmail($request->input('email'))->first();
if ($user->hasVerifiedEmail()) {
return response('Email was already verified.', 204);
}
$user->sendEmailVerificationNotification();
return response('Email verification link sent to your email', 204);
}
}
@@ -1,7 +1,7 @@
<?php
namespace App\Users\Controllers;
namespace App\Users\Controllers\Authentication;
use App\Http\Controllers\Controller;
@@ -11,7 +11,7 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Laravel\Sanctum\PersonalAccessToken;
class AccessTokenController extends Controller
class AccountAccessTokenController extends Controller
{
/**
* Get all user tokens
@@ -1,22 +1,21 @@
<?php
namespace App\Users\Controllers;
namespace App\Users\Controllers\Authentication;
use App\Users\Models\User;
use App\Http\Controllers\Controller;
use App\Users\Requests\CheckAccountRequest;
use Illuminate\Http\Response;
class AuthController extends Controller
class CheckAccountController extends Controller
{
/**
* Check if user account exist
*
* @param CheckAccountRequest $request
* @return mixed
*/
public function check_account(CheckAccountRequest $request)
{
// Get User
$user = User::whereEmail($request->email)
public function __invoke(
CheckAccountRequest $request
): array|Response {
$user = User::whereEmail($request->input('email'))
->first();
if (! $user) {
@@ -0,0 +1,29 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Http\Controllers\Controller;
use App\Users\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class ResendVerificationEmail extends Controller
{
public function __invoke(
Request $request
): Response {
$user = User::where('email', $request->input('email'))
->first();
if ($user->hasVerifiedEmail()) {
return response('Email was already verified.', 204);
}
$user->sendEmailVerificationNotification();
return response('Email verification link sent to your email', 204);
}
}
@@ -0,0 +1,32 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Http\Controllers\Controller;
use App\Users\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class VerifyEmailController extends Controller
{
public function __invoke(
string $id,
Request $request,
): RedirectResponse|Response {
if (! $request->hasValidSignature()) {
return response('Invalid or expired url provided.', 401);
}
$user = User::find($id);
if (! $user->hasVerifiedEmail()) {
$user->markEmailAsVerified();
}
return redirect()->to('/successfully-verified');
}
}