In my opinion you should think in grouping the core logic together, separating the views (frontend/backend) can be done using controllers and routes but for the core parts has to be kept together in respective repositories.
As sample this will be my User Module
User.php -> Model UserRepository -> Repository Interface EloquentUserRepository -> Repository implementation UsersServiceProvider -> Service provider to set the repository & listeners Events/myeventFiles -> store all events here Listeners/mylistenerFiles -> store all event listeners here Exceptions/user module specific exceptions -> all exceptions go here
UserRepository will have functions for all users no seperation between admin or users, access control must be managed by yourself.
I like to use a exception driven pattern so that it gives me more flexibility on top layer. Also this allows me to use the same core code to use with mobile app/web app/command line app easily/
Well exceptions are fine, and really give the flexibility to mold our app, Sentry 2 is great package I have been using it on all my projects along with the groups and permission we have a great system. I was also able to get social authentication quite easily ready with Sentry 2 (using laravel oauth package).
What we really want is groups and permissions in the official Laravel Auth package which makes it complete.