Refactor with Pint

This commit is contained in:
brufdev
2025-01-24 19:57:11 +00:00
parent a9da9593f3
commit 785dc3d600
84 changed files with 441 additions and 274 deletions
+4 -2
View File
@@ -1,16 +1,18 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Enums\OAuthProviders;
class GetAvailableOAuthProviders
final class GetAvailableOAuthProviders
{
public function handle(): array
{
return array_filter(
OAuthProviders::cases(),
fn($provider) => env(mb_strtoupper($provider->value) . '_CLIENT_ID'),
fn ($provider) => env(mb_strtoupper($provider->value).'_CLIENT_ID'),
);
}
}
+3 -1
View File
@@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
namespace App\Actions;
class GetPathFromUser
final class GetPathFromUser
{
public function handle(): string
{
+3 -1
View File
@@ -1,10 +1,12 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Models\Vault;
class GetPathFromVault
final class GetPathFromVault
{
public function handle(Vault $vault): string
{
+5 -3
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Models\VaultNode;
class GetPathFromVaultNode
final class GetPathFromVaultNode
{
public function handle(VaultNode $node, bool $includeSelf = true): string
{
$relativePath = $node->parent ?
$node->parent->ancestorsAndSelf->last()->full_path . '/' :
$node->parent->ancestorsAndSelf->last()->full_path.'/' :
'';
$path = sprintf(
@@ -20,7 +22,7 @@ class GetPathFromVaultNode
);
if ($includeSelf) {
$path .= $node->name . ($node->is_file ? '.' . $node->extension : '');
$path .= $node->name.($node->is_file ? '.'.$node->extension : '');
}
return $path;
+4 -2
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Models\VaultNode;
class GetUrlFromVaultNode
final class GetUrlFromVaultNode
{
public function handle(VaultNode $node): string
{
$path = $node->ancestorsAndSelf()->get()->last()->full_path;
return '/files/' . $node->vault_id . '?path=' . $path . '.' . $node->extension;
return '/files/'.$node->vault_id.'?path='.$path.'.'.$node->extension;
}
}
+5 -3
View File
@@ -1,18 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Models\VaultNode;
use Illuminate\Support\Str;
class GetVaultNodeFromPath
final class GetVaultNodeFromPath
{
public function handle(int $vaultId, string $path, ?int $parentId = null): VaultNode | null
public function handle(int $vaultId, string $path, ?int $parentId = null): ?VaultNode
{
$path = Str::ltrim(str_replace('%20', ' ', $path), '/');
$pieces = explode('/', $path);
if (count($pieces) == 1) {
if (count($pieces) === 1) {
$pathParts = pathinfo($pieces[0]);
return VaultNode::query()
+6 -5
View File
@@ -1,22 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use App\Models\Vault;
use App\Models\VaultNode;
use Illuminate\Http\File;
use App\Services\VaultFile;
use App\Services\VaultFiles\Note;
use App\Actions\GetPathFromVaultNode;
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
class ProcessImportedFile
final class ProcessImportedFile
{
public function handle(Vault $vault, VaultNode $parent, string $fileName, string $filePath): void
{
['filename' => $name, 'extension' => $extension] = pathinfo($fileName);
if (!in_array($extension, VaultFile::extensions())) {
if (! in_array($extension, VaultFile::extensions())) {
abort(400);
}
@@ -47,7 +48,7 @@ class ProcessImportedFile
);
natcasesort($nodes);
$name .= count($nodes) && preg_match('/-(\d+)$/', (string) end($nodes), $matches) === 1 ?
'-' . ((int) $matches[1] + 1) :
'-'.((int) $matches[1] + 1) :
'-1';
}
+10 -9
View File
@@ -1,14 +1,15 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use ZipArchive;
use App\Services\VaultFile;
use App\Services\VaultFiles\Note;
use App\Actions\GetPathFromVaultNode;
use Illuminate\Support\Facades\Storage;
use ZipArchive;
class ProcessImportedVault
final class ProcessImportedVault
{
public function handle(string $fileName, string $filePath): void
{
@@ -35,7 +36,7 @@ class ProcessImportedVault
);
natcasesort($vaults);
$vaultName .= count($vaults) && preg_match('/-(\d+)$/', (string) end($vaults), $matches) === 1 ?
'-' . ((int) $matches[1] + 1) :
'-'.((int) $matches[1] + 1) :
'-1';
}
@@ -49,23 +50,23 @@ class ProcessImportedVault
for ($i = 0, $zipCount = $zip->count(); $i < $zipCount; $i++) {
$entryName = $zip->getNameIndex($i);
$isFile = !str_ends_with($entryName, '/');
$isFile = ! str_ends_with($entryName, '/');
$flags = $isFile ? PATHINFO_FILENAME : PATHINFO_BASENAME;
$name = pathinfo($entryName, $flags);
$extension = null;
$content = null;
if (!$isFile) {
if (! $isFile) {
// ZipArchive folder paths end with a / that should
// be removed in order for pathinfo() return the correct dirname
$entryDirName = rtrim($entryName, '/');
$entryDirName = mb_rtrim($entryName, '/');
$entryParentDirName = pathinfo($entryDirName, PATHINFO_DIRNAME);
$parentId = $nodeIds[$entryParentDirName];
} else {
['dirname' => $entryDirName, 'extension' => $extension] = pathinfo($entryName);
$parentId = $nodeIds[$entryDirName];
if (!in_array($extension, VaultFile::extensions())) {
if (! in_array($extension, VaultFile::extensions())) {
continue;
}
@@ -90,7 +91,7 @@ class ProcessImportedVault
Storage::disk('local')->makeDirectory($relativePath);
}
if (!array_key_exists($entryDirName, $nodeIds)) {
if (! array_key_exists($entryDirName, $nodeIds)) {
$nodeIds[$entryDirName] = $node->id;
}
}
+6 -4
View File
@@ -1,17 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Actions;
use GuzzleHttp\Psr7\UriResolver;
use GuzzleHttp\Psr7\Utils;
use Illuminate\Support\Str;
use GuzzleHttp\Psr7\UriResolver;
class ResolveTwoPaths
final class ResolveTwoPaths
{
public function handle(string $currentPath, string $path): string
{
$uri = Utils::uriFor(trim($path));
$resolvedUri = UriResolver::resolve(Utils::uriFor(trim($currentPath)), $uri);
$uri = Utils::uriFor(mb_trim($path));
$resolvedUri = UriResolver::resolve(Utils::uriFor(mb_trim($currentPath)), $uri);
return Str::ltrim($resolvedUri, '/');
}
+3 -1
View File
@@ -1,8 +1,10 @@
<?php
declare(strict_types=1);
namespace App\Enums;
Enum OAuthProviders: string
enum OAuthProviders: string
{
case Authentik = 'authentik';
case Bitbucket = 'bitbucket';
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
abstract class Controller
+12 -9
View File
@@ -1,17 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Models\Vault;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
use App\Actions\ResolveTwoPaths;
use Illuminate\Support\Facades\Gate;
use App\Actions\GetPathFromVaultNode;
use App\Actions\GetVaultNodeFromPath;
use App\Actions\ResolveTwoPaths;
use App\Models\Vault;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class FileController extends Controller
final class FileController extends Controller
{
/**
* Show the file for a given user.
@@ -20,16 +22,16 @@ class FileController extends Controller
{
Gate::authorize('view', $request->vault);
if (!$request->has('path')) {
if (! $request->has('path')) {
abort(404);
}
$path = $request->path;
if (!Str::of($request->path)->startsWith('/') && $request->has('node')) {
if (! Str::of($request->path)->startsWith('/') && $request->has('node')) {
$node = $vault->nodes()->findOrFail($request->node);
if ($node->vault_id != $vault->id) {
if ($node->vault_id !== $vault->id) {
abort(404);
}
@@ -42,6 +44,7 @@ class FileController extends Controller
$absolutePath = Storage::disk('local')->path($relativePath);
ob_end_clean();
return response()->file($absolutePath);
}
}
+4 -2
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Livewire\Component;
use App\Livewire\Forms\ForgotPasswordForm;
use Livewire\Component;
class ForgotPassword extends Component
final class ForgotPassword extends Component
{
public ForgotPasswordForm $form;
+5 -3
View File
@@ -1,13 +1,15 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Livewire\Component;
use App\Actions\GetAvailableOAuthProviders;
use App\Livewire\Forms\LoginForm;
use Illuminate\Support\Facades\Session;
use App\Actions\GetAvailableOAuthProviders;
use Livewire\Component;
class Login extends Component
final class Login extends Component
{
public LoginForm $form;
+4 -2
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Livewire\Component;
use Laravel\Socialite\Facades\Socialite;
use Livewire\Component;
class OAuthLogin extends Component
final class OAuthLogin extends Component
{
public function mount($provider): void
{
+9 -5
View File
@@ -1,16 +1,18 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Exception;
use App\Models\User;
use Livewire\Component;
use Illuminate\Support\Str;
use Exception;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Laravel\Socialite\Facades\Socialite;
use Livewire\Component;
class OAuthLoginCallback extends Component
final class OAuthLoginCallback extends Component
{
public function mount($provider): void
{
@@ -19,12 +21,14 @@ class OAuthLoginCallback extends Component
} catch (Exception) {
session()->flash('error', __('An error occurred while authenticating.'));
$this->redirect('/login', true);
return;
}
if (!filter_var($providerUser->getEmail(), FILTER_VALIDATE_EMAIL)) {
if (! filter_var($providerUser->getEmail(), FILTER_VALIDATE_EMAIL)) {
session()->flash('error', __('No email address found.'));
$this->redirect('/login', true);
return;
}
+4 -2
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Livewire\Component;
use App\Livewire\Forms\RegisterForm;
use Livewire\Component;
class Register extends Component
final class Register extends Component
{
public RegisterForm $form;
+5 -3
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Auth;
use Livewire\Component;
use App\Livewire\Forms\ResetPasswordForm;
use Livewire\Component;
class ResetPassword extends Component
final class ResetPassword extends Component
{
public ResetPasswordForm $form;
@@ -20,7 +22,7 @@ class ResetPassword extends Component
public function send(): void
{
if (!$this->form->resetPassword()) {
if (! $this->form->resetPassword()) {
return;
}
+3 -1
View File
@@ -1,10 +1,12 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Dashboard;
use Livewire\Component;
class Index extends Component
final class Index extends Component
{
public function boot(): void
{
+5 -3
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use Illuminate\Support\Arr;
use Livewire\Attributes\Validate;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules\Password;
use Illuminate\Validation\ValidationException;
use Livewire\Attributes\Validate;
use Livewire\Form;
class EditPasswordForm extends Form
final class EditPasswordForm extends Form
{
#[Validate]
public string $current_password = '';
+4 -2
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use App\Models\User;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Validate;
use Livewire\Form;
class EditProfileForm extends Form
final class EditProfileForm extends Form
{
#[Validate]
public string $name;
+6 -4
View File
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use Livewire\Attributes\Validate;
use Illuminate\Support\Facades\Password;
use Livewire\Attributes\Validate;
use Livewire\Form;
class ForgotPasswordForm extends Form
final class ForgotPasswordForm extends Form
{
#[Validate('required|string|email')]
public string $email = '';
@@ -25,7 +27,7 @@ class ForgotPasswordForm extends Form
$this->only('email')
);
if ($status != Password::RESET_LINK_SENT) {
if ($status !== Password::RESET_LINK_SENT) {
$this->addError('email', __($status));
return;
+5 -3
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Illuminate\Auth\Events\Lockout;
@@ -10,7 +12,7 @@ use Illuminate\Validation\ValidationException;
use Livewire\Attributes\Validate;
use Livewire\Form;
class LoginForm extends Form
final class LoginForm extends Form
{
#[Validate('required|string|email')]
public string $email = '';
@@ -24,7 +26,7 @@ class LoginForm extends Form
/**
* Attempt to authenticate the request's credentials.
*
* @throws \Illuminate\Validation\ValidationException
* @throws ValidationException
*/
public function authenticate(): void
{
@@ -69,6 +71,6 @@ class LoginForm extends Form
*/
protected function throttleKey(): string
{
return Str::transliterate(Str::lower($this->email) . '|' . request()->ip());
return Str::transliterate(Str::lower($this->email).'|'.request()->ip());
}
}
+7 -5
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use App\Models\User;
use Illuminate\Validation\Rules;
use Illuminate\Auth\Events\Registered;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Auth\Events\Registered;
use Illuminate\Validation\Rules;
use Livewire\Form;
class RegisterForm extends Form
final class RegisterForm extends Form
{
public string $name = '';
@@ -23,7 +25,7 @@ class RegisterForm extends Form
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:' . User::class],
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
'password' => ['required', 'string', 'confirmed', Rules\Password::defaults()],
];
}
+11 -9
View File
@@ -1,17 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use Illuminate\Support\Str;
use Livewire\Attributes\Locked;
use Illuminate\Validation\Rules;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Password;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Illuminate\Validation\Rules;
use Livewire\Attributes\Locked;
use Livewire\Form;
class ResetPasswordForm extends Form
final class ResetPasswordForm extends Form
{
#[Locked]
public string $token = '';
@@ -66,7 +68,7 @@ class ResetPasswordForm extends Form
// If the password was successfully reset, we will redirect the user back to
// the application's home authenticated view. If there is an error we can
// redirect them back to where they came from with their error message.
if ($status != Password::PASSWORD_RESET) {
if ($status !== Password::PASSWORD_RESET) {
$this->addError('email', __($status));
return false;
+4 -2
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use App\Models\Vault;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Validate;
use Livewire\Form;
class VaultForm extends Form
final class VaultForm extends Form
{
public ?Vault $vault = null;
+4 -2
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Forms;
use Livewire\Form;
use App\Models\Vault;
use App\Models\VaultNode;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Livewire\Attributes\Validate;
use Livewire\Form;
class VaultNodeForm extends Form
final class VaultNodeForm extends Form
{
public Vault $vault;
+7 -5
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Layout;
use Livewire\Component;
use Illuminate\Support\Facades\Auth;
use App\Livewire\Forms\EditProfileForm;
use Illuminate\Support\Facades\Session;
use App\Livewire\Forms\EditPasswordForm;
use App\Livewire\Forms\EditProfileForm;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Livewire\Component;
class UserMenu extends Component
final class UserMenu extends Component
{
public EditProfileForm $profileForm;
+5 -3
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use App\Livewire\Forms\VaultNodeForm;
use App\Models\Vault;
use App\Models\VaultNode;
use Livewire\Attributes\On;
use App\Livewire\Forms\VaultNodeForm;
class AddNode extends Modal
{
@@ -22,7 +24,7 @@ class AddNode extends Modal
#[On('open-modal')]
public function open(?VaultNode $parent = null, bool $isFile = true): void
{
if (!is_null($parent->vault)) {
if (! is_null($parent->vault)) {
$this->authorize('update', $parent->vault);
}
@@ -37,7 +39,7 @@ class AddNode extends Modal
$node = $this->form->create();
$this->closeModal();
$this->dispatch('node-updated');
if ($node->parent_id == $this->form->vault->templates_node_id) {
if ($node->parent_id === $this->form->vault->templates_node_id) {
$this->dispatch('templates-refresh');
}
$message = $this->form->is_file ? __('File created') : __('Folder created');
+3 -1
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use App\Livewire\Forms\VaultNodeForm;
use App\Models\Vault;
use App\Models\VaultNode;
use Livewire\Attributes\On;
use App\Livewire\Forms\VaultNodeForm;
class EditNode extends Modal
{
+5 -3
View File
@@ -1,15 +1,17 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use App\Actions\ProcessImportedFile;
use App\Models\Vault;
use App\Models\VaultNode;
use App\Services\VaultFile;
use Illuminate\Support\Arr;
use Livewire\Attributes\On;
use Livewire\WithFileUploads;
use Livewire\Attributes\Validate;
use App\Actions\ProcessImportedFile;
use Livewire\WithFileUploads;
class ImportFile extends Modal
{
@@ -31,7 +33,7 @@ class ImportFile extends Modal
return [
'file' => [
'required',
'mimes:' . Arr::join(VaultFile::extensions(), ','),
'mimes:'.Arr::join(VaultFile::extensions(), ','),
],
];
}
+5 -3
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use Livewire\Attributes\On;
use Livewire\WithFileUploads;
use Livewire\Attributes\Validate;
use App\Actions\ProcessImportedVault;
use Livewire\Attributes\On;
use Livewire\Attributes\Validate;
use Livewire\WithFileUploads;
class ImportVault extends Modal
{
+8 -6
View File
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use App\Livewire\Forms\VaultNodeForm;
use App\Models\Vault;
use App\Models\VaultNode;
use Livewire\Attributes\On;
use App\Services\VaultFiles\Image;
use App\Livewire\Forms\VaultNodeForm;
use Livewire\Attributes\On;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Builder;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Collection;
@@ -48,8 +50,8 @@ class MarkdownEditorSearch extends Modal
->when($this->searchType === 'image', function (Builder $query): void {
$query->whereIn('extension', Image::extensions());
})
->when(strlen($this->search), function (Builder $query): void {
$query->where('name', 'like', '%' . $this->search . '%');
->when(mb_strlen($this->search), function (Builder $query): void {
$query->where('name', 'like', '%'.$this->search.'%');
})
->orderByDesc('updated_at')
->limit(5)
@@ -58,8 +60,8 @@ class MarkdownEditorSearch extends Modal
$this->nodes->transform(function (VaultNode $item): VaultNode {
$item->full_path = $item->ancestorsAndSelf()->get()->last()->full_path;
$item->full_path_encoded = preg_replace('/\s/', '%20', (string) $item->full_path);
$item->dir_name = preg_replace('/' . $item->name . '$/', '', (string)$item->full_path);
if (strlen((string) $item->dir_name) == 1) {
$item->dir_name = preg_replace('/'.$item->name.'$/', '', (string) $item->full_path);
if (mb_strlen((string) $item->dir_name) === 1) {
$item->dir_name = '';
}
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use Livewire\Component;
+7 -5
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Modals;
use App\Livewire\Forms\VaultNodeForm;
use App\Models\Vault;
use App\Models\VaultNode;
use Livewire\Attributes\On;
use App\Livewire\Forms\VaultNodeForm;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Builder;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Collection;
@@ -40,8 +42,8 @@ class SearchNode extends Modal
->select('id', 'name', 'extension')
->where('vault_id', $this->vault->id)
->where('is_file', true)
->when(strlen($this->search), function (Builder $query): void {
$query->where('name', 'like', '%' . $this->search . '%');
->when(mb_strlen($this->search), function (Builder $query): void {
$query->where('name', 'like', '%'.$this->search.'%');
})
->orderByDesc('updated_at')
->limit(5)
@@ -49,8 +51,8 @@ class SearchNode extends Modal
$this->nodes->transform(function (VaultNode $item): VaultNode {
$item->full_path = $item->ancestorsAndSelf()->get()->last()->full_path;
$item->dir_name = preg_replace('/' . $item->name . '$/', '', (string) $item->full_path);
if (strlen((string) $item->dir_name) == 1) {
$item->dir_name = preg_replace('/'.$item->name.'$/', '', (string) $item->full_path);
if (mb_strlen((string) $item->dir_name) === 1) {
$item->dir_name = '';
}
+42 -38
View File
@@ -1,21 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Vault;
use App\Actions\GetPathFromVaultNode;
use App\Livewire\Forms\VaultForm;
use App\Models\Vault;
use App\Models\VaultNode;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Livewire\Component;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Collection;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Throwable;
use ZipArchive;
use App\Models\Vault;
use Livewire\Component;
use App\Models\VaultNode;
use Illuminate\Support\Str;
use App\Livewire\Forms\VaultForm;
use Illuminate\Support\Facades\DB;
use App\Actions\GetPathFromVaultNode;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Staudenmeir\LaravelAdjacencyList\Eloquent\Collection;
class Index extends Component
final class Index extends Component
{
public VaultForm $form;
@@ -32,17 +34,44 @@ class Index extends Component
{
$this->authorize('view', $vault);
$zip = new ZipArchive;
$zipFileName = $vault->id . '.zip';
$zipFileName = $vault->id.'.zip';
$nodes = $vault->nodes()->whereNull('parent_id')->get();
if ($zip->open(public_path($zipFileName), ZipArchive::CREATE) === false) {
$this->dispatch('toast', message: __('Something went wrong'), type: 'error');
return null;
}
$this->exportNodes($zip, $nodes);
$zip->close();
return response()->download(public_path($zipFileName), $vault->name . '.zip')->deleteFileAfterSend(true);
return response()->download(public_path($zipFileName), $vault->name.'.zip')->deleteFileAfterSend(true);
}
public function delete(Vault $vault): void
{
$this->authorize('delete', $vault);
DB::beginTransaction();
try {
$rootNodes = $vault->nodes()->whereNull('parent_id')->get();
foreach ($rootNodes as $node) {
$this->deleteNode($node);
}
$vault->delete();
DB::commit();
$this->dispatch('toast', message: __('Vault deleted'), type: 'success');
} catch (Throwable) {
DB::rollBack();
$this->dispatch('toast', message: __('Something went wrong'), type: 'error');
}
}
public function render()
{
return view('livewire.vault.index', [
'vaults' => auth()->user()->vaults()->orderBy('updated_at', 'DESC')->get(),
]);
}
private function exportNodes(ZipArchive &$zip, Collection $nodes, string $path = ''): void
@@ -68,24 +97,6 @@ class Index extends Component
}
}
public function delete(Vault $vault): void
{
$this->authorize('delete', $vault);
DB::beginTransaction();
try {
$rootNodes = $vault->nodes()->whereNull('parent_id')->get();
foreach ($rootNodes as $node) {
$this->deleteNode($node);
}
$vault->delete();
DB::commit();
$this->dispatch('toast', message: __('Vault deleted'), type: 'success');
} catch (Throwable) {
DB::rollBack();
$this->dispatch('toast', message: __('Something went wrong'), type: 'error');
}
}
private function deleteNode(VaultNode $node): void
{
foreach ($node->childs as $child) {
@@ -93,11 +104,4 @@ class Index extends Component
}
$node->delete();
}
public function render()
{
return view('livewire.vault.index', [
'vaults' => auth()->user()->vaults()->orderBy('updated_at', 'DESC')->get(),
]);
}
}
+5 -2
View File
@@ -1,17 +1,20 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Vault;
use Livewire\Component;
class Last extends Component
final class Last extends Component
{
public function mount(): void
{
$lastVault = auth()->user()->vaults()->orderBy('opened_at', 'desc')->first();
if (!$lastVault) {
if (! $lastVault) {
$this->redirect(route('vaults.index'), navigate: true);
return;
}
+3 -1
View File
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Vault;
use App\Livewire\Forms\VaultForm;
use App\Models\Vault;
use Livewire\Component;
class Row extends Component
final class Row extends Component
{
public Vault $vault;
+35 -30
View File
@@ -1,25 +1,27 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Vault;
use Throwable;
use App\Actions\GetPathFromVaultNode;
use App\Actions\GetUrlFromVaultNode;
use App\Actions\GetVaultNodeFromPath;
use App\Actions\ResolveTwoPaths;
use App\Livewire\Forms\VaultForm;
use App\Livewire\Forms\VaultNodeForm;
use App\Models\Vault;
use Livewire\Component;
use App\Models\VaultNode;
use App\Services\VaultFiles\Note;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Livewire\Attributes\On;
use Livewire\Attributes\Url;
use App\Actions\ResolveTwoPaths;
use App\Livewire\Forms\VaultForm;
use App\Services\VaultFiles\Note;
use Illuminate\Support\Facades\DB;
use App\Actions\GetUrlFromVaultNode;
use App\Actions\GetPathFromVaultNode;
use App\Actions\GetVaultNodeFromPath;
use App\Livewire\Forms\VaultNodeForm;
use Illuminate\Database\Eloquent\Collection;
use Livewire\Component;
use Throwable;
class Show extends Component
final class Show extends Component
{
public Vault $vault;
@@ -49,8 +51,9 @@ class Show extends Component
if ((int) $this->selectedFile > 0) {
$selectedFile = $vault->nodes()->where('id', $this->selectedFile)->first();
if (!$selectedFile) {
if (! $selectedFile) {
$this->selectedFile = null;
return;
}
@@ -62,7 +65,7 @@ class Show extends Component
{
$this->authorize('view', $node->vault);
if (!$node->vault->is($this->vault) || !$node->is_file) {
if (! $node->vault->is($this->vault) || ! $node->is_file) {
return;
}
@@ -70,7 +73,7 @@ class Show extends Component
$this->selectedFilePath = new GetUrlFromVaultNode()->handle($node);
$this->nodeForm->setNode($node);
if ($node->extension == 'md') {
if ($node->extension === 'md') {
$this->dispatch('file-render-markup');
} else {
$this->reset('isEditMode');
@@ -95,7 +98,7 @@ class Show extends Component
{
$this->authorize('view', $node->vault);
if ($node->id != $this->selectedFile) {
if ($node->id !== $this->selectedFile) {
return;
}
@@ -121,7 +124,7 @@ class Show extends Component
public function updated($name): void
{
if (!Str::of($name)->startsWith('nodeForm')) {
if (! Str::of($name)->startsWith('nodeForm')) {
return;
}
@@ -130,7 +133,7 @@ class Show extends Component
if ($this->nodeForm->node->wasChanged(['parent_id', 'name'])) {
$this->dispatch('node-updated');
if ($this->nodeForm->node->parent_id == $this->vault->templates_node_id) {
if ($this->nodeForm->node->parent_id === $this->vault->templates_node_id) {
$this->getTemplates();
}
}
@@ -142,6 +145,7 @@ class Show extends Component
if ($this->vault->id !== $node->vault->id || $node->is_file) {
$this->dispatch('toast', message: __('Something went wrong'), type: 'error');
return;
}
@@ -155,11 +159,12 @@ class Show extends Component
$this->authorize('update', $this->vault);
$sameVault = $this->vault->id === $node->vault->id;
$isNote = $node->is_file && in_array($node->extension, Note::extensions());
$isTemplate = $node->parent_id == $this->vault->templates_node_id;
$isTemplate = $node->parent_id === $this->vault->templates_node_id;
$fileSelected = (int) $this->selectedFile > 0;
if (!$sameVault || !$isNote || !$isTemplate || !$fileSelected || !$this->isEditMode) {
if (! $sameVault || ! $isNote || ! $isTemplate || ! $fileSelected || ! $this->isEditMode) {
$this->dispatch('toast', message: __('Something went wrong'), type: 'error');
return;
}
@@ -175,7 +180,7 @@ class Show extends Component
$content = str_contains($content, '{{content}}')
? str_replace('{{content}}', $selectedNode->content, $content)
: $content . PHP_EOL . $selectedNode->content;
: $content.PHP_EOL.$selectedNode->content;
$selectedNode->update(['content' => $content]);
$this->nodeForm->setNode($selectedNode);
$this->dispatch('toast', message: __('Template inserted'), type: 'success');
@@ -184,7 +189,7 @@ class Show extends Component
#[On('templates-refresh')]
public function getTemplates(): void
{
if (!$this->vault->templatesNode) {
if (! $this->vault->templatesNode) {
return;
}
@@ -211,10 +216,10 @@ class Show extends Component
DB::commit();
$this->dispatch('node-updated');
$templateDeleted = !is_null(
$templateDeleted = ! is_null(
array_find(
$this->deletedNodes,
fn($node): bool => $node->parent_id == $this->vault->templates_node_id
fn ($node): bool => $node->parent_id === $this->vault->templates_node_id
)
);
if ($templateDeleted) {
@@ -228,9 +233,14 @@ class Show extends Component
}
}
public function render()
{
return view('livewire.vault.show');
}
private function deleteFile(VaultNode $node): void
{
if ($this->selectedFile == $node->id) {
if ($this->selectedFile === $node->id) {
$this->closeFile();
}
@@ -251,9 +261,4 @@ class Show extends Component
$this->deletedNodes[] = $node;
$node->delete();
}
public function render()
{
return view('livewire.vault.show');
}
}
+4 -2
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Livewire\Vault;
use App\Models\Vault;
use Livewire\Component;
use App\Models\VaultNode;
use Livewire\Attributes\On;
use Livewire\Component;
#[On('node-updated')]
class TreeView extends Component
final class TreeView extends Component
{
public Vault $vault;
+13 -12
View File
@@ -1,15 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use App\Models\Vault;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
final class User extends Authenticatable
{
use HasFactory, Notifiable;
@@ -34,6 +35,14 @@ class User extends Authenticatable
'remember_token',
];
/**
* Get the associated vaults.
*/
public function vaults(): HasMany
{
return $this->hasMany(Vault::class, 'created_by');
}
/**
* Get the attributes that should be cast.
*
@@ -46,12 +55,4 @@ class User extends Authenticatable
'password' => 'hashed',
];
}
/**
* Get the associated vaults.
*/
public function vaults(): HasMany
{
return $this->hasMany(Vault::class, 'created_by');
}
}
+8 -7
View File
@@ -1,18 +1,19 @@
<?php
declare(strict_types=1);
namespace App\Models;
use App\Models\User;
use App\Observers\VaultObserver;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
#[ObservedBy([VaultObserver::class])]
class Vault extends Model
final class Vault extends Model
{
use HasFactory;
+20 -18
View File
@@ -1,33 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Models;
use App\Observers\VaultNodeObserver;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Staudenmeir\LaravelAdjacencyList\Eloquent\HasRecursiveRelationships;
#[ObservedBy([VaultNodeObserver::class])]
class VaultNode extends Model
final class VaultNode extends Model
{
use HasFactory;
use HasRecursiveRelationships;
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'is_file' => 'boolean',
];
}
/**
* The attributes that are mass assignable.
*
@@ -54,7 +44,7 @@ class VaultNode extends Model
*/
public function childs(): HasMany
{
return $this->hasMany(VaultNode::class, 'parent_id');
return $this->hasMany(self::class, 'parent_id');
}
public function getCustomPaths(): array
@@ -68,4 +58,16 @@ class VaultNode extends Model
],
];
}
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'is_file' => 'boolean',
];
}
}
+10 -9
View File
@@ -1,13 +1,14 @@
<?php
declare(strict_types=1);
namespace App\Observers;
use App\Models\VaultNode;
use App\Actions\GetPathFromVault;
use App\Actions\GetPathFromVaultNode;
use App\Models\VaultNode;
use Illuminate\Support\Facades\Storage;
class VaultNodeObserver
final class VaultNodeObserver
{
/**
* Handle the VaultNode "creating" event.
@@ -34,25 +35,25 @@ class VaultNodeObserver
{
$relativePath = new GetPathFromVaultNode()->handle($node, false);
if (Storage::disk('local')->exists($relativePath . $node->name)) {
if (Storage::disk('local')->exists($relativePath.$node->name)) {
abort(500);
}
if ($node->isDirty('name')) {
$paths = [
$relativePath . $node->getOriginal('name'),
$relativePath . $node->name,
$relativePath.$node->getOriginal('name'),
$relativePath.$node->name,
];
if ($node->is_file) {
$paths[0] .= '.' . $node->extension;
$paths[1] .= '.' . $node->extension;
$paths[0] .= '.'.$node->extension;
$paths[1] .= '.'.$node->extension;
}
Storage::disk('local')->move(...$paths);
}
if ($node->is_file) {
Storage::disk('local')->put(
$relativePath . $node->name . '.' . $node->extension,
$relativePath.$node->name.'.'.$node->extension,
$node->content ?? '',
);
}
+11 -9
View File
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
namespace App\Observers;
use App\Models\Vault;
use App\Actions\GetPathFromUser;
use App\Models\Vault;
use Illuminate\Support\Facades\Storage;
class VaultObserver
final class VaultObserver
{
/**
* Handle the Vault "creating" event.
@@ -15,11 +17,11 @@ class VaultObserver
{
$relativePath = new GetPathFromUser()->handle();
if (Storage::disk('local')->exists($relativePath . $vault->name)) {
if (Storage::disk('local')->exists($relativePath.$vault->name)) {
abort(500);
}
Storage::disk('local')->makeDirectory($relativePath . $vault->name);
Storage::disk('local')->makeDirectory($relativePath.$vault->name);
}
/**
@@ -27,19 +29,19 @@ class VaultObserver
*/
public function updating(Vault $vault): void
{
if (!$vault->isDirty('name')) {
if (! $vault->isDirty('name')) {
return;
}
$relativePath = new GetPathFromUser()->handle();
if (Storage::disk('local')->exists($relativePath . $vault->name)) {
if (Storage::disk('local')->exists($relativePath.$vault->name)) {
abort(500);
}
Storage::disk('local')->move(
$relativePath . $vault->getOriginal('name'),
$relativePath . $vault->name,
$relativePath.$vault->getOriginal('name'),
$relativePath.$vault->name,
);
}
@@ -49,6 +51,6 @@ class VaultObserver
public function deleting(Vault $vault): void
{
$relativePath = new GetPathFromUser()->handle();
Storage::disk('local')->deleteDirectory($relativePath . $vault->name);
Storage::disk('local')->deleteDirectory($relativePath.$vault->name);
}
}
+3 -2
View File
@@ -1,12 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Policies;
use App\Models\User;
use App\Models\Vault;
use Illuminate\Auth\Access\Response;
class VaultPolicy
final class VaultPolicy
{
/**
* Determine whether the user can view the model.
+4 -2
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Providers;
use Override;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Override;
use SocialiteProviders\Authentik\Provider;
use SocialiteProviders\Manager\SocialiteWasCalled;
class AppServiceProvider extends ServiceProvider
final class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
+5 -3
View File
@@ -1,14 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Services;
use App\Services\VaultFiles\Pdf;
use App\Services\VaultFiles\Note;
use App\Services\VaultFiles\Audio;
use App\Services\VaultFiles\Image;
use App\Services\VaultFiles\Note;
use App\Services\VaultFiles\Pdf;
use App\Services\VaultFiles\Video;
class VaultFile
final class VaultFile
{
public static function extensions(bool $withDots = false): array
{
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class Audio extends File
+3 -1
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class File
{
public static function extensionsWithDots(array $extensions): array
{
return array_map(fn(string $value): string => '.' . $value, $extensions);
return array_map(fn (string $value): string => '.'.$value, $extensions);
}
}
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class Image extends File
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class Note extends File
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class Pdf extends File
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace App\Services\VaultFiles;
class Video extends File
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
App\Providers\AppServiceProvider::class,
];
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
return [
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
return [
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+3 -1
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
@@ -67,7 +69,7 @@ return [
'disk' => null, // Example: 'local', 's3' | Default: 'default'
'rules' => [
'file',
'max:' . Monolog\Utils::expandIniShorthandBytes(ini_get('upload_max_filesize')),
'max:'.Monolog\Utils::expandIniShorthandBytes(ini_get('upload_max_filesize')),
], // Example: ['file', 'mimes:png,jpg'] | Default: ['required', 'file', 'max:12288'] (12MB)
'directory' => null, // Example: 'tmp' | Default: 'livewire-tmp'
'middleware' => null, // Example: 'throttle:5,1' | Default: 'throttle:60,1'
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
return [
/*
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Str;
return [
+4 -2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
@@ -9,7 +11,7 @@ use Illuminate\Support\Str;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User>
*/
class UserFactory extends Factory
final class UserFactory extends Factory
{
/**
* The current password being used by the factory.
@@ -27,7 +29,7 @@ class UserFactory extends Factory
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => static::$password ??= Hash::make('password'),
'password' => self::$password ??= Hash::make('password'),
'remember_token' => Str::random(10),
];
}
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
+3 -1
View File
@@ -1,12 +1,14 @@
<?php
declare(strict_types=1);
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
final class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
+7 -7
View File
@@ -6,13 +6,13 @@ use Rector\Config\RectorConfig;
return RectorConfig::configure()
->withPaths([
__DIR__ . '/app',
__DIR__ . '/bootstrap/app.php',
__DIR__ . '/bootstrap/providers.php',
__DIR__ . '/database',
__DIR__ . '/public',
__DIR__ . '/routes',
__DIR__ . '/tests',
__DIR__.'/app',
__DIR__.'/bootstrap/app.php',
__DIR__.'/bootstrap/providers.php',
__DIR__.'/database',
__DIR__.'/public',
__DIR__.'/routes',
__DIR__.'/tests',
])
->withPreparedSets(
deadCode: true,
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
+11 -11
View File
@@ -1,20 +1,20 @@
<?php
use App\Livewire\Auth\Login;
use App\Enums\OAuthProviders;
use App\Livewire\Auth\Register;
use App\Livewire\Auth\OAuthLogin;
use Illuminate\Container\Container;
use App\Livewire\Auth\ResetPassword;
use App\Livewire\Auth\ForgotPassword;
use Illuminate\Support\Facades\Route;
declare(strict_types=1);
use App\Actions\GetAvailableOAuthProviders;
use App\Http\Controllers\FileController;
use App\Livewire\Auth\ForgotPassword;
use App\Livewire\Auth\Login;
use App\Livewire\Auth\OAuthLogin;
use App\Livewire\Auth\OAuthLoginCallback;
use App\Livewire\Auth\Register;
use App\Livewire\Auth\ResetPassword;
use App\Livewire\Dashboard\Index as DashboardIndex;
use App\Livewire\Vault\Index as VaultIndex;
use App\Livewire\Vault\Last as VaultLast;
use App\Livewire\Vault\Show as VaultShow;
use App\Actions\GetAvailableOAuthProviders;
use App\Livewire\Vault\Index as VaultIndex;
use App\Livewire\Dashboard\Index as DashboardIndex;
use Illuminate\Support\Facades\Route;
Route::middleware('auth')->group(function (): void {
Route::get('/', DashboardIndex::class)->name('dashboard.index');
+3 -1
View File
@@ -1,11 +1,13 @@
<?php
declare(strict_types=1);
namespace Tests\Feature;
// use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase
final class ExampleTest extends TestCase
{
/**
* A basic test example.
+2
View File
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
+3 -1
View File
@@ -1,10 +1,12 @@
<?php
declare(strict_types=1);
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
final class ExampleTest extends TestCase
{
/**
* A basic test example.