タグ・著者・カテゴリーの作成は「ユーザー権限が管理者もしくは編集者の場合」に限られており、ライター権限のユーザーは作成することが出来ません。しかし各項目の一覧表示や編集、削除はライター権限のユーザーでも実行出来てしまいます。またライターが権限を許可されていないページにアクセスした場合、サーバーエラーが発生してしまう。
権限設定の記述を見つけ、ライターにタグ・著者・カテゴリーの一覧表示・編集・削除を出来ないようにする。権限エラーが発生した際に、403エラーのページを表示させる(403.htmlは、public配下に新たに作成する)
<aside> 💡 ①権限設定の記述箇所の発見
②「ライター」権限の場合、「ダグ」「著者」「カテゴリー」この項目の一覧表示機能、編集機能及び削除機能をできないようにする
③上記のような権限外の操作を行った場合、「403」表示になるように設定する
</aside>
課題のアプリケーションでは、管理者、編集者、ライターというユーザー権限が存在しています。それぞれ「管理者は全ての権限をもつ」「編集者は記事の作成/更新は出来るが、ユーザーの作成/更新はできない」といった具合に、出来ること/出来ないことが分かれています。
このような権限ごとの判定を行いたい場合は、
if @user.admin? || @user.writer?
~~~(管理者もしくはライターが出来ること)
end
といった分岐を都度走らせても良いのですが、
などのデメリットも存在しており、出来れば一箇所に権限管理を集中させたいところです。
Railsでは、そのような権限管理用のgemとして、pundit や cancancan、rolify などが存在しています。