Skip to content

Commit

Permalink
Merge pull request #6 from thedevsbuddy/dev
Browse files Browse the repository at this point in the history
Updated to v0.3.5
  • Loading branch information
thedevsbuddy authored Jul 3, 2022
2 parents 10e858f + 4110d91 commit dc75c21
Show file tree
Hide file tree
Showing 15 changed files with 97 additions and 407 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# AdminR v0.3.2
# AdminR v0.3.5

<p align="center">
<a href="https://packagist.org/packages/thedevsbuddy/adminr"><img src="https://img.shields.io/packagist/dt/thedevsbuddy/adminr" alt="Total Downloads"></a>
Expand All @@ -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
<center>
<a href="https://www.buymeacoffee.com/devsbuddy" target="_blank">
<img src="https://www.buymeacoffee.com/assets/img/guidelines/download-assets-2.svg" style="height: 45px; border-radius: 12px"/>
</a>
</center>

## Get Started

Expand Down
56 changes: 14 additions & 42 deletions app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
];
Expand All @@ -51,47 +36,34 @@ 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;
}
);
}

/**
* 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();
Expand Down
2 changes: 1 addition & 1 deletion app/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
});
Expand Down
46 changes: 9 additions & 37 deletions app/adminr-engine/resources/stubs/routes/api_entities.stub
Original file line number Diff line number Diff line change
@@ -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"
}
}
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}});
});
Original file line number Diff line number Diff line change
@@ -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"
}
}
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}});
});
67 changes: 9 additions & 58 deletions app/adminr-engine/resources/stubs/routes/entities.stub
Original file line number Diff line number Diff line change
@@ -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"
}
}
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");
});
Original file line number Diff line number Diff line change
@@ -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"
}
}
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");
});
Loading

0 comments on commit dc75c21

Please sign in to comment.