mirror of
https://github.com/pelican-dev/panel.git
synced 2026-05-04 18:00:48 +03:00
Add api endpoint for updating username (#1826)
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Api\Client;
|
||||
use App\Facades\Activity;
|
||||
use App\Http\Requests\Api\Client\Account\UpdateEmailRequest;
|
||||
use App\Http\Requests\Api\Client\Account\UpdatePasswordRequest;
|
||||
use App\Http\Requests\Api\Client\Account\UpdateUsernameRequest;
|
||||
use App\Services\Users\UserUpdateService;
|
||||
use App\Transformers\Api\Client\UserTransformer;
|
||||
use Illuminate\Auth\AuthManager;
|
||||
@@ -36,6 +37,25 @@ class AccountController extends ClientApiController
|
||||
->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update username
|
||||
*
|
||||
* Update the authenticated user's username.
|
||||
*/
|
||||
public function updateUsername(UpdateUsernameRequest $request): JsonResponse
|
||||
{
|
||||
$original = $request->user()->username;
|
||||
$this->updateService->handle($request->user(), $request->validated());
|
||||
|
||||
if ($original !== $request->input('username')) {
|
||||
Activity::event('user:account.username-changed')
|
||||
->property(['old' => $original, 'new' => $request->input('username')])
|
||||
->log();
|
||||
}
|
||||
|
||||
return new JsonResponse([], Response::HTTP_NO_CONTENT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update email
|
||||
*
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api\Client\Account;
|
||||
|
||||
use App\Exceptions\Http\Base\InvalidPasswordProvidedException;
|
||||
use App\Http\Requests\Api\Client\ClientApiRequest;
|
||||
use App\Models\User;
|
||||
use Illuminate\Container\Container;
|
||||
use Illuminate\Contracts\Hashing\Hasher;
|
||||
|
||||
class UpdateUsernameRequest extends ClientApiRequest
|
||||
{
|
||||
/**
|
||||
* @throws InvalidPasswordProvidedException
|
||||
*/
|
||||
public function authorize(): bool
|
||||
{
|
||||
if (!parent::authorize()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$hasher = Container::getInstance()->make(Hasher::class);
|
||||
|
||||
// Verify password matches when changing password or email.
|
||||
if (!$hasher->check($this->input('password'), $this->user()->password)) {
|
||||
throw new InvalidPasswordProvidedException(trans('validation.internal.invalid_password'));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
$rules = User::getRulesForUpdate($this->user());
|
||||
|
||||
return ['username' => $rules['username']];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user