Hey MPRYTHERO!
So this in total is a really complex situation you are asking for, which is why I will just try to help with some short ideas on how to be able to accomplish your goals.
1.) This highly depends on the fact if you want a user or just the team to have an assigned role. If you want both, there are polymorphic relations (https://laravel.com/docs/5.5/eloquent-relationships#polymorphic-relations). You can create a permission table and a polymorphed relation table, which you either add to a user or team.
2.) You can set up requests for whatever you want to edit. Lets say you want to edit a team. What you can do is:
TeamController.php
public function edit(ManageTeamRequest $request, Team $team)
{
// ...
}
ManageTeamRequest.php
public function authorize()
{
// Get the team from the URL
$team = Team::findOrFail($this->route('team'))->first();
// Check in users relation if this user is in the tam
return $team->users->contains(auth()->user());
}
3.) You can take a look at pre-made packages as Spatie (or maybe use it?) to get an idea of how those relations work. Laravel 4 will most likely not be working anymore. https://github.com/spatie/laravel-permission