I would probably do most of this stuff in the controller. So in your controller, you check what kind of user you have. Based on that you collect the data and then return a specific view for that.
public function edit(Model $model)
{
if (can('editAsAdmin', $mode)) {
return view('models.edit', compact('model'));
}
if (can('setName', $model)) {
$name = $model->name;
return view('models.edit.name', compact('name'));
}
}
Well you get the idea. What you can do is split this in to separate methods and so on to keep it clean.
You can reuse the same view, but then you have a lot of if statements in both your controllers and views. On the other side, you will have a lot of small views which you need to maintain as well.
I would just play around with it and see whatever works best for you ;)