user settings api update

This commit is contained in:
Čarodej
2022-05-04 07:20:15 +02:00
parent 4fc5ccd26d
commit 3d2e279afd
31 changed files with 148 additions and 104 deletions
@@ -1,9 +1,10 @@
<?php
namespace App\Users\Controllers\Account;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\QueryException;
use App\Users\Requests\UpdateUserProfileSettingsRequest;
class UpdateProfileSettingsController extends Controller
@@ -11,10 +12,18 @@ class UpdateProfileSettingsController extends Controller
/**
* Update user settings
*/
public function __invoke(UpdateUserProfileSettingsRequest $request): Response
{
public function __invoke(
UpdateUserProfileSettingsRequest $request
): JsonResponse {
$successMessage = [
'type' => 'success',
'message' => "The {$request->input('name')} was successfully updated.",
];
// Check if is demo
abort_if(is_demo_account(), 204, 'Done.');
if (is_demo_account()) {
return response()->json($successMessage);
}
// Get user
$user = Auth::user();
@@ -27,15 +36,21 @@ class UpdateProfileSettingsController extends Controller
'avatar' => store_avatar($request, 'avatar'),
]);
return response('Saved!', 204);
return response()->json($successMessage);
}
$user
->settings()
->update(
make_single_input($request)
);
// Try to store user option
try {
$user
->settings()
->update(make_single_input($request));
} catch (QueryException $e) {
return response()->json([
'type' => 'error',
'message' => "You typed the invalid '{$request->input('name')}' name parameter.",
], 422);
}
return response('Saved!', 204);
return response()->json($successMessage);
}
}
@@ -2,7 +2,7 @@
namespace App\Users\Controllers\Authentication;
use App\Users\Models\User;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Users\Requests\CheckAccountRequest;
@@ -13,19 +13,22 @@ class CheckAccountController extends Controller
*/
public function __invoke(
CheckAccountRequest $request
): array | Response {
$user = User::whereEmail($request->input('email'))
): JsonResponse {
$user = User::where('email', $request->input('email'))
->first();
if (! $user) {
return response(__t('user_not_fount'), 404);
return response()->json([
'type' => 'error',
'message' => __t('user_not_fount'),
]);
}
return [
return response()->json([
'name' => $user->settings->first_name,
'avatar' => $user->settings->avatar,
'verified' => $user->email_verified_at ? 1 : 0,
'oauth_provider' => $user->password ? null : $user->oauth_provider,
];
]);
}
}
@@ -1,25 +0,0 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Controllers\Controller;
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,31 @@
<?php
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Users\Requests\ResendVerificationEmailRequest;
class ResendVerificationEmailController extends Controller
{
public function __invoke(
ResendVerificationEmailRequest $request
): JsonResponse {
$user = User::where('email', $request->input('email'))
->first();
if ($user->hasVerifiedEmail()) {
return response()->json([
'type' => 'error',
'message' => 'Email was already verified.',
], 422);
}
$user->sendEmailVerificationNotification();
return response()->json([
'type' => 'success',
'message' => 'Email verification link was sent to the email',
]);
}
}
@@ -2,8 +2,7 @@
namespace App\Users\Controllers\Verification;
use App\Users\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
@@ -11,10 +10,12 @@ class VerifyEmailController extends Controller
{
public function __invoke(
string $id,
Request $request,
): RedirectResponse | Response {
if (! $request->hasValidSignature()) {
return response('Invalid or expired url provided.', 401);
): RedirectResponse | JsonResponse {
if (! request()->hasValidSignature()) {
return response()->json([
'type' => 'error',
'message' => 'Invalid or expired url provided.',
], 422);
}
$user = User::find($id);
@@ -23,7 +23,7 @@ class CheckAccountRequest extends FormRequest
public function rules()
{
return [
'email' => 'required|string|email',
'email' => 'required|email',
];
}
}
@@ -0,0 +1,29 @@
<?php
namespace App\Users\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ResendVerificationEmailRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'email' => 'required|email',
];
}
}
@@ -23,9 +23,9 @@ class UpdateUserProfileSettingsRequest extends FormRequest
public function rules()
{
return [
'name' => 'required|string',
'value' => 'sometimes|string',
'avatar' => 'sometimes|file',
'name' => 'string',
'value' => 'string|nullable',
];
}
}