20190415学習記録

2019-04-15に投稿

今日やること(=やったこと)

  • Rails Tutorial 10.4~10章最後まで
  • 就労移行支援事業所 支援担当N先生と面談
    • AD/HD, PDD, 自閉スペクトラム症対策
    • 生活リズム・習慣の見直し、計画
    • 学習計画・方法の提案と一定期間の実践・実験
  • 同 技術担当O講師と学習計画・ポートフォリオ設計について相談
    • ポートフォリオ作成の計画・期間の再設定
      • の前段階の実装予定機能リストアップ

章・節の目的

10.4 ユーザーを削除する
  • 管理権限を持つ特権ユーザー(admin)の設定
  • ユーザーの削除(destroyアクションの実装)
    • 同時にresources :usersルーティングのRESTに準拠した実装の完成

Tips

  • まず削除を実行できる権限を持つ管理 (admin) ユーザーのクラスを作成する。
    • やり方としてはusersテーブル(Userモデル)に論理値(boolean)を取るadmin属性を追加する
      • ただ、このやり方でWebを介した悪意あるユーザー入力をそのまま渡すとadmin権限を乗っ取られたりする
      • Railsではこれだけで自動的に論理値を返すadmin?メソッドが使用可能になる
$ rails console --sandbox  
>> user = User.first  
>> user.admin?  
=> false  
>> user.toggle!(:admin)  
=> true  
>> user.admin?  
=> true  

--sandboxモード ー コンソール終了時全ての変更がロールバックされる
toggle!メソッド ー true <=> false(ON/OFF)を反転させる

各ユーザーのパラメータに対して制限を設けないと以下のようにリクエストを送るだけで管理者権限を与えられ(奪われ)てしまう
/users/17?admin=1

→Strong Parametersを使い、更新してもよい安全な属性だけの変更を許可

def user_params  
  # admin属性の編集は許可しない  
  params.require(:user).permit(:name, :email, :password,  
 :password_confirmation)  
end  

このログへのコメント

コメントはありません
このエントリーをはてなブックマークに追加