mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 19:10:40 +00:00
api refactoring
This commit is contained in:
@@ -43,9 +43,9 @@ class RouteServiceProvider extends ServiceProvider
|
||||
->middleware('api')
|
||||
->group(base_path('routes/share.php'));
|
||||
|
||||
Route::prefix('api/upload-request')
|
||||
Route::prefix('api/file-request')
|
||||
->middleware('api')
|
||||
->group(base_path('routes/upload-request.php'));
|
||||
->group(base_path('routes/file-request.php'));
|
||||
|
||||
Route::prefix('api/admin')
|
||||
->middleware(['api', 'auth:sanctum', 'admin'])
|
||||
@@ -85,5 +85,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||
? Limit::perMinute(1000)->by($request->user()->id)
|
||||
: Limit::perMinute(100)->by($request->ip());
|
||||
});
|
||||
|
||||
RateLimiter::for('login', fn (Request $request) => Limit::perMinute(5)->by($request->ip()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Requests\UpdateAvatarRequest;
|
||||
|
||||
class UpdateAvatarController extends Controller
|
||||
{
|
||||
/**
|
||||
* Update user settings
|
||||
*/
|
||||
public function __invoke(
|
||||
UpdateAvatarRequest $request
|
||||
): JsonResponse {
|
||||
$successMessage = [
|
||||
'type' => 'success',
|
||||
'message' => 'The avatar was successfully updated.',
|
||||
];
|
||||
|
||||
// Check if is demo
|
||||
if (isDemoAccount()) {
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
|
||||
$request
|
||||
->user()
|
||||
->settings()
|
||||
->update([
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
]);
|
||||
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ namespace App\Users\Controllers\Account;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Database\QueryException;
|
||||
use App\Users\Requests\UpdateUserProfileSettingsRequest;
|
||||
|
||||
@@ -25,23 +24,10 @@ class UpdateProfileSettingsController extends Controller
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
|
||||
// Get user
|
||||
$user = Auth::user();
|
||||
|
||||
// Update avatar
|
||||
if ($request->hasFile('avatar')) {
|
||||
$user
|
||||
->settings()
|
||||
->update([
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
]);
|
||||
|
||||
return response()->json($successMessage);
|
||||
}
|
||||
|
||||
// Try to store user option
|
||||
try {
|
||||
$user
|
||||
$request
|
||||
->user()
|
||||
->settings()
|
||||
->update(make_single_input($request));
|
||||
} catch (QueryException $e) {
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers\Authentication;
|
||||
|
||||
use Hash;
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Requests\LoginUserRequest;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class AuthenticateAndReturnBearerTokenController extends Controller
|
||||
{
|
||||
/**
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function __invoke(LoginUserRequest $request): JsonResponse
|
||||
{
|
||||
// Get user
|
||||
$user = User::where('email', $request->input('email'))
|
||||
->firstOrFail();
|
||||
|
||||
// Check the credentials
|
||||
if (! Hash::check($request->input('password'), $user->password)) {
|
||||
throw ValidationException::withMessages(['email' => ['The provided credentials are incorrect.'], ]);
|
||||
}
|
||||
|
||||
// Create access token
|
||||
$token = $user->createToken('login');
|
||||
|
||||
// Return token
|
||||
return response()->json([
|
||||
'type' => 'success',
|
||||
'message' => 'You were successfully authenticated',
|
||||
'data' => [
|
||||
'token' => $token->plainTextToken,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -21,7 +21,7 @@ class CheckAccountController extends Controller
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => __t('user_not_fount'),
|
||||
]);
|
||||
], 404);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers\Authentication;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Laravel\Sanctum\PersonalAccessToken;
|
||||
|
||||
class DestroyActiveBearerTokenController extends Controller
|
||||
{
|
||||
public function __invoke(): JsonResponse
|
||||
{
|
||||
[$id, $token] = explode('|', request()->bearerToken(), 2);
|
||||
|
||||
// Get token
|
||||
$instance = PersonalAccessToken::findOrFail($id);
|
||||
|
||||
// Check the correct token
|
||||
if (hash_equals($instance->token, hash('sha256', $token))) {
|
||||
// Delete token
|
||||
$instance->delete();
|
||||
|
||||
return response()->json([
|
||||
'type' => 'success',
|
||||
'message' => 'You were successfully logged out',
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'type' => 'error',
|
||||
'message' => 'You are not authorized',
|
||||
], 401);
|
||||
}
|
||||
}
|
||||
@@ -109,7 +109,7 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
'used' => (float) get_storage_percentage($this->usedCapacity, $this->limitations->max_storage_amount),
|
||||
'used_formatted' => get_storage_percentage($this->usedCapacity, $this->limitations->max_storage_amount) . '%',
|
||||
'capacity' => $this->limitations->max_storage_amount,
|
||||
'capacity_formatted' => format_gigabytes($this->limitations->max_storage_amount),
|
||||
'capacity_formatted' => toGigabytes($this->limitations->max_storage_amount),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ class UserLimitation extends Model
|
||||
|
||||
return [
|
||||
'use' => Metric::bytes($userCapacity)->format(),
|
||||
'total' => format_gigabytes($this->max_storage_amount),
|
||||
'total' => toGigabytes($this->max_storage_amount),
|
||||
'percentage' => get_storage_percentage($userCapacity, $this->max_storage_amount),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
namespace App\Users\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class LoginUserRequest 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',
|
||||
'password' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace App\Users\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UpdateAvatarRequest 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 [
|
||||
'avatar' => 'required|file',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -24,8 +24,7 @@ class UpdateUserProfileSettingsRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string',
|
||||
'value' => 'sometimes|string',
|
||||
'avatar' => 'sometimes|file',
|
||||
'value' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ class UserStorageResource extends JsonResource
|
||||
'type' => 'storage',
|
||||
'attributes' => [
|
||||
'used' => Metric::bytes($this->usedCapacity)->format(),
|
||||
'capacity' => format_gigabytes($totalCapacity),
|
||||
'capacity' => toGigabytes($totalCapacity),
|
||||
'percentage' => (float) get_storage_percentage($this->usedCapacity, $totalCapacity),
|
||||
],
|
||||
'meta' => [
|
||||
|
||||
@@ -30,7 +30,7 @@ class UserSubscription extends JsonResource
|
||||
'canceled' => $this->subscription('main')->cancelled(),
|
||||
'name' => $subscription['product']['name'],
|
||||
'capacity' => (int) $subscription['product']['metadata']['capacity'],
|
||||
'capacity_formatted' => format_gigabytes($subscription['product']['metadata']['capacity']),
|
||||
'capacity_formatted' => toGigabytes($subscription['product']['metadata']['capacity']),
|
||||
'slug' => $subscription['plan']['id'],
|
||||
'canceled_at' => format_date($active_subscription['canceled_at'], 'd. M. Y'),
|
||||
'created_at' => format_date($active_subscription['current_period_start'], 'd. M. Y'),
|
||||
|
||||
Reference in New Issue
Block a user