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()
{
return User::orderBy('name')->hasRoles(['worker'])->pluck('name', 'id');
return User::orderBy('name')->pluck('name', 'id');
}
public function getVendorsList()

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

@ -2,9 +2,11 @@
namespace App\Http\Requests\Projects;
use App\Entities\Projects\Project;
use App\Http\Requests\Request;
class CreateRequest extends Request {
class CreateRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
@ -13,7 +15,7 @@ class CreateRequest extends Request {
*/
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\Http\Requests\Request;
class DeleteRequest extends Request {
class DeleteRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
@ -15,7 +16,7 @@ class DeleteRequest extends Request {
public function authorize()
{
$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()
{
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\Http\Requests\Request;
class UpdateRequest extends Request {
class UpdateRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
@ -15,7 +16,7 @@ class UpdateRequest extends Request {
public function authorize()
{
$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.
foreach ($this->getPermissions() as $permission) {
Gate::define($permission, function ($user) {
return $user->hasRole('admin');
return ! is_null($user->agency);
});
}

2
routes/web/invoices.php

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

2
routes/web/payments.php

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

2
routes/web/projects.php

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

2
routes/web/references.php

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

11
routes/web/reports.php

@ -1,6 +1,6 @@
<?php
Route::group(['middleware' => ['web','role:admin'],'prefix' => 'reports'], function() {
Route::group(['middleware' => ['web', 'auth'], 'prefix' => 'reports'], function () {
/**
* 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('log-files', ['as' => 'log-files.index', 'uses' => function () {
if (!file_exists(storage_path('logs')))
if ( ! file_exists(storage_path('logs'))) {
return [];
}
$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) {
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 'Invalid file name.';
}]);
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 'Invalid file name.';
}]);

2
routes/web/subscriptions.php

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

2
routes/web/users.php

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

2
tests/Feature/ManageSubscriptionsTest.php

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

4
tests/TestCase.php

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

Loading…
Cancel
Save