FEATURE: use even more route model binding
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
namespace App\CMS\Repositories\FileManager;
|
||||
|
||||
use App\Models\FileManager\File as FileModel;
|
||||
|
||||
class File {
|
||||
/**
|
||||
* Update given instance of File
|
||||
*
|
||||
* @param FileModel $file
|
||||
* @param $data
|
||||
*/
|
||||
public function update(FileModel $file, $data) {
|
||||
$file->update($data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
namespace App\CMS\Repositories\Users;
|
||||
|
||||
use App\CMS\Repositories\Repository;
|
||||
use App\Models\User as UserModel;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class User extends Repository {
|
||||
/**
|
||||
* Update given user
|
||||
*
|
||||
* @param UserModel $user
|
||||
* @param $data
|
||||
*/
|
||||
public function update(UserModel $user, $data) {
|
||||
// update username if set
|
||||
if (isset($data['username'])) {
|
||||
$user->username = $data['username'];
|
||||
}
|
||||
|
||||
// change name (if set)
|
||||
if (isset($data['name'])) {
|
||||
$user->name = $data['name'];
|
||||
}
|
||||
|
||||
if (isset($data['role'])) {
|
||||
$user->role = $data['role'];
|
||||
}
|
||||
|
||||
if (isset($data['status'])) {
|
||||
$user->status = $data['status'];
|
||||
}
|
||||
|
||||
if (isset($data['password'])) {
|
||||
$user->password = Hash::make($data['password']);
|
||||
}
|
||||
|
||||
$user->email = $data['email'];
|
||||
|
||||
$user->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new user
|
||||
*
|
||||
* @param $data
|
||||
*
|
||||
* @return UserModel
|
||||
*/
|
||||
public function create($data)
|
||||
{
|
||||
// create new user
|
||||
$user = new UserModel();
|
||||
$user->name = $data['name'];
|
||||
$user->email = $data['email'];
|
||||
$user->username = $data['username'];
|
||||
$user->role = $data['role'];
|
||||
$user->password = Hash::make($data['password']);
|
||||
|
||||
// store user into database
|
||||
$user->save();
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
|
||||
@@ -4,25 +4,44 @@ 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)
|
||||
{
|
||||
// when no user specified, lets assume we want to edit "me"
|
||||
if (!$id) {
|
||||
$id = Auth::user()->id;
|
||||
$this->userRepository = $userRepository;
|
||||
}
|
||||
|
||||
// try to find given user
|
||||
$user = User::findOrFail($id);
|
||||
/**
|
||||
* 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();
|
||||
@@ -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();
|
||||
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['bi
|
||||
->name('login');
|
||||
|
||||
// route for sitemap
|
||||
Route::get('sitemap.xml', 'Sitemap@getMap')
|
||||
Route::get('sitemap.xml', 'Visitor\Sitemap@getMap')
|
||||
->name('sitemap');
|
||||
|
||||
// route for all content pages. This rule must be specified last (because it matches every route)
|
||||
|
||||
@@ -5,9 +5,6 @@ Route::group(['namespace' => 'FileManager'], function () {
|
||||
->name('upload.overview');
|
||||
|
||||
// uploader methods
|
||||
Route::get('directories/new/{parentDirectory?}', 'CreateNewDirectory@create')
|
||||
->name('upload.newDirectory');
|
||||
|
||||
Route::get('directories/edit/{directory}', 'EditDirectory@edit')
|
||||
->name('upload.editDirectory');
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<?php
|
||||
// these routes are available only for user with role admin
|
||||
Route::group(['middleware' => 'onlyAdmin', 'namespace' => 'Templates'], function () {
|
||||
Route::get('templates/overview/path/{id}', 'TemplateOverview@getPath')
|
||||
Route::get('templates/overview/path/{templatePath}', 'TemplateOverview@getPath')
|
||||
->name('templates.overview');
|
||||
|
||||
Route::post('templates/copy', 'CopyTemplate@createCopy')
|
||||
->name('templates.postCopy');
|
||||
|
||||
Route::get('templates/edit/{id}', 'EditTemplate@getEdit')
|
||||
Route::get('templates/edit/{template}', 'EditTemplate@getEdit')
|
||||
->name('templates.edit');
|
||||
|
||||
Route::post('templates/edit/{id}', 'EditTemplate@postEdit')
|
||||
Route::post('templates/edit/{template}', 'EditTemplate@postEdit')
|
||||
->name('templates.postEdit');
|
||||
});
|
||||
@@ -10,15 +10,15 @@ Route::group(['namespace' => 'Users'], function () {
|
||||
->name('users.newPost');
|
||||
|
||||
// display form for edit of existing user
|
||||
Route::get('users/edit/{id}', 'EditUser@getEditUser')
|
||||
Route::get('users/edit/{user}', 'EditUser@getEditUser')
|
||||
->name('users.edit');
|
||||
|
||||
// display user detail in admin
|
||||
Route::get('users/detail/{id?}', 'UserDetail@getDetail')
|
||||
Route::get('users/detail/{user?}', 'UserDetail@getDetail')
|
||||
->name('users.detail');
|
||||
|
||||
// method for saving edited data of user
|
||||
Route::post('users/edit/{id}', 'EditUser@postEdit')
|
||||
Route::post('users/edit/{user}', 'EditUser@postEdit')
|
||||
->name('users.editPost');
|
||||
|
||||
// display list of all users registered into our system
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
// copy given template
|
||||
$.post ('{{route('templates.postCopy')}}', {
|
||||
templateId: templateId,
|
||||
template: templateId,
|
||||
newName: newTemplateName,
|
||||
_token: "{{csrf_token()}}"
|
||||
}, function (data) {
|
||||
|
||||
Reference in New Issue
Block a user