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
@@ -8,6 +8,7 @@ use App\CMS\Interactions\Admin\FileManager\CreateDirectory;
use App\CMS\Repositories\FileManager\Directory as DirectoryRepository;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests;
use App\Models\FileManager\Directory;
use Illuminate\Http\Request;
class CreateNewDirectory extends Controller
@@ -30,9 +31,10 @@ class CreateNewDirectory extends Controller
/**
* Create new directory
*
* @param Requests\CreateNewDirectoryRequest $request
* @param Requests\CreateNewDirectoryRequest|Request $request
*
* @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
* @internal param Directory $parentDirectory
*/
public function store(Request $request)
{
@@ -5,19 +5,20 @@ namespace App\Http\Controllers\Admin\FileManager;
use App\CMS\Repositories\FileManager\Directory as DirectoryRepository;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests;
use App\Http\Requests\EditDirectoryRequest;
use App\Models\FileManager\Directory;
class EditDirectory extends Controller
{
/**
* @param Requests\EditDirectoryRequest $request
* @param EditDirectoryRequest $request
* @param Directory $directory
*
* @return $this|\Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
* @internal param $directoryId
*
*/
public function update(Requests\EditDirectoryRequest $request, Directory $directory)
public function update(EditDirectoryRequest $request, Directory $directory)
{
$repository = app(DirectoryRepository::class);
if ($repository->checkIfNameExists($request->name, $directory->parent_id, $directory->id)) {
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin\FileManager;
use App\CMS\Helpers\FileManager;
use App\CMS\Helpers\RootDirectory;
use App\CMS\Repositories\FileManager\File as FileRepository;
use App\Events\EditFile;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\EditUploadedFileRequest;
@@ -14,14 +15,12 @@ class EditUploadedFile extends Controller
{
/**
* Edit form
*
* Render edit form for displaying details and updating given file
*
* @param File $file
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\View\View
* @internal param int $id file id
*
*/
public function show(File $file)
{
@@ -35,7 +34,6 @@ class EditUploadedFile extends Controller
/**
* Updates file
*
* User can change only keywords, original filename and description. Mime type, hash and other fields remain
* unchanged
*
@@ -44,16 +42,11 @@ class EditUploadedFile extends Controller
*
* @return \Illuminate\Http\RedirectResponse
* @internal param $id
*
*/
public function update(EditUploadedFileRequest $request, File $file)
{
// set values from form
$file->name = $request->name;
$file->keywords = $request->keywords;
$file->description = $request->description;
$file->directory_id = $request->directory_id;
$file->save();
$repository = app(FileRepository::class);
$repository->update($file, $request->all());
// fire action
Event::fire(new EditFile($file));
@@ -34,13 +34,8 @@ class EditTemplate extends Controller
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getEdit($template)
public function getEdit(Template $template)
{
/**
* @var $template Template
*/
$template = Template::findOrFail($template);
$this->templateRepository->setModel($template);
// load template content
@@ -59,15 +54,13 @@ class EditTemplate extends Controller
* Save meta information about template and edited content
*
* @param EditTemplateRequest $request
* @param $templateId
* @param Template $template
*
* @return \Illuminate\Http\RedirectResponse
* @internal param $templateId
*/
public function postEdit(EditTemplateRequest $request, $templateId)
public function postEdit(EditTemplateRequest $request, Template $template)
{
// find template
$template = Template::findOrFail($templateId);
// setup meta information
$template->name = $request->name;
@@ -7,16 +7,21 @@ use App\Models\Templates\TemplatePath;
class TemplateOverview extends Controller
{
public function getPath($path)
/**
* Display overview of all templates in given path
*
* @param TemplatePath $templatePath
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getPath(TemplatePath $templatePath)
{
$path = TemplatePath::findOrFail($path);
return view('admin.templates.list', [
'directory' => $path,
'isWritable' => is_writable(base_path($path->path)),
'templates' => $path->templates()
'directory' => $templatePath,
'isWritable' => is_writable(base_path($templatePath->path)),
'templates' => $templatePath->templates()
->get(),
'subdirectories' => $path->subdirectories()
'subdirectories' => $templatePath->subdirectories()
->get()
]);
}
@@ -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();