Skip to content

Commit 25ac878

Browse files
committed
Added Commands to install demo, publish resources
1 parent 4f00713 commit 25ac878

14 files changed

+330
-33
lines changed

config/permission.php

+1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
'permission_role' => 'permission_role',
1616
],
1717
'resources_path' => 'vendor/codexshaper/laravel-permission/resources/assets/',
18+
'views' => 'vendor/codexshaper/laravel-permission/resources/views',
1819

1920
];

resources/assets/dashboard/js/app.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -2103,7 +2103,7 @@ __webpack_require__.r(__webpack_exports__);
21032103
var self = this;
21042104
axios({
21052105
method: 'get',
2106-
url: '/admin/user/' + id,
2106+
url: '/admin/user/edit/' + id,
21072107
responseType: 'json'
21082108
}).then(function (response) {
21092109
// console.log( response.data );
@@ -2120,7 +2120,6 @@ __webpack_require__.r(__webpack_exports__);
21202120
data: this.user
21212121
}).then(function (response) {
21222122
// console.log( response.data );
2123-
self.resetForm();
21242123
self.fetchUsers();
21252124
})["catch"](function (err) {// console.log( err );
21262125
});

resources/assets/js/components/Users.vue

+2-3
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@
226226
var self = this;
227227
axios({
228228
method: 'get',
229-
url: '/admin/user/'+id,
229+
url: '/admin/user/edit/'+id,
230230
responseType: 'json'
231231
}).then(function (response) {
232232
// console.log( response.data );
@@ -244,7 +244,6 @@
244244
})
245245
.then(function(response){
246246
// console.log( response.data );
247-
self.resetForm();
248247
self.fetchUsers();
249248
})
250249
.catch(function(err){
@@ -334,4 +333,4 @@
334333
// console.log('Component mounted.')
335334
}
336335
}
337-
</script>
336+
</script>
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
6+
<meta charset="utf-8">
7+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
8+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
9+
<meta name="description" content="">
10+
<meta name="author" content="">
11+
<!-- CSRF Token -->
12+
<meta name="csrf-token" content="{{ csrf_token() }}">
13+
14+
<title>Permission</title>
15+
16+
<!-- Custom fonts for this template-->
17+
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.10.2/css/all.min.css" rel="stylesheet" type="text/css">
18+
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
19+
20+
<!-- Custom styles for this template-->
21+
<link href="{{ permission_asset('dashboard/css/admin.css') }}" rel="stylesheet">
22+
<link href="{{ permission_asset('dashboard/css/custom.css') }}" rel="stylesheet">
23+
24+
@yield('styles')
25+
26+
</head>
27+
28+
<body id="page-top">
29+
30+
<!-- Page Wrapper -->
31+
<div id="wrapper">
32+
33+
<!-- Sidebar -->
34+
<!-- End of Sidebar -->
35+
36+
<!-- Content Wrapper -->
37+
<div id="content-wrapper" class="d-flex flex-column">
38+
39+
<!-- Main Content -->
40+
<div id="content">
41+
42+
<!-- Topbar -->
43+
44+
@include('permission::layouts.partials.topbar')
45+
46+
<!-- End of Topbar -->
47+
48+
<!-- Begin Page Content -->
49+
@yield('content')
50+
51+
<!-- /.container-fluid -->
52+
53+
</div>
54+
<!-- End of Main Content -->
55+
56+
@include('permission::layouts.partials.footer')
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@extends('permission::layouts.master')
2+
3+
@section('styles')
4+
@endsection
5+
@section('content')
6+
7+
<div class="card shadow mb-4">
8+
<div class="card-header py-3">
9+
<h6 class="m-0 font-weight-bold text-primary">Welcome To Laravel Permission</h6>
10+
</div>
11+
<div class="card-body">
12+
<p>Sorry! There is no Doc at this moment. we will add it soon. Thanks</p>
13+
</div>
14+
</div>
15+
@endsection
16+
17+
@section('scripts')
18+
19+
@endsection

routes/demo.php

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* Demo Routes */
2+
Route::group(['namespace' => config('permission.controller_namespace'),'middleware'=>['role:admin']],function(){
3+
// Permissions
4+
Route::get('/permissions', 'PermissionController@index')->name('permissions.index');
5+
6+
// Users
7+
Route::get('/users', 'UserController@index')->name('users');
8+
// Vue CRUD
9+
Route::get('/users/all', 'UserController@all')->name('users.all');
10+
Route::get('/user/{id}', 'UserController@getUser')->name('user');
11+
Route::post('/user/add', 'UserController@addUser')->name('user.add');
12+
Route::get('/user/edit/{id}', 'UserController@editUser')->name('user.edit');
13+
Route::put('/user/update/', 'UserController@updateUser')->name('user.update');
14+
Route::delete('/user/delete/{id}', 'UserController@deleteUser')->name('user.delete');
15+
// Ajax
16+
Route::get('/roles/all', 'UserController@allRoles')->name('roles.all');
17+
Route::post('/role/add', 'PermissionController@addRole')->name('role.add');
18+
Route::get('/role/{id}', 'PermissionController@getRole')->name('role.get');
19+
Route::put('/role/update', 'PermissionController@updateRole')->name('role.edit');
20+
Route::delete('/role/delete', 'PermissionController@deleteRole')->name('role.delete');
21+
22+
// Permission
23+
Route::post('/permission/add', 'PermissionController@addPermission')->name('permission.add');
24+
Route::get('/permission/{id}', 'PermissionController@getPermission')->name('permission.get');
25+
Route::put('/permission/update', 'PermissionController@updatePermission')->name('permission.edit');
26+
Route::delete('/permission/delete', 'PermissionController@deletePermission')->name('permission.delete');
27+
});

routes/permission.php

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
<?php
22

3+
Route::group(['namespace' => config('permission.controller_namespace'),'middleware'=>['role:admin']],function(){
4+
// Asset
5+
Route::get('/asset', 'PermissionController@assets')->name('permission.asset');
6+
// Test
7+
Route::get('/laravel-permission', 'PermissionController@doc')->name('permission.doc');
8+
});
9+
10+
11+
/* Demo Routes */
312
Route::group(['namespace' => config('permission.controller_namespace'),'middleware'=>['role:admin']],function(){
413
// Permissions
514
Route::get('/permissions', 'PermissionController@index')->name('permissions.index');
6-
Route::get('/asset', 'PermissionController@assets')->name('permission.asset');
715

816
// Users
917
Route::get('/users', 'UserController@index')->name('users');
1018
// Vue CRUD
1119
Route::get('/users/all', 'UserController@all')->name('users.all');
1220
Route::get('/user/{id}', 'UserController@getUser')->name('user');
1321
Route::post('/user/add', 'UserController@addUser')->name('user.add');
14-
// Route::get('/user/edit/', 'UserController@editUser')->name('user.edit');
22+
Route::get('/user/edit/{id}', 'UserController@editUser')->name('user.edit');
1523
Route::put('/user/update/', 'UserController@updateUser')->name('user.update');
1624
Route::delete('/user/delete/{id}', 'UserController@deleteUser')->name('user.delete');
1725
// Ajax
@@ -26,4 +34,4 @@
2634
Route::get('/permission/{id}', 'PermissionController@getPermission')->name('permission.get');
2735
Route::put('/permission/update', 'PermissionController@updatePermission')->name('permission.edit');
2836
Route::delete('/permission/delete', 'PermissionController@deletePermission')->name('permission.delete');
29-
});
37+
});
+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?php
2+
namespace CodexShaper\Permission\Commands;
3+
4+
use CodexShaper\Permission\PermissionServiceProvider;
5+
use Illuminate\Console\Command;
6+
use Symfony\Component\Console\Input\InputOption;
7+
use Symfony\Component\Process\Process;
8+
use Illuminate\Filesystem\Filesystem;
9+
10+
class InstallPermissionDemo extends Command
11+
{
12+
/**
13+
* The console command name.
14+
*
15+
* @var string
16+
*/
17+
protected $name = 'permission:install:demo';
18+
/**
19+
* The console command description.
20+
*
21+
* @var string
22+
*/
23+
protected $description = 'Install the CodexShaper Laravel permission Demo';
24+
25+
protected $routesPath = __DIR__.'/../../routes/';
26+
27+
/**
28+
* Get the composer command for the environment.
29+
*
30+
* @return string
31+
*/
32+
protected function findComposer()
33+
{
34+
if (file_exists(getcwd().'/composer.phar')) {
35+
return '"'.PHP_BINARY.'" '.getcwd().'/composer.phar';
36+
}
37+
return 'composer';
38+
}
39+
// public function fire(Filesystem $filesystem)
40+
// {
41+
// return $this->handle($filesystem);
42+
// }
43+
/**
44+
* Execute the console command.
45+
*
46+
* @param \Illuminate\Filesystem\Filesystem $filesystem
47+
*
48+
* @return void
49+
*/
50+
public function handle( Filesystem $filesystem)
51+
{
52+
$this->info('Dumping the autoloaded files and reloading all new files');
53+
$composer = $this->findComposer();
54+
$process = new Process($composer.' dump-autoload');
55+
$process->setTimeout(null); // Setting timeout to null to prevent installation from stopping at a certain point in time
56+
$process->setWorkingDirectory(base_path())->run();
57+
58+
$this->info('Adding Demo Routes and resources');
59+
$demo_routes = $this->routesPath.'demo.php';
60+
$original_routes = $this->routesPath.'permission.php';
61+
if( file_exists($original_routes) && file_exists( $demo_routes ) ) {
62+
$original_contents = $filesystem->get($original_routes);
63+
$demo_contents = $filesystem->get($demo_routes);
64+
if (false === strpos($original_contents, '/* Demo Routes */')) {
65+
$filesystem->append(
66+
$original_routes,
67+
"\n\n".$demo_contents."\n"
68+
);
69+
}
70+
}
71+
72+
$this->info('Publishing resources');
73+
$this->call('vendor:publish', ['--provider' => PermissionServiceProvider::class, '--tag' => ['permission.resources']]);
74+
}
75+
}

src/Commands/installPermission.php

+35-20
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ class InstallPermission extends Command
2222
*/
2323
protected $description = 'Install the CodexShaper Laravel permission';
2424

25+
protected $seedersPath = __DIR__.'/../../database/seeds/';
26+
protected $routesPath = __DIR__.'/../../routes/';
27+
2528
protected function getOptions()
2629
{
2730
return [
2831
['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production', null],
29-
['with-dummy', null, InputOption::VALUE_NONE, 'Install with dummy data', null],
32+
['with-demo', null, InputOption::VALUE_NONE, 'Install with demo data', null],
3033
];
3134
}
3235
/**
@@ -95,26 +98,38 @@ public function handle( Filesystem $filesystem)
9598

9699
$this->info('Seeding data into the database');
97100

98-
// $class = 'PermissionDatabaseSeeder';
101+
$class = 'PermissionDatabaseSeeder';
102+
$file = $this->seedersPath.$class.'.php';
103+
104+
if ( file_exists( $file ) && !class_exists($class)) {
105+
require_once $file;
106+
}
107+
with(new $class())->run();
108+
109+
$this->info('Seeding Completed');
110+
111+
// $this->call('db:seed', ['--class' => 'PermissionDatabaseSeeder']);
112+
113+
if ($this->option('with-demo')) {
114+
$this->info('Adding Demo Routes and resources');
115+
$demo_routes = $this->routesPath.'demo.php';
116+
$original_routes = $this->routesPath.'permission.php';
117+
if( file_exists($original_routes) && file_exists( $demo_routes ) ) {
118+
$original_contents = $filesystem->get($original_routes);
119+
$demo_contents = $filesystem->get($demo_routes);
120+
if (false === strpos($original_contents, '/* Demo Routes */')) {
121+
$filesystem->append(
122+
$original_routes,
123+
"\n\n".$demo_contents."\n"
124+
);
125+
}
126+
}
127+
128+
$this->info('Publishing resources');
129+
$this->call('vendor:publish', ['--provider' => PermissionServiceProvider::class, '--tag' => ['permission.views']]);
130+
131+
}
99132

100-
// if (!class_exists($class)) {
101-
// require_once $this->seedersPath.$class.'.php';
102-
// }
103-
// with(new $class())->run();
104-
105-
$this->call('db:seed', ['--class' => 'PermissionDatabaseSeeder']);
106-
107-
// if ($this->option('with-dummy')) {
108-
// $this->info('Publishing dummy content');
109-
// $tags = ['dummy_seeds', 'dummy_content', 'dummy_config', 'dummy_migrations'];
110-
// $this->call('vendor:publish', ['--provider' => VoyagerDummyServiceProvider::class, '--tag' => $tags]);
111-
// $this->info('Migrating dummy tables');
112-
// $this->call('migrate');
113-
// $this->info('Seeding dummy data');
114-
// $this->seed('VoyagerDummyDatabaseSeeder');
115-
// } else {
116-
// $this->call('vendor:publish', ['--provider' => VoyagerServiceProvider::class, '--tag' => ['config', 'voyager_avatar']]);
117-
// }
118133
// $this->info('Setting up the hooks');
119134
// $this->call('hook:setup');
120135
// $this->info('Adding the storage symlink to your public folder');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
namespace CodexShaper\Permission\Commands;
3+
4+
use CodexShaper\Permission\PermissionServiceProvider;
5+
use Illuminate\Console\Command;
6+
7+
class publishPermissionResources extends Command
8+
{
9+
/**
10+
* The console command name.
11+
*
12+
* @var string
13+
*/
14+
protected $name = 'permission:publish:resources';
15+
/**
16+
* The console command description.
17+
*
18+
* @var string
19+
*/
20+
protected $description = 'Install the CodexShaper Laravel permission Resources';
21+
22+
23+
public function handle()
24+
{
25+
26+
$this->info('Publishing resources');
27+
$this->call('vendor:publish', ['--provider' => PermissionServiceProvider::class, '--tag' => ['permission.resources']]);
28+
}
29+
}

0 commit comments

Comments
 (0)