Всем привет. Пишу на laravel. Есть 2 метода в контроллере UserController
:
/*
*@param EditUserRequest $request
*@return view
*Изменяет данные и роль пользователя.
*/
public function edit(EditUserRequest $request)
{
$user = User::find($request->user_id);
$user->name = $request->name;
$user->surname = $request->surname;
$user->phone = $request->phone;
$user->email = $request->email;
if($request->role_id == 3) {
$user->manager_id = $request->manager_id;
} else {
$user->manager_id = null;
}
$user->save();
$user->syncRoles([$request->role_id]);
return redirect()->route('users.index')->with('success', 'Пользователь изменен.');
}
/*
*@param ConrirmUserRequest $request
*@return view
*Подтверждает пользователя и назначает ему роль, которую отправил админ
*/
public function confirm(ConfirmUserRequest $request)
{
$user = User::find($request->user_id);
if (!$user->notActivated()) {
return redirect()->back()->with('error', 'Пользователь уже подтвержден');
}
$user->is_activated = 1;
if($request->role_id == 3) {
$user->manager_id = $request->manager_id;
} else {
$user->manager_id = null;
}
$user->save();
$user->assignRole($request->role_id);
return redirect()->route('users.index')->with('success', 'Пользователь подтвержден.');
}
В обоих методах есть код, который повторяется. К примеру, проверка пользователя, равняется ли id его роли 3:
if($request->role_id == 3) {
$user->manager_id = $request->manager_id;
} else {
$user->manager_id = null;
}
А также место, где проверяется, подтвержден ли данный пользователь на данный момент:
if (!$user->notActivated()) {
return redirect()->back()->with('error', 'Пользователь уже подтвержден');
}
Понимаю, что на этом полностью нарушаю DRY и зону ответственности контроллера. Поэтому хочу узнать у более опытных людей, куда выносить данные методы? К примеру, метод проверки role == 3
не может быть вынесен в данном случае в модель, поскольку данные зависят от $request, а не от модели.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно использовать Google analytics api , возникла необходимость сохранить данные пользователя , и предоставить доступ к данным другому пользователю,