FEATURE: split controllers/admin into more smaller directories

This commit is contained in:
Michal Kváček
2016-09-22 23:35:53 +02:00
parent 0357417163
commit 139373145a
41 changed files with 374 additions and 412 deletions
@@ -0,0 +1,62 @@
<?php
namespace App\Http\Controllers\Admin\Users;
use App\Enumerations\UserRoles;
use App\Events\CreateNewUser as CreateNewUserEvent;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\CreateNewUserRequest;
use App\Models\User;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Hash;
class CreateNewUser extends Controller
{
/**
* Show the form for creating new user
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getNewUser()
{
// define list of roles, this list will be used in template for selecting proper role for user
$roles = UserRoles::getWithTranslations();
// render view
return view('admin.userManagement.new', ['roles' => $roles]);
}
/**
* Create new user
*
* This method saves new user into database
*
* @param CreateNewUserRequest $request
*
* @return \Illuminate\Http\RedirectResponse
*/
protected function postRegistration(CreateNewUserRequest $request)
{
// 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();
// fire event
Event::fire(new CreateNewUserEvent($user));
// refresh page with information about successfull registration
return redirect()
->route('users.new')
->with('success', trans('admin/userManagement.registrationSuccessfull'));
}
}
@@ -0,0 +1,89 @@
<?php
namespace App\Http\Controllers\Admin\Users;
use App\Enumerations\UserRoles;
use App\Enumerations\UserStates;
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)
{
// when no user specified, lets assume we want to edit "me"
if (!$id) {
$id = Auth::user()->id;
}
// try to find given user
$user = User::findOrFail($id);
$states = UserStates::getWithTranslations();
$roles = UserRoles::getWithTranslations();
return view('admin.userManagement.edit', [
'user' => $user,
'states' => $states,
'roles' => $roles
]);
}
/**
* @param EditUserRequest $request
* @param $id
*
* @return \Illuminate\Http\RedirectResponse
*/
public function postEdit(EditUserRequest $request, $id)
{
$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) {
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();
// fire event about editing user
Event::fire(new EditUserEvent($user));
return redirect()
->route('users.detail', ['id' => $id])
->with('success', trans('admin/userManagement.userSuccessfullyEdited'));
}
}
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Admin\Users;
use App\Enumerations\UserRoles;
use App\Enumerations\UserStates;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests;
use App\Models\ActionLog;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
class UserDetail extends Controller
{
/**
* @var ActionLog
*/
private $log;
function __construct(ActionLog $log)
{
$this->log = $log;
}
public function getDetail($id = null)
{
// when no user specified, lets assume we want to edit "me"
if (!$id) {
$id = Auth::user()->id;
}
// try to find given user
$user = User::findOrFail($id);
$actions = $this->log->getUserActions($id);
$roles = UserRoles::getWithTranslations();
$states = UserStates::getWithTranslations();
return view('admin.userManagement.detail', [
'user' => $user,
'statuses' => $states,
'roles' => $roles,
'actions' => $actions
]);
}
}
@@ -0,0 +1,35 @@
<?php
namespace App\Http\Controllers\Admin\Users;
use App\Enumerations\UserRoles;
use App\Enumerations\UserStates;
use App\Http\Controllers\Admin\Controller;
use App\Models\User;
class UsersOverview extends Controller
{
public function getOverview($status = null, $perPage = 12)
{
$users = User::orderBy('id', 'desc');
// get statuses
$statuses = UserStates::getWithTranslations();
$statuses[''] = trans('admin/userManagement.allStatuses');
// filter using status
if (!is_null($status) && isset($statuses[$status])) {
$users = $users->where('status', $status);
}
// setup pagination
$users = $users->paginate($perPage);
return view('admin.userManagement.overview', [
'users' => $users,
'roles' => UserRoles::getWithTranslations(),
'statuses' => $statuses,
'currentStatus' => $status
]);
}
}