Updates for addon/modules to make it easier to create APIs
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
"league/iso3166": "2.1.x",
|
||||
"google/apiclient": "2.2.x",
|
||||
"theiconic/php-ga-measurement-protocol": "2.7.x",
|
||||
"joshbrw/laravel-module-installer": "0.1.x",
|
||||
"irazasyed/laravel-gamp": "1.3.x",
|
||||
"vierbergenlars/php-semver": "3.0.x"
|
||||
},
|
||||
|
||||
@@ -1,27 +1,29 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'namespace' => 'Modules',
|
||||
|
||||
'stubs' => [
|
||||
'enabled' => true,
|
||||
'path' => resource_path() . '/stubs/modules',
|
||||
'files' => [
|
||||
'routes' => 'Http/routes.php',
|
||||
'routes' => 'Http/Routes/web.php',
|
||||
'routes-api' => 'Http/Routes/api.php',
|
||||
'routes-admin' => 'Http/Routes/admin.php',
|
||||
'event-service-provider' => 'Providers/EventServiceProvider.php',
|
||||
'views/index' => 'Resources/views/index.blade.php',
|
||||
'views/index-admin' => 'Resources/views/admin/index.blade.php',
|
||||
'views/frontend' => 'Resources/views/layouts/frontend.blade.php',
|
||||
'views/admin' => 'Resources/views/layouts/admin.blade.php',
|
||||
'listener-test' => 'Listeners/TestEventListener.php',
|
||||
'controller-admin' => 'Http/Controllers/AdminController.php',
|
||||
'controller-api' => 'Http/Controllers/Api/SampleController.php',
|
||||
'controller-admin' => 'Http/Controllers/Admin/AdminController.php',
|
||||
'scaffold/config' => 'Config/config.php',
|
||||
'composer' => 'composer.json',
|
||||
],
|
||||
'replacements' => [
|
||||
'start' => ['LOWER_NAME', 'ROUTES_LOCATION'],
|
||||
'routes' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
|
||||
'routes-api' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
|
||||
'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
|
||||
'event-service-provider' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
|
||||
'listener-test' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE'],
|
||||
@@ -30,6 +32,7 @@ return [
|
||||
'views/frontend' => ['STUDLY_NAME'],
|
||||
'views/admin' => ['STUDLY_NAME'],
|
||||
'controller-admin' => ['MODULE_NAMESPACE', 'STUDLY_NAME', 'CLASS_NAMESPACE', 'LOWER_NAME'],
|
||||
'controller-api' => ['MODULE_NAMESPACE', 'STUDLY_NAME', 'CLASS_NAMESPACE', 'LOWER_NAME'],
|
||||
'scaffold/config' => ['STUDLY_NAME'],
|
||||
'composer' => [
|
||||
'LOWER_NAME',
|
||||
@@ -54,8 +57,11 @@ return [
|
||||
'factory' => ['path' => 'Database/factories', 'generate' => true],
|
||||
'model' => ['path' => 'Models', 'generate' => true],
|
||||
'controller' => ['path' => 'Http/Controllers', 'generate' => true],
|
||||
'controller-admin' => ['path' => 'Http/Controllers/Admin', 'generate' => true],
|
||||
'controller-api' => ['path' => 'Http/Controllers/Api', 'generate' => true],
|
||||
'filter' => ['path' => 'Http/Middleware', 'generate' => true],
|
||||
'request' => ['path' => 'Http/Requests', 'generate' => true],
|
||||
'routes' => ['path' => 'Http/Routes', 'generate' => true],
|
||||
'provider' => ['path' => 'Providers', 'generate' => true],
|
||||
'assets' => ['path' => 'Resources/assets', 'generate' => true],
|
||||
'lang' => ['path' => 'Resources/lang', 'generate' => true],
|
||||
|
||||
31
modules/Sample/Http/Controllers/Api/SampleController.php
Normal file
31
modules/Sample/Http/Controllers/Api/SampleController.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sample\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Api\RestController;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SampleController extends RestController
|
||||
{
|
||||
/**
|
||||
* Just send out a message
|
||||
* @param Request $request
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
return $this->message('Hello, world!');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*/
|
||||
public function hello(Request $request)
|
||||
{
|
||||
// Another way to return JSON, this for a custom response
|
||||
// It's recommended to use Resources for responses from the database
|
||||
return response()->json([
|
||||
'name' => Auth::user()->name,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
7
modules/Sample/Http/Routes/admin.php
Normal file
7
modules/Sample/Http/Routes/admin.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
# This is the admin path. Comment this out if you don't have
|
||||
# an admin panel component.
|
||||
Route::group([], function () {
|
||||
Route::get('/', 'AdminController@index');
|
||||
});
|
||||
17
modules/Sample/Http/Routes/api.php
Normal file
17
modules/Sample/Http/Routes/api.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This is publicly accessible
|
||||
*/
|
||||
Route::group(['middleware' => []], function() {
|
||||
Route::get('/', 'SampleController@index');
|
||||
});
|
||||
|
||||
/**
|
||||
* This is required to have a valid API key
|
||||
*/
|
||||
Route::group(['middleware' => [
|
||||
'api.auth'
|
||||
]], function() {
|
||||
Route::get('/hello', 'SampleController@hello');
|
||||
});
|
||||
9
modules/Sample/Http/Routes/web.php
Normal file
9
modules/Sample/Http/Routes/web.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
Route::group(['middleware' => [
|
||||
'role:user' # leave blank to make this public
|
||||
]], function() {
|
||||
# all your routes are prefixed with the above prefix
|
||||
# e.g. yoursite.com/sample
|
||||
Route::get('/', 'SampleController@index');
|
||||
});
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
Route::group(['middleware' => [
|
||||
'role:admin|user' # leave blank to make this public
|
||||
]], function() {
|
||||
|
||||
# all your routes are prefixed with the above prefix
|
||||
# e.g. yoursite.com/sample
|
||||
Route::get('/', 'SampleController@index');
|
||||
|
||||
# This is the admin path. Comment this out if you don't have
|
||||
# an admin panel component.
|
||||
Route::group([
|
||||
'middleware' => ['role:admin'],
|
||||
], function () {
|
||||
Route::get('/admin', 'AdminController@index');
|
||||
});
|
||||
});
|
||||
11
modules/Sample/Models/SampleTable.php
Normal file
11
modules/Sample/Models/SampleTable.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Sample\Models;
|
||||
|
||||
use App\Models\BaseModel;
|
||||
|
||||
class SampleTable extends BaseModel
|
||||
{
|
||||
public $table = '';
|
||||
protected $fillable = [];
|
||||
}
|
||||
@@ -55,6 +55,9 @@ class SampleServiceProvider extends ServiceProvider
|
||||
*/
|
||||
protected function registerRoutes()
|
||||
{
|
||||
/**
|
||||
* Routes for the frontend
|
||||
*/
|
||||
Route::group([
|
||||
'as' => 'sample.',
|
||||
'prefix' => 'sample',
|
||||
@@ -62,7 +65,33 @@ class SampleServiceProvider extends ServiceProvider
|
||||
'middleware' => ['web'],
|
||||
'namespace' => 'Modules\Sample\Http\Controllers'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/web.php');
|
||||
});
|
||||
|
||||
/**
|
||||
* Routes for the admin
|
||||
*/
|
||||
Route::group([
|
||||
'as' => 'sample.',
|
||||
'prefix' => 'api/sample/admin',
|
||||
// If you want a RESTful module, change this to 'api'
|
||||
'middleware' => ['web', 'role:admin'],
|
||||
'namespace' => 'Modules\Sample\Http\Controllers\Admin'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/admin.php');
|
||||
});
|
||||
|
||||
/**
|
||||
* Routes for an API
|
||||
*/
|
||||
Route::group([
|
||||
'as' => 'sample.',
|
||||
'prefix' => 'api/sample',
|
||||
// If you want a RESTful module, change this to 'api'
|
||||
'middleware' => ['api'],
|
||||
'namespace' => 'Modules\Sample\Http\Controllers\Api'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/api.php');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
{
|
||||
"name": "nabeel/sample",
|
||||
"name": "/sample-module",
|
||||
"type": "laravel-module",
|
||||
"license": "MIT",
|
||||
"description": "",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nabeel Shahzad",
|
||||
"email": "gm@nabs.io"
|
||||
"name": "",
|
||||
"email": ""
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"joshbrw/laravel-module-installer": "dev-master"
|
||||
"joshbrw/laravel-module-installer": "0.1.x"
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
{
|
||||
"name": "$VENDOR$/$LOWER_NAME$",
|
||||
"name": "VENDOR/$LOWER_NAME$-module",
|
||||
"type": "laravel-module",
|
||||
"description": "",
|
||||
"authors": [
|
||||
{
|
||||
"name": "$AUTHOR_NAME$",
|
||||
"email": "$AUTHOR_EMAIL$"
|
||||
"name": "",
|
||||
"email": ""
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"joshbrw/laravel-module-installer": "0.1.x"
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
|
||||
31
resources/stubs/modules/controller-api.stub
Normal file
31
resources/stubs/modules/controller-api.stub
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace $MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Api\RestController;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SampleController extends RestController
|
||||
{
|
||||
/**
|
||||
* Just send out a message
|
||||
* @param Request $request
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
return $this->message('Hello, world!');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
*/
|
||||
public function hello(Request $request)
|
||||
{
|
||||
// Another way to return JSON, this for a custom response
|
||||
// It's recommended to use Resources for responses from the database
|
||||
return response()->json([
|
||||
'name' => Auth::user()->name,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,9 +2,10 @@
|
||||
|
||||
namespace $NAMESPACE$;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Models\BaseModel;
|
||||
|
||||
class $CLASS$ extends Model
|
||||
class $CLASS$ extends BaseModel
|
||||
{
|
||||
public $table = '';
|
||||
protected $fillable = $FILLABLE$;
|
||||
}
|
||||
|
||||
7
resources/stubs/modules/routes-admin.stub
Normal file
7
resources/stubs/modules/routes-admin.stub
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
# This is the admin path. Comment this out if you don't have
|
||||
# an admin panel component.
|
||||
Route::group([], function () {
|
||||
Route::get('/', 'AdminController@index');
|
||||
});
|
||||
17
resources/stubs/modules/routes-api.stub
Normal file
17
resources/stubs/modules/routes-api.stub
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* This is publicly accessible
|
||||
*/
|
||||
Route::group(['middleware' => []], function() {
|
||||
Route::get('/', '$STUDLY_NAME$Controller@index');
|
||||
});
|
||||
|
||||
/**
|
||||
* This is required to have a valid API key
|
||||
*/
|
||||
Route::group(['middleware' => [
|
||||
'api.auth'
|
||||
]], function() {
|
||||
Route::get('/hello', '$STUDLY_NAME$Controller@hello');
|
||||
});
|
||||
@@ -1,18 +1,9 @@
|
||||
<?php
|
||||
|
||||
Route::group(['middleware' => [
|
||||
'role:admin|user' # leave blank to make this public
|
||||
'role:user' # leave blank to make this public
|
||||
]], function() {
|
||||
|
||||
# all your routes are prefixed with the above prefix
|
||||
# e.g. yoursite.com/sample
|
||||
Route::get('/', '$STUDLY_NAME$Controller@index');
|
||||
|
||||
# This is the admin path. Comment this out if you don't have
|
||||
# an admin panel component.
|
||||
Route::group([
|
||||
'middleware' => ['role:admin'],
|
||||
], function () {
|
||||
Route::get('/admin', 'AdminController@index');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -55,6 +55,9 @@ class $CLASS$ extends ServiceProvider
|
||||
*/
|
||||
protected function registerRoutes()
|
||||
{
|
||||
/**
|
||||
* Routes for the frontend
|
||||
*/
|
||||
Route::group([
|
||||
'as' => '$LOWER_NAME$.',
|
||||
'prefix' => '$LOWER_NAME$',
|
||||
@@ -62,7 +65,33 @@ class $CLASS$ extends ServiceProvider
|
||||
'middleware' => ['web'],
|
||||
'namespace' => '$MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/routes.php');
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/web.php');
|
||||
});
|
||||
|
||||
/**
|
||||
* Routes for the admin
|
||||
*/
|
||||
Route::group([
|
||||
'as' => '$LOWER_NAME$.',
|
||||
'prefix' => 'api/$LOWER_NAME$/admin',
|
||||
// If you want a RESTful module, change this to 'api'
|
||||
'middleware' => ['web', 'role:admin'],
|
||||
'namespace' => '$MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers\Admin'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/admin.php');
|
||||
});
|
||||
|
||||
/**
|
||||
* Routes for an API
|
||||
*/
|
||||
Route::group([
|
||||
'as' => '$LOWER_NAME$.',
|
||||
'prefix' => 'api/$LOWER_NAME$',
|
||||
// If you want a RESTful module, change this to 'api'
|
||||
'middleware' => ['api'],
|
||||
'namespace' => '$MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers\Api'
|
||||
], function() {
|
||||
$this->loadRoutesFrom(__DIR__ . '/../Http/Routes/api.php');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user