Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to allow user with a role(non admin) to access a certain page of backpack admin? #203

Closed
samuk190 opened this issue Sep 27, 2019 · 2 comments
Labels

Comments

@samuk190
Copy link

I'm using the same guard for backpack admin and user, and verifying if his role is admin to allow access route /admin. (default checkifAdmin function)

But the problem is, I want a certain user to be able access admin/edit-account-info
but restrict for other admin pages.

How I can do it? or better what steps should I take to move the edit-account-info controller to normal auth?

@welcome
Copy link

welcome bot commented Sep 27, 2019

Hello there! Thanks for opening your first issue on this repo!

Just a heads-up: Here at Backpack we use Github Issues only for tracking bugs. Talk about new features is also acceptable. This helps a lot in keeping our focus on improving Backpack. If you issue is not a bug/feature, please help us out by closing the issue yourself and posting in the appropriate medium (see below). If you're not sure where it fits, it's ok, a community member will probably reply to help you with that.

Backpack communication mediums:

  • Bug Reports, Feature Requests - Github Issues (here);
  • Quick help (How do I do X) - Gitter Chatroom;
  • Long questions (I have done X and Y and it won't do Z wtf) - Stackoverflow, using the backpack-for-laravel tag;

Please keep in mind Backpack offers no official / paid support. Whatever help you receive here, on Gitter, Slack or Stackoverflow is thanks to our awesome awesome community members, who give up some of their time to help their peers. If you want to join our community, just start pitching in. We take pride in being a welcoming bunch.

Thank you!

--
Justin Case
The Backpack Robot

@tabacitu
Copy link
Member

tabacitu commented Oct 4, 2019

@samuk190 it's a little tricker, since the checkIfAdmin middleware is requested inside the MyAccountController.

Option 1. Inside CheckIfAdmin::checkIfUserIsAdmin() you can use request() to determine if the route is one you want that particular user to have access to, and return true for that user and that route. Seems like a hack though :-)

Option 2. Inside your config/backpack/base.php file, toggle your setup_my_account_routes to false. This will prevent the routes being loaded. Now add those routes in your routes/backpack/custom.php, BEFORE the default route group:

Route::group([
    'prefix'     => config('backpack.base.route_prefix', 'admin'),
    'middleware' => ['web'],
    'namespace'  => 'App\Http\Controllers\Admin',
], function () { // custom admin routes
    Route::get('edit-account-info', 'MyAccountController@getAccountInfoForm')->name('backpack.account.info');
    Route::post('edit-account-info', 'MyAccountController@postAccountInfoForm');
    Route::post('change-password', 'MyAccountController@postChangePasswordForm')->name('backpack.account.password');
});

They will now point to a new app\Http\Controllers\Admin\MyAccountController.php, that you create, and should extend MyAccountController from the package. This new controller's job would only be to load a different middleware inside __construct(), so you only need to define __construct() inside it and do whatever you want inside it.

Hope it helps.
Cheers!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants