ブックマーク / zenn.dev/moozaru (6)

  • Readonly 使ってますか?

    ムーザルちゃんねるのムーです。今回は TS の Readonly を使うか否か zaru さんと会話しました。 以前の zaru さんのこちらの記事 Reactのpropsはreadonlyにするべきか?で、Readonly については記載していますが、今回会話をする中で改めて気づいた知見などがあったのでシェアしたいと思います。 動画編の中でも Readonly の罠として二つ紹介していますが、それらについて書いておきたいと思います。 その1 immutable なオブジェクトを mutable なものにアサインすると、変更できてしまう。 これはよく知られている挙動だと思います。 具体的には以下のようなコードです。 interface Cat { readonly name: string; } const cat1: Cat = { name: "Alice" }; cat1.name

    Readonly 使ってますか?
  • 知らないとあぶない、Next.js セキュリティばなし

    ムーザルちゃんねるのムーです。今回は zaru さんと、Next.jsセキュリティについて話しました。 セキュリティについては様々あると思いますが、今回は以下の3点をピックアップして話しました。 Client Components の Props から露出する Server Actions の引数に注意 認証チェックをやってはいけない場所、やって良い場所 これらは、Next.js 入門者がうっかりとやってしまうリスクがあるものです。 このような罠は、アプリケーション自体は正常に動くので、知らないうちにはまってしまいますし、自力で気づくのも難しいものです。もしも知らないものがあれば、ぜひご確認ください。 楽しくて、安全な Next.js 生活をお送りください! Client Components の Props から露出する これは、シンプルで当たり前といえば当たり前ですが、Client

    知らないとあぶない、Next.js セキュリティばなし
  • Next.jsで素朴なフォームをシンプルに作る

    素朴なフォームを作る この記事では、素朴なフォームをNext.jsを使って簡単に(?)作る方法を順を追って解説します。これを読むことでNext.js AppRouterの新しい機能であるServer ActionsやuseFormStateなどの使い方理解が進むはずです。たぶん。 また、今回解説するServer Actionsを中心とした機能を用いれば、従来Reactでフォームを作る時のフロントエンドとバックエンド処理が煩雑になりがちなところを少しはシンプルに作ることができるようなります。ただし「素朴なフォーム」という前提ですが。 前提 Next.js v14.1 Next.js以外の外部ライブラリは使用していません HTMLのモックから まず素朴なフォームをHTMLから組み立てます。これ以上ないくらい素朴ですね。 素朴だ…(CSSのスタイル情報は記事上では消してます) export de

    Next.jsで素朴なフォームをシンプルに作る
  • Next.jsのlayout.tsxで認証チェックすると情報漏洩するかも

    Next.jsの認証チェックどこでするか問題 基的には middleware.ts で行うと思うのですが、肥大化を避けたり、ちょっとした共通処理は layout.tsx に書くこともあるでしょう。今回は layout.tsx で認証チェックをした場合に、実装によっては意図せず認証ユーザにしか表示したくない情報が漏洩してしまうかもしれないケースを紹介します。 問題のあるコード import { redirect } from "next/navigation"; export const dynamic = 'force-dynamic'; function currentUser() { // ここでセッションデータから認証ユーザ情報を取得する関数 // デモ用にログインしていないユーザを再現したいのでfalseを返す return false; } export default fun

    Next.jsのlayout.tsxで認証チェックすると情報漏洩するかも
  • E2EテストでNextAuth認証(OAuthなど)を突破する方法

    NextAuth (Auth.js) で認証させているWebアプリをPlaywrightなどでE2Eテストする際に、認証をどうやってさせるか、あるいは回避するかが悩ましい部分です。 もし採用している認証方式が、単純なID/パスワード認証であればテストユーザを作成し、Playwrightにパスワードを入力させれば認証できるので問題はありません。 しかし、Google認証などの外部のプロバイダを経由するような場合は、E2Eテストをすることが難しくなります。そこでこの記事では、NextAuthの認証済み状態をPlaywrightで再現させる方法を紹介します。 やり方は大きく2つ NextAuthの設定に依存してやり方は大きく2つあります。 セッションデータを database で管理している場合 セッションデータを jwt で管理している場合 データベースの場合 セッションデータをデータベースに

    E2EテストでNextAuth認証(OAuthなど)を突破する方法
  • gitでstashが面倒なあなたにautostash

    gitでrebaseしまくるzaruです、こんにちは。rebaseする時、編集途中のファイルがあるとstashしてくれと怒られますよね。当に面倒くさいのですが、これを一発でstashしなくて済む方法を紹介します。

    gitでstashが面倒なあなたにautostash
  • 1