laravel8でFirebase Admin SDK for PHPを使ってみた(user情報変更)
前回の記事でFirebaseのユーザー情報を取得することができました。
では今回は更新をしていこうと思います。
routes/api.php
<?php
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'v1', 'namespace' => 'Api\v1', 'as' => 'api.'], function () {
Route::resource('users', UsersController::class)->only(['store']);
});
app/Http/Controllers/Api/v1/UsersController.php
<?php
namespace App\Http\Controllers\Api\v1;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Kreait\Firebase\Auth;
use Firebase\Auth\Token\Exception\InvalidToken;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
/**
* @var Auth
*/
private $auth;
/**
* コンストラクタインジェクションで $firebase を用意します
* @param Auth $auth
*/
public function __construct(Auth $auth)
{
$this->auth = $auth;
}
/**
* @param Request $request
* @return JsonResponse
*/
public function store(Request $request): JsonResponse
{
$idToken = $request->input('idToken');
try {
$verifiedIdToken = $this->auth->verifyIdToken($idToken);
} catch (InvalidToken $e) {
return response()->json([
'error' => 'Unauthorized',
]);
}
$uid = $verifiedIdToken->claims()->get('sub');
$before = $this->auth->getUser($uid);
// user情報を更新する
$this->auth->updateUser($uid, ['emailVerified' => true]);
$after = $this->auth->getUser($uid);
return response()->json([
'before' => $before,
'after' => $after,
]);
}
}
updateUserメソッドでユーザー情報を変更することができます。
更新したいものを配列で渡すだけなのでかんたんですね!
今回はemailVerifiedを更新ということで、メールが認証されているかの更新をしました。
よくあるユーザー登録とかでメール認証してるしてないを管理するあれです。
変更できる項目はこちら。
$userProperties = [
'email' => 'user@example.com',
'emailVerified' => false,
'phoneNumber' => '+15555550100',
'password' => 'secretPassword',
'displayName' => 'John Doe',
'photoUrl' => 'http://www.example.com/12345678/photo.png',
'disabled' => false,
];
だいたい、ユーザー作成と同じです。
メールアドレスやパスワードの変更はどうする?
こちらのようにすることで、変更可能です。
パスワード変更
$uid = 'xxxxxxxxxxxxxxxx';
$updatedUser = $this->auth->changeUserPassword($uid, 'new password');
メールアドレス変更
$uid = 'xxxxxxxxxxxxxxxx';
$updatedUser = $this->auth->changeUserEmail($uid, 'user@gmail.com');
ユーザーの無効化
$uid = 'xxxxxxxxxxxxxxxx';
$updatedUser = $this->auth->disableUser($uid);
ユーザーの有効化
$uid = 'xxxxxxxxxxxxxxxx';
$updatedUser = $this->auth->enableUser($uid);
ということで今回はfirebase上のユーザー情報を変更してみました。
簡単にできるのはありがたいですね。
ぜひ利用してみてください。
この記事が気に入ったらサポートをしてみませんか?