From e7c8602474a97ce7906bc804f708e4484a2e8400 Mon Sep 17 00:00:00 2001 From: Shoaib Khan Date: Sun, 3 Jul 2022 13:44:23 +0530 Subject: [PATCH 1/2] Updated to use admin.php and api.php for generated route. --- app/Models/User.php | 56 +++--------- app/Providers/RouteServiceProvider.php | 2 +- .../resources/stubs/routes/api_entities.stub | 46 ++-------- .../routes/api_entities_with_softdeletes.stub | 62 +++----------- .../resources/stubs/routes/entities.stub | 67 ++------------- .../routes/entities_with_softdeletes.stub | 85 +++---------------- .../Http/Controllers/BuilderController.php | 30 +++---- .../src/Services/BuildRoutesService.php | 74 ++++------------ routes/adminr/admin.php | 39 +-------- routes/adminr/admin/routes.json | 1 - routes/adminr/api.php | 28 +----- routes/adminr/api/routes.json | 1 - 12 files changed, 88 insertions(+), 403 deletions(-) delete mode 100644 routes/adminr/admin/routes.json delete mode 100644 routes/adminr/api/routes.json diff --git a/app/Models/User.php b/app/Models/User.php index 7330540..cf011e1 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -20,28 +20,13 @@ class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, HasRoles, HasExcludeScope, HasMailable; - /** - * The attributes that are mass assignable. - * - * @var string[] - */ protected $guarded = ['id']; - /** - * The attributes that should be hidden for serialization. - * - * @var array - */ protected $hidden = [ 'password', 'remember_token', ]; - /** - * The attributes that should be cast. - * - * @var array - */ protected $casts = [ 'email_verified_at' => 'datetime', ]; @@ -51,7 +36,7 @@ public function avatar(): Attribute return Attribute::make( get: function($val) { $avatar = !is_null($val) ? $val : 'https://ui-avatars.com/api/?name='.$this->name.'&background=random&v=' . rand(0, 999999); - if(Str::contains(request()->url(), 'api')){ + if(Str::contains(request()->url(), '/api')){ return asset($avatar); } return $avatar; @@ -59,39 +44,26 @@ public function avatar(): Attribute ); } - /** - * Stores username by transforming to lower case. - * - * @param $value - * @return string - */ - public function setUsernameAttribute($value) + public function username(): Attribute { - $this->attributes['username'] = Str::lower($value); + return Attribute::make( + set: function($val) { + return Str::lower($val); + }, + ); } - /** - * Stores name by transforming to title case. - * - * @param $value - * @return string - */ - public function setNameAttribute($value) + public function name(): Attribute { - $this->attributes['name'] = Str::title($value); + return Attribute::make( + set: function($val) { + return Str::title($val); + }, + ); } - /** - * Scope the model query to certain roles only. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param string|array $roles - * @param string $guard - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeNotRole(Builder $query, $roles, $guard = null) + public function scopeNotRole(Builder $query, $roles, $guard = null): Builder { if ($roles instanceof Collection) { $roles = $roles->all(); diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 9db9925..5334e89 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -49,7 +49,7 @@ public function boot() ->namespace($this->namespace) ->group(base_path('routes/adminr/api.php')); - Route::middleware('web') + Route::middleware(["web", "auth", "admin"]) ->namespace($this->namespace) ->group(base_path('routes/adminr/admin.php')); }); diff --git a/app/adminr-engine/resources/stubs/routes/api_entities.stub b/app/adminr-engine/resources/stubs/routes/api_entities.stub index 21b6bf1..81a222d 100644 --- a/app/adminr-engine/resources/stubs/routes/api_entities.stub +++ b/app/adminr-engine/resources/stubs/routes/api_entities.stub @@ -1,37 +1,9 @@ -{ - "index": { - "route": "{{MODEL_ENTITIES}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "index", - "method": "get" - }, - "show": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "show", - "method": "get" - }, - "store": { - "route": "{{MODEL_ENTITIES}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "store", - "method": "post" - }, - "update": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "update", - "method": "put" - }, - "destroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "destroy", - "method": "delete" - } -} \ No newline at end of file +Route::group(['prefix' => config('app.route_prefix') . '/manage/{{MODEL_ENTITIES}}'], function () { + Route::get('/', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'index'])->middleware({{MIDDLEWARES}}); + Route::get('/create', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'create'])->middleware({{MIDDLEWARES}}); + Route::post('/store', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'store'])->middleware({{MIDDLEWARES}}); + Route::get('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'show'])->middleware({{MIDDLEWARES}}); + Route::get('/{{{MODEL_ENTITY}}}/edit', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'edit'])->middleware({{MIDDLEWARES}}); + Route::put('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'update'])->middleware({{MIDDLEWARES}}); + Route::delete('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'destroy'])->middleware({{MIDDLEWARES}}); +}); diff --git a/app/adminr-engine/resources/stubs/routes/api_entities_with_softdeletes.stub b/app/adminr-engine/resources/stubs/routes/api_entities_with_softdeletes.stub index 04f1529..4e513f3 100644 --- a/app/adminr-engine/resources/stubs/routes/api_entities_with_softdeletes.stub +++ b/app/adminr-engine/resources/stubs/routes/api_entities_with_softdeletes.stub @@ -1,51 +1,11 @@ -{ - "index": { - "route": "{{MODEL_ENTITIES}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "index", - "method": "get" - }, - "show": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "show", - "method": "get" - }, - "store": { - "route": "{{MODEL_ENTITIES}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "store", - "method": "post" - }, - "update": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "update", - "method": "put" - }, - "destroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "destroy", - "method": "delete" - }, - "restore": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/restore", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "restore", - "method": "post" - }, - "forceDestroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/force-destroy", - "middleware": {{MIDDLEWARES}}, - "controller": "App\\Http\\Controllers\\Api\\{{CONTROLLER_CLASS}}", - "action": "forceDestroy", - "method": "delete" - } -} \ No newline at end of file +Route::group(['prefix' => config('app.route_prefix') . '/manage/{{MODEL_ENTITIES}}'], function () { + Route::get('/', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'index'])->middleware({{MIDDLEWARES}}); + Route::get('/create', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'create'])->middleware({{MIDDLEWARES}}); + Route::post('/store', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'store'])->middleware({{MIDDLEWARES}}); + Route::get('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'show'])->middleware({{MIDDLEWARES}}); + Route::get('/{{{MODEL_ENTITY}}}/edit', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'edit'])->middleware({{MIDDLEWARES}}); + Route::put('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'update'])->middleware({{MIDDLEWARES}}); + Route::delete('/{{{MODEL_ENTITY}}}', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'destroy'])->middleware({{MIDDLEWARES}}); + Route::post('/{{{MODEL_ENTITY}}}/restore', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'restore'])->middleware({{MIDDLEWARES}}); + Route::delete('/{{{MODEL_ENTITY}}}/force-destroy', [{{API_CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'forceDestroy'])->middleware({{MIDDLEWARES}}); +}); diff --git a/app/adminr-engine/resources/stubs/routes/entities.stub b/app/adminr-engine/resources/stubs/routes/entities.stub index 7eca944..d21c04a 100644 --- a/app/adminr-engine/resources/stubs/routes/entities.stub +++ b/app/adminr-engine/resources/stubs/routes/entities.stub @@ -1,58 +1,9 @@ -{ - "index": { - "route": "{{MODEL_ENTITIES}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_list"], - "name": "{{MODEL_ENTITIES}}.index", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "index", - "method": "get" - }, - "create": { - "route": "{{MODEL_ENTITIES}}/create", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_create"], - "name": "{{MODEL_ENTITIES}}.create", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "create", - "method": "get" - }, - "store": { - "route": "{{MODEL_ENTITIES}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_store"], - "name": "{{MODEL_ENTITIES}}.store", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "store", - "method": "post" - }, - "show": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_single"], - "name": "{{MODEL_ENTITIES}}.show", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "show", - "method": "get" - }, - "edit": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/edit", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_edit"], - "name": "{{MODEL_ENTITIES}}.edit", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "edit", - "method": "get" - }, - "update": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_update"], - "name": "{{MODEL_ENTITIES}}.update", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "update", - "method": "put" - }, - "destroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_destroy"], - "name": "{{MODEL_ENTITIES}}.destroy", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "destroy", - "method": "delete" - } -} \ No newline at end of file +Route::group(['as' => config('app.route_prefix') . '.{{MODEL_ENTITIES}}.', 'prefix' => config('app.route_prefix') . '/manage/{{MODEL_ENTITIES}}'], function () { + Route::get('/', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'index'])->middleware("permission:{{MODEL_ENTITIES}}_list")->name("index"); + Route::get('/create', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'create'])->middleware("permission:{{MODEL_ENTITIES}}_create")->name("create"); + Route::post('/store', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'store'])->middleware("permission:{{MODEL_ENTITIES}}_store")->name("store"); + Route::get('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'show'])->middleware("permission:{{MODEL_ENTITIES}}_single")->name("show"); + Route::get('/{{{MODEL_ENTITY}}}/edit', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'edit'])->middleware("permission:{{MODEL_ENTITIES}}_edit")->name("edit"); + Route::put('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'update'])->middleware("permission:{{MODEL_ENTITIES}}_update")->name("update"); + Route::delete('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'destroy'])->middleware("permission:{{MODEL_ENTITIES}}_destroy")->name("destroy"); +}); diff --git a/app/adminr-engine/resources/stubs/routes/entities_with_softdeletes.stub b/app/adminr-engine/resources/stubs/routes/entities_with_softdeletes.stub index f85ec85..2379cec 100644 --- a/app/adminr-engine/resources/stubs/routes/entities_with_softdeletes.stub +++ b/app/adminr-engine/resources/stubs/routes/entities_with_softdeletes.stub @@ -1,74 +1,11 @@ -{ - "index": { - "route": "{{MODEL_ENTITIES}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_list"], - "name": "{{MODEL_ENTITIES}}.index", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "index", - "method": "get" - }, - "create": { - "route": "{{MODEL_ENTITIES}}/create", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_create"], - "name": "{{MODEL_ENTITIES}}.create", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "create", - "method": "get" - }, - "store": { - "route": "{{MODEL_ENTITIES}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_store"], - "name": "{{MODEL_ENTITIES}}.store", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "store", - "method": "post" - }, - "show": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_single"], - "name": "{{MODEL_ENTITIES}}.show", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "show", - "method": "get" - }, - "edit": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/edit", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_edit"], - "name": "{{MODEL_ENTITIES}}.edit", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "edit", - "method": "get" - }, - "update": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_update"], - "name": "{{MODEL_ENTITIES}}.update", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "update", - "method": "put" - }, - "destroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_destroy"], - "name": "{{MODEL_ENTITIES}}.destroy", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "destroy", - "method": "delete" - }, - "restore": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/restore", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_restore"], - "name": "{{MODEL_ENTITIES}}.restore", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "restore", - "method": "post" - }, - "forceDestroy": { - "route": "{{MODEL_ENTITIES}}/{{{MODEL_ENTITY}}}/force-destroy", - "middleware": ["web", "permission:{{MODEL_ENTITIES}}_force_destroy"], - "name": "{{MODEL_ENTITIES}}.force-destroy", - "controller": "App\\Http\\Controllers\\Admin\\{{CONTROLLER_CLASS}}", - "action": "forceDestroy", - "method": "delete" - } -} \ No newline at end of file +Route::group(['as' => config('app.route_prefix') . '.{{MODEL_ENTITIES}}.', 'prefix' => config('app.route_prefix') . '/manage/{{MODEL_ENTITIES}}'], function () { + Route::get('/', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'index'])->middleware("permission:{{MODEL_ENTITIES}}_list")->name("index"); + Route::get('/create', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'create'])->middleware("permission:{{MODEL_ENTITIES}}_create")->name("create"); + Route::post('/store', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'store'])->middleware("permission:{{MODEL_ENTITIES}}_store")->name("store"); + Route::get('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'show'])->middleware("permission:{{MODEL_ENTITIES}}_single")->name("show"); + Route::get('/{{{MODEL_ENTITY}}}/edit', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'edit'])->middleware("permission:{{MODEL_ENTITIES}}_edit")->name("edit"); + Route::put('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'update'])->middleware("permission:{{MODEL_ENTITIES}}_update")->name("update"); + Route::delete('/{{{MODEL_ENTITY}}}', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'destroy'])->middleware("permission:{{MODEL_ENTITIES}}_destroy")->name("destroy"); + Route::post('/{{{MODEL_ENTITY}}}/restore', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'restore'])->middleware("permission:{{MODEL_ENTITIES}}_restore")->name("restore"); + Route::delete('/{{{MODEL_ENTITY}}}/force-destroy', [{{CONTROLLER_NAMESPACE}}{{CONTROLLER_CLASS}}::class, 'forceDestroy'])->middleware("permission:{{MODEL_ENTITIES}}_force_destroy")->name("force-destroy"); +}); diff --git a/app/adminr-engine/src/Http/Controllers/BuilderController.php b/app/adminr-engine/src/Http/Controllers/BuilderController.php index 1645707..355b1d0 100644 --- a/app/adminr-engine/src/Http/Controllers/BuilderController.php +++ b/app/adminr-engine/src/Http/Controllers/BuilderController.php @@ -3,25 +3,21 @@ namespace Devsbuddy\AdminrEngine\Http\Controllers; use App\Http\Controllers\Controller; -use Devsbuddy\AdminrEngine\Models\Menu; -use Devsbuddy\AdminrEngine\Models\AdminrResource; +use Devsbuddy\AdminrEngine\Models\{Menu, AdminrResource}; use Devsbuddy\AdminrEngine\Database; -use Devsbuddy\AdminrEngine\Services\BuildApiResourceService; -use Devsbuddy\AdminrEngine\Services\BuildControllersService; -use Devsbuddy\AdminrEngine\Services\BuildMigrationService; -use Devsbuddy\AdminrEngine\Services\BuildModelService; -use Devsbuddy\AdminrEngine\Services\BuildRoutesService; -use Devsbuddy\AdminrEngine\Services\BuildViewsService; -use Devsbuddy\AdminrEngine\Services\ResourceService; +use Devsbuddy\AdminrEngine\Services\{BuildApiResourceService, + BuildControllersService, + BuildMigrationService, + BuildModelService, + BuildRoutesService, + BuildViewsService, + ResourceService, +}; use Devsbuddy\AdminrEngine\Traits\HasStubs; use Illuminate\Contracts\View\View; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Artisan; -use Illuminate\Support\Facades\File; +use Illuminate\Http\{JsonResponse, RedirectResponse, Request}; +use Illuminate\Support\Facades\{File,Artisan}; use Illuminate\Support\Str; -use JetBrains\PhpStorm\Pure; class BuilderController extends Controller { @@ -35,7 +31,7 @@ class BuilderController extends Controller public BuildViewsService $buildViewsService; public BuildApiResourceService $buildApiResourceService; - #[Pure] public function __construct() + public function __construct() { $this->resourceService = new ResourceService(); $this->buildControllersService = new BuildControllersService(); @@ -126,7 +122,7 @@ public function build(Request $request): JsonResponse ->buildEditView() ->cleanUp(); - if($request->get('build_api')){ + if ($request->get('build_api')) { $this->buildApiResourceService ->prepare($request) ->buildApiResource() diff --git a/app/adminr-engine/src/Services/BuildRoutesService.php b/app/adminr-engine/src/Services/BuildRoutesService.php index 700ead3..ce164ad 100644 --- a/app/adminr-engine/src/Services/BuildRoutesService.php +++ b/app/adminr-engine/src/Services/BuildRoutesService.php @@ -2,28 +2,22 @@ namespace Devsbuddy\AdminrEngine\Services; -use Devsbuddy\AdminrEngine\Database; -use Devsbuddy\AdminrEngine\Traits\CanManageFiles; -use Devsbuddy\AdminrEngine\Traits\HasStubs; -use Dflydev\DotAccessData\Data; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Illuminate\Support\Str; class BuildRoutesService extends AdminrEngineService { - protected string $apiRouteTargetPath; protected string $apiRoutePath; - protected string $adminRouteTargetPath; protected string $adminRoutePath; + protected string $adminRouteProcessedStub; + protected string $apiRouteProcessedStub; public function prepare(Request $request): static { parent::prepare($request); - $this->apiRouteTargetPath = base_path() . "/routes/adminr/api/" . $this->modelEntities . "/" . $this->modelEntities . ".json"; - $this->apiRoutePath = base_path() . '/routes/adminr/api/routes.json'; - $this->adminRouteTargetPath = base_path() . "/routes/adminr/admin/" . $this->modelEntities . "/" . $this->modelEntities . ".json"; - $this->adminRoutePath = base_path() . '/routes/adminr/admin/routes.json'; + $this->apiRoutePath = base_path() . '/routes/adminr/api.php'; + $this->adminRoutePath = base_path() . '/routes/adminr/admin.php'; return $this; } @@ -37,24 +31,12 @@ public function buildApiRoute(): static $routeFile = $this->getRouteStub('api_entities'); } - $stubPath = $this->hasSoftdeletes - ? $this->getRouteStub('api_entities_with_softdeletes', true) - : $this->getRouteStub('api_entities', true); - $routeFile = $this->processStub($routeFile); + $this->apiRouteProcessedStub = $routeFile; + $apiRoutesStorage = File::get($this->apiRoutePath); - $apiRoutesStorage = (array)json_decode(File::get($this->apiRoutePath)); - - if (!isset($apiRoutesStorage[$this->modelEntities])) { - $apiRoutesStorage[$this->modelEntities] = $this->modelEntities . ".json"; - } - - $this->makeDirectory($this->apiRouteTargetPath); - - File::put($stubPath, $routeFile); - File::copy($stubPath, $this->apiRouteTargetPath); - File::put($this->apiRouteTargetPath, $routeFile); - File::put($this->apiRoutePath, json_encode((object)$apiRoutesStorage)); + $apiRoutesStorage = $apiRoutesStorage . "\n" . $routeFile; + File::put($this->apiRoutePath, $apiRoutesStorage); } return $this; } catch (\Exception | \Error $e) { @@ -70,25 +52,13 @@ public function buildAdminRoute(): static } else { $routeFile = $this->getRouteStub('entities'); } - $stubPath = $this->hasSoftdeletes - ? $this->getRouteStub('entities_with_softdeletes', true) - : $this->getRouteStub('entities', true); $routeFile = $this->processStub($routeFile); + $this->adminRouteProcessedStub = $routeFile; + $adminRoutesStorage = File::get($this->adminRoutePath); - $adminRoutesStorage = (array)json_decode(File::get($this->adminRoutePath)); - - if (!isset($adminRoutesStorage[$this->modelEntities])) { - $adminRoutesStorage[$this->modelEntities] = $this->modelEntities . ".json"; - } - - $this->makeDirectory($this->adminRouteTargetPath); - File::put($stubPath, $routeFile); - File::copy($stubPath, $this->adminRouteTargetPath); - - File::put($this->adminRouteTargetPath, $routeFile); - File::put($this->adminRoutePath, json_encode((object)$adminRoutesStorage)); - + $adminRoutesStorage = $adminRoutesStorage . "\n" . $routeFile; + File::put($this->adminRoutePath, $adminRoutesStorage); return $this; } catch (\Exception | \Error $e) { throw $e; @@ -123,27 +93,19 @@ protected function getControllerNamespaceStatement(): string return "\\App\\Http\\Controllers\\Admin"; } - public function rollback(): static { if (isset($this->modelEntities) && !is_null($this->modelEntities)) { - $this->deleteDir(base_path() . '/routes/adminr/admin/' . $this->modelEntities); - $this->deleteDir(base_path() . '/routes/adminr/api/' . $this->modelEntities); - if (isset($this->adminRoutePath) && !is_null($this->adminRoutePath)) { - $adminRoutesStorage = (array)json_decode(File::get($this->adminRoutePath)); - if (isset($adminRoutesStorage[$this->modelEntities])) { - unset($adminRoutesStorage[$this->modelEntities]); - } - File::put($this->adminRoutePath, json_encode((object)$adminRoutesStorage)); + $adminRoutesStorage = File::get($this->adminRoutePath); + $previousFile = Str::replace(search: $this->adminRouteProcessedStub, replace: "", subject: $adminRoutesStorage); + File::put($this->adminRoutePath, $previousFile); } if (isset($this->apiRoutePath) && !is_null($this->apiRoutePath)) { - $apiRoutesStorage = (array)json_decode(File::get($this->apiRoutePath)); - if (isset($apiRoutesStorage[$this->modelEntities])) { - unset($apiRoutesStorage[$this->modelEntities]); - } - File::put($this->apiRoutePath, json_encode((object)$apiRoutesStorage)); + $apiRoutesStorage = File::get($this->apiRoutePath); + $previousFile = Str::replace(search: $this->adminRouteProcessedStub, replace: "", subject: $apiRoutesStorage); + File::put($this->apiRoutePath, $previousFile); } } return $this; diff --git a/routes/adminr/admin.php b/routes/adminr/admin.php index 0b125c9..2c87d0a 100644 --- a/routes/adminr/admin.php +++ b/routes/adminr/admin.php @@ -1,6 +1,4 @@ ["web", "auth", "admin"], 'as' => config('app.route_prefix').'.', 'prefix' => config('app.route_prefix').'/manage'], function (){ - $adminrRoutes = json_decode(File::get(__DIR__ . '/admin/routes.json')); - foreach ($adminrRoutes as $key => $adminrRoute){ - $routes = json_decode(File::get(__DIR__ . '/admin/' . $key . '/' .$adminrRoute)); - foreach ($routes as $index => $route){ - if($route->method == 'get') { - Route::get($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware) - ->name($route->name); - } - if($route->method == 'post') { - Route::post($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware) - ->name($route->name); - } - if($route->method == 'put') { - Route::put($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware) - ->name($route->name); - } - if($route->method == 'delete') { - Route::delete($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware) - ->name($route->name); - } - if($route->method == 'patch') { - Route::patch($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware) - ->name($route->name); - } - } - } -}); \ No newline at end of file diff --git a/routes/adminr/admin/routes.json b/routes/adminr/admin/routes.json deleted file mode 100644 index 0967ef4..0000000 --- a/routes/adminr/admin/routes.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/routes/adminr/api.php b/routes/adminr/api.php index fc16f77..7eb085e 100644 --- a/routes/adminr/api.php +++ b/routes/adminr/api.php @@ -10,30 +10,4 @@ * it may break CMS functionality */ -use Illuminate\Support\Facades\File; -use Illuminate\Support\Facades\Route; - -$adminrRoutes = json_decode(File::get(__DIR__ . '/api/routes.json')); -foreach ($adminrRoutes as $key => $adminrRoute){ - $routes = json_decode(File::get(__DIR__ . '/api/'.$key.'/'.$adminrRoute)); - foreach ($routes as $index => $route){ - if(isset($route)){ - if($route->method == 'get') { - Route::get($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware); - } elseif($route->method == 'post') { - Route::post($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware); - } elseif($route->method == 'put') { - Route::put($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware); - } elseif($route->method == 'delete') { - Route::delete($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware); - } elseif($route->method == 'patch') { - Route::patch($route->route, [$route->controller, $route->action]) - ->middleware($route->middleware); - } - } - } -} \ No newline at end of file +use Illuminate\Support\Facades\{Route}; diff --git a/routes/adminr/api/routes.json b/routes/adminr/api/routes.json deleted file mode 100644 index 0967ef4..0000000 --- a/routes/adminr/api/routes.json +++ /dev/null @@ -1 +0,0 @@ -{} From 4110d91e42b9a0e5f78b89ffef7cc30af6c2cd5f Mon Sep 17 00:00:00 2001 From: Shoaib Khan Date: Sun, 3 Jul 2022 14:20:53 +0530 Subject: [PATCH 2/2] Updated to v0.3.5 --- CHANGELOG.md | 7 +++++++ README.md | 4 +--- composer.json | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe810af..5d77e46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ ================================================== +## Release v0.3.5 - Jul 03, 2022 + +- Fixed routes generation service. +- Now generating routes in the `admin.php` and `api.php` instead of separate `json` file. + +================================================== + ## Release v0.3.2 - Jun 26, 2022 - Fixed adminr home reference url in landing page. diff --git a/README.md b/README.md index 50b86a0..3f8cb46 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# AdminR v0.3.2 +# AdminR v0.3.5

Total Downloads @@ -13,11 +13,9 @@ AdminR is a simple admin panel built on top of [Laravel Framework](https://larav AdminR help to reduce approx 90% of the work for developers which they do to build a backend or admin panel and the APIs for their apps. ### Support me to add more feature -

-
## Get Started diff --git a/composer.json b/composer.json index 7144d80..6047bbc 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "thedevsbuddy/adminr", - "version": "0.3.2", + "version": "0.3.5", "type": "project", "description": "A simple yet powerful laravel starter with admin panel and CRUD resources generator to help you build application faster.", "keywords": [