Skip to content

Instantly share code, notes, and snippets.

@TiagoSilvaPereira
Last active December 3, 2020 21:08
Show Gist options
  • Save TiagoSilvaPereira/c85fa736520f4d11efccebd24ecd73a3 to your computer and use it in GitHub Desktop.
Save TiagoSilvaPereira/c85fa736520f4d11efccebd24ecd73a3 to your computer and use it in GitHub Desktop.
Laravel Controller generated with Vemto Code Generator
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\Hash;
use App\Http\Requests\UserStoreRequest;
use Illuminate\Support\Facades\Storage;
use App\Http\Requests\UserUpdateRequest;
class UserController extends Controller
{
/**
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$this->authorize('view-any', User::class);
$search = $request->get('search', '');
$users = User::search($search)
->latest()
->paginate();
return view('app.users.index', compact('users', 'search'));
}
/**
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$this->authorize('create', User::class);
$roles = Role::get();
return view('app.users.create', compact('roles'));
}
/**
* @param \App\Http\Requests\UserStoreRequest $request
* @return \Illuminate\Http\Response
*/
public function store(UserStoreRequest $request)
{
$this->authorize('create', User::class);
$validated = $request->validated();
$validated['password'] = Hash::make($validated['password']);
if ($request->hasFile('avatar')) {
$validated['avatar'] = $request->file('avatar')->store('public');
}
$user = User::create($validated);
$user->syncRoles($request->roles);
return redirect()
->route('users.edit', $user)
->withSuccess(__('crud.common.created'));
}
/**
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function show(Request $request, User $user)
{
$this->authorize('view', $user);
return view('app.users.show', compact('user'));
}
/**
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function edit(Request $request, User $user)
{
$this->authorize('update', $user);
$roles = Role::get();
return view('app.users.edit', compact('user', 'roles'));
}
/**
* @param \App\Http\Requests\UserUpdateRequest $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function update(UserUpdateRequest $request, User $user)
{
$this->authorize('update', $user);
$validated = $request->validated();
if (empty($validated['password'])) {
unset($validated['password']);
} else {
$validated['password'] = Hash::make($validated['password']);
}
if ($request->hasFile('avatar')) {
if ($user->avatar) {
Storage::delete($user->avatar);
}
$validated['avatar'] = $request->file('avatar')->store('public');
}
$user->update($validated);
$user->syncRoles($request->roles);
return redirect()
->route('users.edit', $user)
->withSuccess(__('crud.common.saved'));
}
/**
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request, User $user)
{
$this->authorize('delete', $user);
if ($user->avatar) {
Storage::delete($user->avatar);
}
$user->delete();
return redirect()
->route('users.index')
->withSuccess(__('crud.common.removed'));
}
}
@domthomas-dev
Copy link

  • Why do you not typehint function return ?

  • I think you can drop useless comment

  • in index, you could add pagination

  • in the second file, array syntax for rules allows to add easily custom rule

@TiagoSilvaPereira
Copy link
Author

Hi, @thomasdominic thanks for your appointments.

1 - Yes, I forget to type-hint the return... I'll add it
2 - I'll add an option to add/remove comments
3 - For sure, I'll add pagination
4 - I'll consider changing to array mode

Thanks man, cheers!

@domthomas-dev
Copy link

For comment be careful to delete only useless comments like @param type hint etc.

@TiagoSilvaPereira
Copy link
Author

For comment be careful to delete only useless comments like @param type hint etc.

Thanks for the advice

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment