ueberauth/guardian のテスト実装
https://github.com/hykw/phoenix-skeleton 記載の初期設定は終わっていることを前提とする。
- guardian の設定
- plugとシリアライザを追加
※検証用なので、password カラムに生パスワードを保存する
$ mix phoenix.gen.model User users email:string password:string
$ mix ecto.migrate
-
router.ex
-
register
-
login
-
logout
-
--no-brunch を指定しているため、js を自分で生成・設置
cat deps/phoenix_html/priv/static/phoenix_html.js >> priv/static/js/app.js
権限は config/config.exs で下記を用意
permissions: %{
user: [
:read,
:write,
],
admin: [
:admin_read,
:admin_write,
]
}
-
/users/
- ログインしてればOK
-
/users/read
- userのread権限でOK
-
/users/write
- userのwrite権限でOK
-
/admin/
- ログインしてればOK(実運用時は修正すること)
-
/admins/read
- adminのadmin_read権限でOK
-
/admins/write
- adminのadmin_write権限でOK
※実運用時は admin_write だけの権限で運用することはない(readも付与されるはず)ので、/admin/ とかのチェックは admin_read 権限で引っ掛けられる。
ログイン時の users.id によって、権限を付与する。各IDの権限は下記
- ID=1: admin(admin_read, admin_write)
- ID=2: admin(admin_write)
- ID=3: admin(admin_read)
- ID=4: user(read, write)
- ID=5: user(write)
- ID=6: user(read)
-
config/config.exs で、guardian_db への hook を追加
- guardian_db が compile 時に確認しているので、設定なしで
mix deps.compile
するとコケル
- guardian_db が compile 時に確認しているので、設定なしで
-
mix.exs で guardian_db を追加
- guardian_db が postgrex に依存してるので、未使用でも postgrex が勝手に入る
-
model を用意
- web/models/guardian_token.ex
-
migration ファイルを直接作成
$ mix ecto.gen.migration guardian_db_guardian_token
- priv/repo/migrations/20160118070916_guardian_db_guardian_token.exs
-
$ mix ecto.migrate