Browse Source

Remove user action authorization by role

pull/1/head
Nafies Luthfi 8 years ago
parent
commit
69b9e6af5a
  1. 2
      app/Entities/BaseRepository.php
  2. 6
      app/Http/Requests/Projects/CreateRequest.php
  3. 7
      app/Http/Requests/Projects/DeleteRequest.php
  4. 5
      app/Http/Requests/Projects/UpdateRequest.php
  5. 2
      app/Providers/AuthServiceProvider.php
  6. 2
      routes/web/invoices.php
  7. 2
      routes/web/payments.php
  8. 2
      routes/web/projects.php
  9. 2
      routes/web/references.php
  10. 11
      routes/web/reports.php
  11. 2
      routes/web/subscriptions.php
  12. 2
      routes/web/users.php
  13. 2
      tests/Feature/ManageSubscriptionsTest.php
  14. 4
      tests/TestCase.php

2
app/Entities/BaseRepository.php

@ -25,7 +25,7 @@ abstract class BaseRepository extends EloquentRepository
public function getWorkersList() public function getWorkersList()
{ {
return User::orderBy('name')->hasRoles(['worker'])->pluck('name', 'id');
return User::orderBy('name')->pluck('name', 'id');
} }
public function getVendorsList() public function getVendorsList()

6
app/Http/Requests/Projects/CreateRequest.php

@ -2,9 +2,11 @@
namespace App\Http\Requests\Projects; namespace App\Http\Requests\Projects;
use App\Entities\Projects\Project;
use App\Http\Requests\Request; use App\Http\Requests\Request;
class CreateRequest extends Request {
class CreateRequest extends Request
{
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@ -13,7 +15,7 @@ class CreateRequest extends Request {
*/ */
public function authorize() public function authorize()
{ {
return auth()->user()->can('add_project');
return auth()->user()->can('create', new Project);
} }
/** /**

7
app/Http/Requests/Projects/DeleteRequest.php

@ -5,7 +5,8 @@ namespace App\Http\Requests\Projects;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Http\Requests\Request; use App\Http\Requests\Request;
class DeleteRequest extends Request {
class DeleteRequest extends Request
{
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@ -15,7 +16,7 @@ class DeleteRequest extends Request {
public function authorize() public function authorize()
{ {
$project = Project::findOrFail($this->segment(2)); $project = Project::findOrFail($this->segment(2));
return auth()->user()->can('manage_project', $project);
return auth()->user()->can('update', $project);
} }
/** /**
@ -26,7 +27,7 @@ class DeleteRequest extends Request {
public function rules() public function rules()
{ {
return [ return [
'project_id' => 'required'
'project_id' => 'required',
]; ];
} }

5
app/Http/Requests/Projects/UpdateRequest.php

@ -5,7 +5,8 @@ namespace App\Http\Requests\Projects;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Http\Requests\Request; use App\Http\Requests\Request;
class UpdateRequest extends Request {
class UpdateRequest extends Request
{
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
@ -15,7 +16,7 @@ class UpdateRequest extends Request {
public function authorize() public function authorize()
{ {
$project = Project::findOrFail($this->segment(2)); $project = Project::findOrFail($this->segment(2));
return auth()->user()->can('manage_project', $project);
return auth()->user()->can('update', $project);
} }
/** /**

2
app/Providers/AuthServiceProvider.php

@ -31,7 +31,7 @@ class AuthServiceProvider extends ServiceProvider
// Dynamically register permissions with Laravel's Gate. // Dynamically register permissions with Laravel's Gate.
foreach ($this->getPermissions() as $permission) { foreach ($this->getPermissions() as $permission) {
Gate::define($permission, function ($user) { Gate::define($permission, function ($user) {
return $user->hasRole('admin');
return ! is_null($user->agency);
}); });
} }

2
routes/web/invoices.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin']], function() {
Route::group(['middleware' => ['web', 'auth']], function () {
/* /*
* Invoice Draft Routes * Invoice Draft Routes
*/ */

2
routes/web/payments.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin']], function() {
Route::group(['middleware' => ['web', 'auth']], function () {
/** /**
* Payments Routes * Payments Routes
*/ */

2
routes/web/projects.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin'], 'namespace' => 'Projects'], function () {
Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Projects'], function () {
/** /**
* Projects Routes * Projects Routes
*/ */

2
routes/web/references.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['namespace' => 'References', 'middleware' => ['web', 'role:admin']], function () {
Route::group(['namespace' => 'References', 'middleware' => ['web', 'auth']], function () {
/** /**
* Options Routes * Options Routes
*/ */

11
routes/web/reports.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin'],'prefix' => 'reports'], function() {
Route::group(['middleware' => ['web', 'auth'], 'prefix' => 'reports'], function () {
/** /**
* Reports Routes * Reports Routes
*/ */
@ -11,8 +11,9 @@ Route::group(['middleware' => ['web','role:admin'],'prefix' => 'reports'], funct
Route::get('current-credits', ['as' => 'reports.current-credits', 'uses' => 'ReportsController@currentCredits']); Route::get('current-credits', ['as' => 'reports.current-credits', 'uses' => 'ReportsController@currentCredits']);
Route::get('log-files', ['as' => 'log-files.index', 'uses' => function () { Route::get('log-files', ['as' => 'log-files.index', 'uses' => function () {
if (!file_exists(storage_path('logs')))
if ( ! file_exists(storage_path('logs'))) {
return []; return [];
}
$logFiles = \File::allFiles(storage_path('logs')); $logFiles = \File::allFiles(storage_path('logs'));
@ -25,15 +26,17 @@ Route::group(['middleware' => ['web','role:admin'],'prefix' => 'reports'], funct
}]); }]);
Route::get('log-files/{filename}', ['as' => 'log-files.show', 'uses' => function ($fileName) { Route::get('log-files/{filename}', ['as' => 'log-files.show', 'uses' => function ($fileName) {
if (file_exists(storage_path('logs/' . $fileName)))
if (file_exists(storage_path('logs/'.$fileName))) {
return response()->file(storage_path('logs/'.$fileName), ['content-type' => 'text/plain']); return response()->file(storage_path('logs/'.$fileName), ['content-type' => 'text/plain']);
}
return 'Invalid file name.'; return 'Invalid file name.';
}]); }]);
Route::get('log-files/{filename}/download', ['as' => 'log-files.download', 'uses' => function ($fileName) { Route::get('log-files/{filename}/download', ['as' => 'log-files.download', 'uses' => function ($fileName) {
if (file_exists(storage_path('logs/' . $fileName)))
if (file_exists(storage_path('logs/'.$fileName))) {
return response()->download(storage_path('logs/'.$fileName), env('APP_ENV').'.'.$fileName); return response()->download(storage_path('logs/'.$fileName), env('APP_ENV').'.'.$fileName);
}
return 'Invalid file name.'; return 'Invalid file name.';
}]); }]);

2
routes/web/subscriptions.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin']], function() {
Route::group(['middleware' => ['web', 'auth']], function () {
/** /**
* Subscriptions Routes * Subscriptions Routes
*/ */

2
routes/web/users.php

@ -1,6 +1,6 @@
<?php <?php
Route::group(['middleware' => ['web','role:admin'], 'namespace' => 'Users'], function() {
Route::group(['middleware' => ['web', 'auth'], 'namespace' => 'Users'], function () {
/** /**
* Users Routes * Users Routes
*/ */

2
tests/Feature/ManageSubscriptionsTest.php

@ -34,8 +34,8 @@ class ManageSubscriptionsTest extends TestCase
$this->type('', 'remark'); $this->type('', 'remark');
$this->press(trans('subscription.create')); $this->press(trans('subscription.create'));
$this->seePageIs(route('subscriptions.index'));
$this->see(trans('subscription.created')); $this->see(trans('subscription.created'));
$this->seePageIs(route('subscriptions.index'));
$this->seeInDatabase('subscriptions', [ $this->seeInDatabase('subscriptions', [
'project_id' => $project->id, 'project_id' => $project->id,

4
tests/TestCase.php

@ -32,7 +32,7 @@ abstract class TestCase extends BaseTestCase
protected function userSigningIn() protected function userSigningIn()
{ {
$user = factory(User::class)->create();
$user = $this->createUser();
$this->actingAs($user); $this->actingAs($user);
return $user; return $user;
@ -41,8 +41,6 @@ abstract class TestCase extends BaseTestCase
protected function createUser($role = 'admin') protected function createUser($role = 'admin')
{ {
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$user->assignRole($role);
return $user; return $user;
} }

Loading…
Cancel
Save