ユーザー情報の参照ができる。ほかのユーザー情報は閲覧不可。上記役割にプラスして各情報の所有者という概念も使ってます。(ユーザーは自分が所有者の登録情報は閲覧・更新可能とかに使います。)なので役割3つ+所有者になるので4種の権限が混在することになります。複雑なので表にしてみました。(それでも複雑に...)大きくWebサイトで管理する情報は、ユーザー情報、会社情報の2種。それぞれ所有者が設定され、情報の更新は所有者しかできない。userは他人のユーザー情報の参照はできない。会社情報の中で公開中の情報のみしか参照できない。companyはユーザー情報も会社情報も閲覧できるが、個人情報などのシークレット情報は見れない。管理者は何でもできる。(開発中だからね...)firebaseのfirestoreセキュリティルールでやるべきこと表にしたりと長ったらしい前提を書きましたが、firestoreのセキュリティルールでは大きく以下の2つが実現できれば上記の権限設定が実現できると考えました。)アクセスしたユーザーが、参照対象のレコードの所有者かどうかの判定アクセスしたユーザーが、要求しているレコード/アクションが可能な役割かの判定では、それぞれのやり方を記載します。}}これが一番簡単かなと。コレクション「user」のドキュメントIDをauthenticationのユーザーのIDであるUIDを設定しておき、request.auth.uidと比較します。この方法だと全ての権限を設定したいコレクションのIDをUIDにする必要があり、レコード単位に柔軟性がありません。使いやすいやりかたとしては以下があります。}}firebaseのセキュリティルールでは「resource」を指定することでアクション対象のレコードデータを参照することが可能です。「resource.data.uid」と指定することで、アクション対象のレコードのUIDを取得るすることができ、アクセスしたユーザーのUIDと比較することが可能です。このやり方であれば、各コレクションにUIDをカラムとして追加しておけば権限判定ができますので柔軟に組み込むことができおススメです。前提として、以下のコレクションをfirestoreに作成していると考えてください。}}こんな感じです!「get(/databases/$(database)/documents/userRole/$(request.auth.uid)).data.role」のように記載することで、firestore上の任意のドキュメントにアクセスし、データを参照することができます。userRoleコレクションに登録されているユーザーごとのroleを参照することで、アクセスのあったユーザーの役割を取得し、役割に従ったセキュリティルールを設定することが可能になります。さいごにfirebaseとても便利だなと感じました。こんなレコード単位とか役割ごとの権限設定を一から構築するとなると何か月もかかりそう...カツオが開発したWebサービスです。「セールサーチ」ネットショップのセール情報の検索サイト!平成の想い出を気軽に年表にしてシェアすることができるサービスです。コメントをキャンセルメールアドレスが公開されることはありません。非エンジニアが個人開発したWebサービスをリリースしてみてfirestoreのセキュリティルール設定(firebaseでユーザー・役割ごとの権限制御)最近のコメント33歳。起業について思うこと。