Merge branch 'main' into epic/kan-3
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Actions\Permissions\PermissionService;
|
||||
use App\Actions\Users\UpdateUserAvatar;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\StoreManagedUserRequest;
|
||||
use App\Http\Requests\Admin\SyncUserGlobalPermissionsRequest;
|
||||
@@ -19,6 +20,7 @@ class UserManagementController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly PermissionService $permissionService,
|
||||
private readonly UpdateUserAvatar $avatars,
|
||||
) {}
|
||||
|
||||
public function index(): Response
|
||||
@@ -46,13 +48,15 @@ class UserManagementController extends Controller
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
User::query()->create([
|
||||
$user = User::query()->create([
|
||||
'name' => Arr::get($validated, 'name'),
|
||||
'email' => Arr::get($validated, 'email'),
|
||||
'password' => Arr::get($validated, 'password'),
|
||||
'must_change_password_on_next_login' => (bool) Arr::get($validated, 'must_change_password_on_next_login', true),
|
||||
]);
|
||||
|
||||
$this->avatars->generate($user);
|
||||
|
||||
return to_route('admin.users.index')
|
||||
->with('status', 'User was created.');
|
||||
}
|
||||
|
||||
@@ -2,18 +2,25 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Actions\Users\UpdateUserAvatar;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Settings\ProfileDeleteRequest;
|
||||
use App\Http\Requests\Settings\ProfileUpdateRequest;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly UpdateUserAvatar $avatars,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Show the user's profile settings page.
|
||||
*/
|
||||
@@ -33,9 +40,14 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function update(ProfileUpdateRequest $request): RedirectResponse
|
||||
{
|
||||
|
||||
$validated = $request->validated();
|
||||
$user = $request->user();
|
||||
$user->fill($request->validated());
|
||||
$user->fill([
|
||||
'name' => Arr::get($validated, 'name'),
|
||||
'email' => Arr::get($validated, 'email'),
|
||||
]);
|
||||
|
||||
$nameChanged = $user->isDirty('name');
|
||||
|
||||
if ($user->isDirty('email')) {
|
||||
$user->email_verified_at = null;
|
||||
@@ -43,6 +55,21 @@ class ProfileController extends Controller
|
||||
|
||||
$user->save();
|
||||
|
||||
$avatar = Arr::get($validated, 'avatar');
|
||||
|
||||
if ($avatar instanceof UploadedFile) {
|
||||
$this->avatars->upload($user, $avatar);
|
||||
} elseif (! $user->hasUploadedAvatar() && ($nameChanged || blank($user->avatar_path))) {
|
||||
$this->avatars->generate($user);
|
||||
}
|
||||
|
||||
return to_route('profile.edit');
|
||||
}
|
||||
|
||||
public function destroyAvatar(Request $request): RedirectResponse
|
||||
{
|
||||
$this->avatars->generate($request->user());
|
||||
|
||||
return to_route('profile.edit');
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ class ProfileUpdateRequest extends FormRequest
|
||||
*/
|
||||
public function rules(): array
|
||||
{
|
||||
return $this->profileRules($this->user()->id);
|
||||
return [
|
||||
...$this->profileRules($this->user()->id),
|
||||
'avatar' => ['nullable', 'image', 'mimes:jpg,jpeg,png,webp', 'max:2048'],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ class UserResource extends JsonResource
|
||||
'id' => $this->id,
|
||||
'name' => $this->name,
|
||||
'email' => $this->email,
|
||||
'avatar' => $this->avatar,
|
||||
'avatar_color' => $this->avatar_color,
|
||||
'avatar_is_generated' => (bool) $this->avatar_is_generated,
|
||||
'email_verified_at' => $this->email_verified_at?->toISOString(),
|
||||
'must_change_password_on_next_login' => (bool) $this->must_change_password_on_next_login,
|
||||
'created_at' => $this->created_at?->toISOString(),
|
||||
|
||||
Reference in New Issue
Block a user