Files
core/app/Http/Controllers/Admin/Users/EditUser.php
T

85 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Users;
use App\CMS\Enumerations\UserRoles;
use App\CMS\Enumerations\UserStates;
use App\CMS\Repositories\Users\User as UserRepository;
use App\Events\EditUser as EditUserEvent;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\EditUserRequest;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Event;
class EditUser extends Controller
{
/**
* @var UserRepository
*/
private $userRepository;
/**
* EditUser constructor.
*
* @param UserRepository $userRepository
*/
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
/**
* Display form for editing user
*
* @param User|null $user
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getEditUser(User $user = null)
{
// when no user specified, lets assume we want to edit "me"
if (!$user->exists) {
$user = Auth::user();
}
$states = UserStates::getWithTranslations();
$roles = UserRoles::getWithTranslations();
return view('admin.userManagement.edit', [
'user' => $user,
'states' => $states,
'roles' => $roles
]);
}
/**
* Edit user - store information
*
* @param EditUserRequest $request
* @param User $user
*
* @return \Illuminate\Http\RedirectResponse
* @internal param $id
*/
public function postEdit(EditUserRequest $request, User $user)
{
$loggedUser = Auth::user();
// non-admin user is trying to edit someone else
if ($loggedUser->role != User::ROLE_ADMIN && $user->id != $loggedUser->id) {
return redirect()
->back()
->with('error', trans('auth.accessDenied'));
}
$this->userRepository->update($user, $request->all());
// fire event about editing user
Event::fire(new EditUserEvent($user));
return redirect()
->back()
->with('success', trans('admin/userManagement.userSuccessfullyEdited'));
}
}