diff --git a/app/CMS/Repositories/FileManager/File.php b/app/CMS/Repositories/FileManager/File.php new file mode 100644 index 00000000..23ffaaef --- /dev/null +++ b/app/CMS/Repositories/FileManager/File.php @@ -0,0 +1,16 @@ +update($data); + } +} \ No newline at end of file diff --git a/app/CMS/Repositories/Users/User.php b/app/CMS/Repositories/Users/User.php new file mode 100644 index 00000000..f4c6d7df --- /dev/null +++ b/app/CMS/Repositories/Users/User.php @@ -0,0 +1,65 @@ +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; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php index f6b4732c..8a9a3396 100644 --- a/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/CreateNewDirectory.php @@ -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) { diff --git a/app/Http/Controllers/Admin/FileManager/EditDirectory.php b/app/Http/Controllers/Admin/FileManager/EditDirectory.php index f9e5b12e..9da13545 100644 --- a/app/Http/Controllers/Admin/FileManager/EditDirectory.php +++ b/app/Http/Controllers/Admin/FileManager/EditDirectory.php @@ -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)) { diff --git a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php index 374f4dcf..de494d21 100644 --- a/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php +++ b/app/Http/Controllers/Admin/FileManager/EditUploadedFile.php @@ -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)); diff --git a/app/Http/Controllers/Admin/Templates/EditTemplate.php b/app/Http/Controllers/Admin/Templates/EditTemplate.php index 2938c129..ac90d6ae 100644 --- a/app/Http/Controllers/Admin/Templates/EditTemplate.php +++ b/app/Http/Controllers/Admin/Templates/EditTemplate.php @@ -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; diff --git a/app/Http/Controllers/Admin/Templates/TemplateOverview.php b/app/Http/Controllers/Admin/Templates/TemplateOverview.php index 6576b76a..def891b4 100644 --- a/app/Http/Controllers/Admin/Templates/TemplateOverview.php +++ b/app/Http/Controllers/Admin/Templates/TemplateOverview.php @@ -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() ]); } diff --git a/app/Http/Controllers/Admin/Users/CreateNewUser.php b/app/Http/Controllers/Admin/Users/CreateNewUser.php index 863e5fe0..dac56a3b 100644 --- a/app/Http/Controllers/Admin/Users/CreateNewUser.php +++ b/app/Http/Controllers/Admin/Users/CreateNewUser.php @@ -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)); diff --git a/app/Http/Controllers/Admin/Users/EditUser.php b/app/Http/Controllers/Admin/Users/EditUser.php index 1b77f3a8..2b774233 100644 --- a/app/Http/Controllers/Admin/Users/EditUser.php +++ b/app/Http/Controllers/Admin/Users/EditUser.php @@ -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)); diff --git a/app/Http/Controllers/Admin/Users/UserDetail.php b/app/Http/Controllers/Admin/Users/UserDetail.php index ae6c1d3e..6d027a0b 100644 --- a/app/Http/Controllers/Admin/Users/UserDetail.php +++ b/app/Http/Controllers/Admin/Users/UserDetail.php @@ -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(); diff --git a/app/Http/Controllers/Sitemap.php b/app/Http/Controllers/Visitor/Sitemap.php similarity index 100% rename from app/Http/Controllers/Sitemap.php rename to app/Http/Controllers/Visitor/Sitemap.php diff --git a/app/Http/routes.php b/app/Http/routes.php index 7c3340d1..f961866d 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -11,7 +11,7 @@ Route::pattern('url', '[0-9\-a-z]+'); /*******************************************************************************/ -Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['bindings']], function () { +Route::group(['prefix' => LaravelLocalization::setLocale(), 'middleware' => ['bindings']], function () { /** * This route group serves to handle request in admin */ @@ -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) diff --git a/app/Http/routes/admin/fileManager.php b/app/Http/routes/admin/fileManager.php index ec85fc37..884ab262 100644 --- a/app/Http/routes/admin/fileManager.php +++ b/app/Http/routes/admin/fileManager.php @@ -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'); diff --git a/app/Http/routes/admin/templates.php b/app/Http/routes/admin/templates.php index bb265533..94008a19 100644 --- a/app/Http/routes/admin/templates.php +++ b/app/Http/routes/admin/templates.php @@ -1,15 +1,15 @@ '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'); }); \ No newline at end of file diff --git a/app/Http/routes/admin/users.php b/app/Http/routes/admin/users.php index 69d643f7..69251427 100644 --- a/app/Http/routes/admin/users.php +++ b/app/Http/routes/admin/users.php @@ -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 diff --git a/resources/views/admin/templates/templatesTiles.blade.php b/resources/views/admin/templates/templatesTiles.blade.php index 85825daf..c532a468 100644 --- a/resources/views/admin/templates/templatesTiles.blade.php +++ b/resources/views/admin/templates/templatesTiles.blade.php @@ -53,7 +53,7 @@ // copy given template $.post ('{{route('templates.postCopy')}}', { - templateId: templateId, + template: templateId, newName: newTemplateName, _token: "{{csrf_token()}}" }, function (data) {