From 185f930f22cc8ea3b59c6d3155592f6eeef89367 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mois=C3=A9s=20de=20Jes=C3=BAs=20Cort=C3=A9s=20Castellanos?= <96152034+notsoweb@users.noreply.github.com> Date: Mon, 16 Dec 2024 15:56:48 -0600 Subject: [PATCH] =?UTF-8?q?UPDATE:=20Logo=20y=20versi=C3=B3n=20(#2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + app/Enums/SettingTypeEk.php | 39 +++++++++++ app/Http/Controllers/ResourceController.php | 38 +++++++++++ app/Models/Setting.php | 65 +++++++++++++++++++ composer.lock | 8 +-- config/filesystems.php | 9 +++ ...024_12_14_101322_create_settings_table.php | 32 +++++++++ database/seeders/DatabaseSeeder.php | 9 +-- database/seeders/DevSeeder.php | 1 + database/seeders/SettingSeeder.php | 27 ++++++++ public/profile | 1 - routes/api.php | 13 ++-- storage/app/.gitignore | 1 + storage/app/images/.gitignore | 2 + 14 files changed, 229 insertions(+), 18 deletions(-) create mode 100644 app/Enums/SettingTypeEk.php create mode 100644 app/Http/Controllers/ResourceController.php create mode 100644 app/Models/Setting.php create mode 100644 database/migrations/2024_12_14_101322_create_settings_table.php create mode 100644 database/seeders/SettingSeeder.php delete mode 120000 public/profile create mode 100755 storage/app/images/.gitignore diff --git a/.gitignore b/.gitignore index ed9996c..8a0ab32 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ /node_modules /public/build /public/hot +/public/images +/public/profile /public/storage /public/vendor /storage/*.key diff --git a/app/Enums/SettingTypeEk.php b/app/Enums/SettingTypeEk.php new file mode 100644 index 0000000..f1b5d92 --- /dev/null +++ b/app/Enums/SettingTypeEk.php @@ -0,0 +1,39 @@ + + * + * @version 1.0.0 + */ +enum SettingTypeEk : string +{ + use Extended; + + /** + * Texto + */ + case STRING = 'S'; + + /** + * JSON + */ + case JSON = 'J'; + + /** + * Booleano + */ + case BOOL = 'B'; + + /** + * Entero + */ + case INT = 'I'; +} diff --git a/app/Http/Controllers/ResourceController.php b/app/Http/Controllers/ResourceController.php new file mode 100644 index 0000000..db18ce2 --- /dev/null +++ b/app/Http/Controllers/ResourceController.php @@ -0,0 +1,38 @@ + + * + * @version 1.0.0 + */ +class ResourceController extends Controller +{ + /** + * Información de la aplicación + */ + public function app() + { + return ApiResponse::OK->axios([ + 'logo' => Setting::value('app.logo'), + 'favicon' => Setting::value('app.favicon'), + 'version' => config('app.version'), + ]); + } + + /** + * Rutas de la aplicación + */ + public function routes() + { + return ApiResponse::OK->axios((new Ziggy('api'))->toArray()); + } +} \ No newline at end of file diff --git a/app/Models/Setting.php b/app/Models/Setting.php new file mode 100644 index 0000000..452249e --- /dev/null +++ b/app/Models/Setting.php @@ -0,0 +1,65 @@ + + * + * @version 1.0.0 + */ +class Setting extends Model +{ + /** + * Atributos permitidos + */ + protected $fillable = [ + 'key', + 'description', + 'value', + 'type_ek' + ]; + + /** + * Transformación de los datos + */ + protected $casts = [ + 'value' => 'json' + ]; + + /** + * Solicita o registra una configuración + */ + public static function value(string $key, mixed $value = null, string $description = null, SettingTypeEk $type_ek = SettingTypeEk::STRING): mixed + { + $setting = self::where('key', $key)->first(); + + if ($value !== null || $description !== null) { + $toSave = []; + + if ($value !== null) { + $toSave['value'] = $value; + } + + if ($description !== null) { + $toSave['description'] = $description; + } + + if ($setting) { + return $setting->update($toSave); + } else { + $toSave['key'] = $key; + $toSave['type_ek'] = $type_ek; + + return self::create($toSave); + } + } + + return $setting?->value; + } +} diff --git a/composer.lock b/composer.lock index c609847..c3bc01a 100644 --- a/composer.lock +++ b/composer.lock @@ -3430,12 +3430,12 @@ "source": { "type": "git", "url": "https://github.com/notsoweb/laravel-core.git", - "reference": "6c3c2841dcd9358f423005c8fe411ab5f9157f94" + "reference": "c2c9413dd2be426fef44e38d1fef7d7386c18831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/notsoweb/laravel-core/zipball/6c3c2841dcd9358f423005c8fe411ab5f9157f94", - "reference": "6c3c2841dcd9358f423005c8fe411ab5f9157f94", + "url": "https://api.github.com/repos/notsoweb/laravel-core/zipball/c2c9413dd2be426fef44e38d1fef7d7386c18831", + "reference": "c2c9413dd2be426fef44e38d1fef7d7386c18831", "shasum": "" }, "require": { @@ -3467,7 +3467,7 @@ "issues": "https://github.com/notsoweb/laravel-core/issues", "source": "https://github.com/notsoweb/laravel-core/tree/main" }, - "time": "2024-10-24T23:54:14+00:00" + "time": "2024-12-14T16:38:46+00:00" }, { "name": "nunomaduro/termwind", diff --git a/config/filesystems.php b/config/filesystems.php index 99478ea..471474c 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -53,6 +53,14 @@ 'throw' => false, ], + 'images' => [ + 'driver' => 'local', + 'root' => storage_path('app/images'), + 'url' => env('APP_URL').'/images', + 'visibility' => 'public', + 'throw' => false, + ], + 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), @@ -80,5 +88,6 @@ 'links' => [ public_path('storage') => storage_path('app/public'), public_path('profile') => storage_path('app/profile'), + public_path('images') => storage_path('app/images'), ], ]; diff --git a/database/migrations/2024_12_14_101322_create_settings_table.php b/database/migrations/2024_12_14_101322_create_settings_table.php new file mode 100644 index 0000000..a6e3401 --- /dev/null +++ b/database/migrations/2024_12_14_101322_create_settings_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('key'); + $table->string('description'); + $table->json('value'); + $table->enum('type_ek', SettingTypeEk::values()); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('settings'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index d01a0ef..5dda26a 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,11 +13,8 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); - - User::factory()->create([ - 'name' => 'Test User', - 'email' => 'test@example.com', - ]); + $this->call(RoleSeeder::class); + $this->call(UserSeeder::class); + $this->call(SettingSeeder::class); } } diff --git a/database/seeders/DevSeeder.php b/database/seeders/DevSeeder.php index 93b0ef8..66ceb05 100644 --- a/database/seeders/DevSeeder.php +++ b/database/seeders/DevSeeder.php @@ -11,5 +11,6 @@ public function run(): void { $this->call(RoleSeeder::class); $this->call(UserSeeder::class); + $this->call(SettingSeeder::class); } } diff --git a/database/seeders/SettingSeeder.php b/database/seeders/SettingSeeder.php new file mode 100644 index 0000000..3b6adf1 --- /dev/null +++ b/database/seeders/SettingSeeder.php @@ -0,0 +1,27 @@ + + * + * @version 1.0.0 + */ +class SettingSeeder extends Seeder +{ + /** + * Ejecutar sembrado de base de datos + */ + public function run(): void + { + Setting::value('app.logo', url("images/logo.png"), 'Logo de la aplicación', SettingTypeEk::STRING); + Setting::value('app.favicon', url("images/favicon.ico"), 'Favicon de la aplicación', SettingTypeEk::STRING); + } +} \ No newline at end of file diff --git a/public/profile b/public/profile deleted file mode 120000 index debc71b..0000000 --- a/public/profile +++ /dev/null @@ -1 +0,0 @@ -/var/www/notsoweb/holos.backend/storage/app/profile \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index 7c9ec89..2fd835f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,13 +1,13 @@ response([ @@ -15,12 +15,6 @@ ]); }); -Route::name('api.')->group(function () { - Route::get('/routes', function () { - return (new Ziggy('api'))->toArray(); - })->name('routes'); -}); - Route::middleware('auth:api')->group(function () { // Aplicación Route::prefix('user')->name('user.')->group(function() { @@ -57,6 +51,11 @@ Route::post('auth/logout', [LoginController::class, 'logout'])->name('auth.logout'); }); +Route::prefix('resources')->name('resources.')->group(function() { + Route::get('app', [ResourceController::class, 'app'])->name('app'); + Route::get('routes', [ResourceController::class, 'routes'])->name('routes'); +}); + Route::prefix('auth')->name('auth.')->group(function () { Route::post('login', [LoginController::class, 'login'])->name('login'); Route::post('forgot-password', [LoginController::class, 'forgotPassword'])->name('forgot-password'); diff --git a/storage/app/.gitignore b/storage/app/.gitignore index 615966f..1d57501 100755 --- a/storage/app/.gitignore +++ b/storage/app/.gitignore @@ -1,4 +1,5 @@ * +!images/ !keys/ !private/ !profile/ diff --git a/storage/app/images/.gitignore b/storage/app/images/.gitignore new file mode 100755 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/images/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore