冗談と思ったっか?
本当です。
今回はphauxthという、ElixirのPhoenixをベースにしたライブラリーを紹介しようと思います。
紹介と言っても簡単にサーバーを立てる以外何もしないですが。
それにコード一行も書きません。
それほど強いです。
事前準備
Elixir, Erlang, Phoenixをインストールすること。
自分のバージョンを参考にしていただければと。
erlang 21.3
elixir 1.7.4
phoenix 1.4.6
スタート
今回の戦いは1分しかないので急ごう。
まず前述のライブラリーのインストーラーをインストールする。
直接インストールする方法もあるが、Erlangのバージョンが異なるせいでうまくいかない可能性があるので、自分でビルドしてからarchiveにインストールするのがオススメ。
git clone git@github.com:riverrun/phauxth_installer.git
ビルドとインストール。
cd phauxth_installer/phauxth_new
MIX_ENV=prod mix build
cd ../archives
mix archive.install phauxth_new-2.2.0.ez
新しいPhoenixのプロジェクトを作る。
mix phx.new phauxth_qitta
cd phauxth_qitta
mix ecto.setup
最後、ユーザーを作ろう。
mix phauxth.new --confirm
は?終わり?
DependenciesをGetしてサーバーを立ててみよう。
mix deps.get
iex -S mix phx.server
で http://localhost:4000 を開いたら。
サーバーのコマンドラインを開いたらこのようなメッセージがあるはず、サンプルドメインをlocalhost:4000に変えてアクセスしたらメール認証完了。
%Bamboo.Email{assigns: %{}, attachments: [], bcc: [], cc: [], from: {nil, "admin@example.com"}, headers: %{}, html_body: nil, private: %{}, subject: "Confirm your account", text_body: "Confirm your email here http://www.example.com/confirm?key=SFMyNTY.g3QAAAACZAAEZGF0YXQAAAABbQAAAAVlbWFpbG0AAAAQdGVzdGFjY0B0ZXN0LmNvbWQABnNpZ25lZG4GAPtLPohrAQ.nVfZdoPOn7i1TtTJrgbqdDQzUEhx45Jor8ddYb9C8dw", to: [nil: "testacc@test.com"]}

ログインしてみる。

終わりに
メール認証に、PhauxthはBambooというライブラリーを取り入れています。
最初はローカル用のアダプターをしてるので、簡単に置き換えればそのまま認証機能を利用できます。
自分はAWS SES用のアダプターに変えてみたら30分もかかりませんでした。
一応Authenticationについて、Elixirではguardianというライブラリーが一番有名らしいが、自分はまだ使ったことないので、比較もできません。
もし両方を使った方がいらっしゃればぜひご意見を聞きたいです。