Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
json型を用いたユーザー権限設計
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
いかのこ
January 24, 2024
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
json型を用いたユーザー権限設計
いかのこ
January 24, 2024
More Decks by いかのこ
See All by いかのこ
プロダクトに愛を持たず開発をしてしまった結果、何も変わらなかった話
squid_ocean
0
17
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Documentation Writing (for coders)
carmenintech
77
5.6k
HDC tutorial
michielstock
2
930
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
The Cult of Friendly URLs
andyhume
79
7k
A designer walks into a library…
pauljervisheath
211
25k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Transcript
json型を用いた ユーザー権限設計
2 アジェンダ 1. 自己紹介 2. json 型の扱い 3. 前提・よくある設計 4.
設計 a. DB b. DB - コード間 c. コード 5. 何が変わった? 6. 結論
3 自己紹介 名前 いかのこ 職種 コーポレートエンジニア
4 json 型の扱い MySQL version 5.7.8 PostgreSQL version 9.2 から
json 型が使用できるように
5 json 型の扱い user テーブルとかこうなる未来もある
6 json 型の扱い 私「今まで通りで良くない?」 ・制約付けるのめんどそう ・コード側で扱えるように変換するのがめんどそう など... 実現出来たところで特別便利になるわけではない
7 json 型を使う場所なくないか...?
8 ??「ユーザー権限を実装してほしいです」
9 ??「権限は json 型で良いかも」
10 json型を用いたユーザー権限設計
11 前提 ・ユーザーに複数権限が紐づく ・権限はユーザー側で動的に定義されることはない (= システム側で定義した権限のみ使用できる) ワイは 「管理者権限」「給与自己決定権」「ゆ で卵食べ放題権限」 を持ってるで!
※ 存在しない権限があります
12 よくある設計
13 json 型を用いた設計
14 設計 - DB user テーブルに roles カラムを追加、json 型として定義
15 設計 - DBとコード間 DB → コード - JSON 型
から list<string> に変換 コード → DB - list<string> から JSON 型 に変換 ※ 参考 - Laravel の場合 Cast を作成して roles カラムに紐付けを行う必要があります ※ 参考 - MySQL で json 型を扱うときの注意点 保存時に utf8mb4 に変換されるので、必要に応じてエンコード・デコードをする必要があります 詳細: https://dev.mysql.com/doc/refman/8.0/ja/json.html#json-values
16 設計 - コード 権限一覧を enum として定義 権限名を定義 認可の判定 "role_name"
in user.roles で判定 FE からのバリデーションチェック list<string> として受け取る enum で定義した権限名以外があった時はエラーを投げる
17 何が変わった? テーブル構造がシンプルになる ※ ユーザーテーブルを更新したくない宗教 の方々とは分かち合えない
18 何が変わった? 直感的に見れる ※ 直接データを見ることはない
19 以上(少なくない?)
20 結論 従来の方法の方が無難かも ・DBとコード間の変換層の作成でそこそこ苦労 ・リレーションを貼るのが難しく拡張性が低そう ・特段便利になることがない
21 json 型のおすすめな使い方があれば教えてください!
22 ご清聴ありがとうございました!