🎮このユーザーはこの機能が使える、みたいなあれをどう実現するか2020/12/10に公開2022/05/194件macOSaccesscontrollroledacrbactechDiscussionにゃーん2020/12/10に更新僕なら『ユーザーにレベルをつけるパターン』にします! 『ユーザーidに直接できることを紐付けるパターン』だと、機能が増えるたびにDBをいじる必要がある や この権限変えた方がいいよねというときに既存のレコードを書き直すDB処理をする必要がある などの辛さが出てきます。 『ユーザーにレベルをつけるパターン』にしておき、ユーザーのクラスなどで権限を管理するのは一つの手です。user.can_view? や user.can_delete? などのメソッドを用意しておいて、レベルの値を意識することなく処理できるようにするなど こうしておけばドキュメントを作らなくてもそのクラスを見れば、どのレベルがどの操作を許されているかが分かるような、、、 あくまでも一意見ですが、、 ハトすけ2020/12/10ネココニャンさん、コメントありがとうございます^^ 機能が増えるたびにDBをいじる必要がある ここ確かにそうですね😳 特にどんどん機能を追加していくフェーズだと、度重なるスキーマ変更が開発の邪魔になりそうです。 ユーザーサイドでめちゃくちゃ細かい権限の動的変更が求められない限り、DBで管理するよりも、DBには識別(レベルやロールなど)だけ置いておき、アプリケーション側で対応するほうがよさげです😁 また、ユーザークラスにメソッドごとの使用許可メソッドを作っておき、そのメソッドを呼び出すまえに、必ず使用許可メソッドを契約的に呼び出して権限チェックをする方式、いいですね! こうすれば権限チェックコードがあちこちに散らばらずにコード自体をドキュメントとして使えそうです。 その方針でいこうかなと思います。ありがとうございます😊 返信を追加スー2022/05/17 ロールにできることを紐付けるパターン ユーザーにレベルをつけるパターン の下のuserテーブルの表記が崩れているかもです! 下のように書き直せばいけそうですー! プルリクエストが出せないようなので、コメントにて失礼しますー userId name roleId 1 bob 1 2 alice 2 ハトすけ2022/05/19ありがとうございます! 修正しますね! 返信を追加
にゃーん2020/12/10に更新僕なら『ユーザーにレベルをつけるパターン』にします! 『ユーザーidに直接できることを紐付けるパターン』だと、機能が増えるたびにDBをいじる必要がある や この権限変えた方がいいよねというときに既存のレコードを書き直すDB処理をする必要がある などの辛さが出てきます。 『ユーザーにレベルをつけるパターン』にしておき、ユーザーのクラスなどで権限を管理するのは一つの手です。user.can_view? や user.can_delete? などのメソッドを用意しておいて、レベルの値を意識することなく処理できるようにするなど こうしておけばドキュメントを作らなくてもそのクラスを見れば、どのレベルがどの操作を許されているかが分かるような、、、 あくまでも一意見ですが、、 ハトすけ2020/12/10ネココニャンさん、コメントありがとうございます^^ 機能が増えるたびにDBをいじる必要がある ここ確かにそうですね😳 特にどんどん機能を追加していくフェーズだと、度重なるスキーマ変更が開発の邪魔になりそうです。 ユーザーサイドでめちゃくちゃ細かい権限の動的変更が求められない限り、DBで管理するよりも、DBには識別(レベルやロールなど)だけ置いておき、アプリケーション側で対応するほうがよさげです😁 また、ユーザークラスにメソッドごとの使用許可メソッドを作っておき、そのメソッドを呼び出すまえに、必ず使用許可メソッドを契約的に呼び出して権限チェックをする方式、いいですね! こうすれば権限チェックコードがあちこちに散らばらずにコード自体をドキュメントとして使えそうです。 その方針でいこうかなと思います。ありがとうございます😊 返信を追加
ハトすけ2020/12/10ネココニャンさん、コメントありがとうございます^^ 機能が増えるたびにDBをいじる必要がある ここ確かにそうですね😳 特にどんどん機能を追加していくフェーズだと、度重なるスキーマ変更が開発の邪魔になりそうです。 ユーザーサイドでめちゃくちゃ細かい権限の動的変更が求められない限り、DBで管理するよりも、DBには識別(レベルやロールなど)だけ置いておき、アプリケーション側で対応するほうがよさげです😁 また、ユーザークラスにメソッドごとの使用許可メソッドを作っておき、そのメソッドを呼び出すまえに、必ず使用許可メソッドを契約的に呼び出して権限チェックをする方式、いいですね! こうすれば権限チェックコードがあちこちに散らばらずにコード自体をドキュメントとして使えそうです。 その方針でいこうかなと思います。ありがとうございます😊
スー2022/05/17 ロールにできることを紐付けるパターン ユーザーにレベルをつけるパターン の下のuserテーブルの表記が崩れているかもです! 下のように書き直せばいけそうですー! プルリクエストが出せないようなので、コメントにて失礼しますー userId name roleId 1 bob 1 2 alice 2 ハトすけ2022/05/19ありがとうございます! 修正しますね! 返信を追加
Discussion
僕なら『ユーザーにレベルをつけるパターン』にします!
『ユーザーidに直接できることを紐付けるパターン』だと、機能が増えるたびにDBをいじる必要がある や この権限変えた方がいいよねというときに既存のレコードを書き直すDB処理をする必要がある などの辛さが出てきます。
『ユーザーにレベルをつけるパターン』にしておき、ユーザーのクラスなどで権限を管理するのは一つの手です。user.can_view? や user.can_delete? などのメソッドを用意しておいて、レベルの値を意識することなく処理できるようにするなど
こうしておけばドキュメントを作らなくてもそのクラスを見れば、どのレベルがどの操作を許されているかが分かるような、、、
あくまでも一意見ですが、、
ネココニャンさん、コメントありがとうございます^^
ここ確かにそうですね😳 特にどんどん機能を追加していくフェーズだと、度重なるスキーマ変更が開発の邪魔になりそうです。
ユーザーサイドでめちゃくちゃ細かい権限の動的変更が求められない限り、DBで管理するよりも、DBには識別(レベルやロールなど)だけ置いておき、アプリケーション側で対応するほうがよさげです😁
また、ユーザークラスにメソッドごとの使用許可メソッドを作っておき、そのメソッドを呼び出すまえに、必ず使用許可メソッドを契約的に呼び出して権限チェックをする方式、いいですね! こうすれば権限チェックコードがあちこちに散らばらずにコード自体をドキュメントとして使えそうです。
その方針でいこうかなと思います。ありがとうございます😊
の下のuserテーブルの表記が崩れているかもです!
下のように書き直せばいけそうですー!
プルリクエストが出せないようなので、コメントにて失礼しますー
ありがとうございます!
修正しますね!