FEATURE: use even more route model binding

This commit is contained in:
Michal Kváček
2017-08-01 19:51:12 +02:00
parent 3275e5aeed
commit 2d60010f9e
16 changed files with 158 additions and 100 deletions
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Admin\Users;
use App\CMS\Enumerations\UserRoles;
use App\CMS\Repositories\Users\User as UserRepository;
use App\Events\CreateNewUser as CreateNewUserEvent;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\CreateNewUserRequest;
@@ -28,28 +29,21 @@ class CreateNewUser extends Controller
/**
* Create new user
*
* This method saves new user into database
*
* @param CreateNewUserRequest $request
* @param UserRepository $userRepository
*
* @return \Illuminate\Http\RedirectResponse
*/
protected function postRegistration(CreateNewUserRequest $request)
protected function postRegistration(CreateNewUserRequest $request, UserRepository $userRepository)
{
// when user did not provide any username, use his email
$username = isset($request->username) && !empty($request->username) ? $request->username : $request->email;
// create new user
$user = new User();
$user->name = $request->name;
$user->email = $request->email;
$user->username = $username;
$user->role = $request->role;
$user->password = Hash::make($request->password);
// store user into database
$user->save();
$data = $request->all();
$data['username'] = $username;
$user = $userRepository->create($data);
// fire event
Event::fire(new CreateNewUserEvent($user));
+33 -37
View File
@@ -4,26 +4,45 @@ 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;
use Illuminate\Support\Facades\Hash;
class EditUser extends Controller
{
public function getEditUser($id = null)
/**
* @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 (!$id) {
$id = Auth::user()->id;
if (!$user->exists()) {
$user = Auth::user();
}
// try to find given user
$user = User::findOrFail($id);
$states = UserStates::getWithTranslations();
$roles = UserRoles::getWithTranslations();
@@ -35,49 +54,26 @@ class EditUser extends Controller
}
/**
* Edit user - store information
*
* @param EditUserRequest $request
* @param $id
* @param User $user
*
* @return \Illuminate\Http\RedirectResponse
* @internal param $id
*/
public function postEdit(EditUserRequest $request, $id)
public function postEdit(EditUserRequest $request, User $user)
{
$loggedUser = Auth::user();
$user = User::findOrFail($id);
// non-admin user is trying to edit someone else
if ($loggedUser->role != User::ROLE_ADMIN && $id != $loggedUser->id) {
if ($loggedUser->role != User::ROLE_ADMIN && $user->id != $loggedUser->id) {
return redirect()
->back()
->with('error', trans('auth.accessDenied'));
}
// update username if set
if (isset($request->username)) {
$user->username = $request->username;
}
// change name (if set)
if (isset($request->name)) {
$user->name = $request->name;
}
if (isset($request->role)) {
$user->role = $request->role;
}
if (isset($request->status)) {
$user->status = $request->status;
}
if (isset($request->password)) {
$user->password = Hash::make($request->password);
}
$user->email = $request->email;
$user->save();
$this->userRepository->update($user, $request->all());
// fire event about editing user
Event::fire(new EditUserEvent($user));
@@ -22,18 +22,14 @@ class UserDetail extends Controller
$this->log = $log;
}
public function getDetail($id = null)
public function getDetail(User $user = null)
{
// when no user specified, lets assume we want to edit "me"
if (!$id) {
$id = Auth::user()->id;
if (!$user->exists()) {
$id = Auth::user();
}
// try to find given user
$user = User::findOrFail($id);
$actions = $this->log->getUserActions($id, 10);
$actions = $this->log->getUserActions($user->id, 10);
$roles = UserRoles::getWithTranslations();
$states = UserStates::getWithTranslations();