1分でセッション、メール認証ありのユーザー付きサーバーを立てる


冗談と思ったっか?

本当です。

今回は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 を開いたら。

スクリーンショット 2019-06-24 15.46.21.png

new userをクリック、サインアップ。

スクリーンショット 2019-06-24 15.47.26.png

サーバーのコマンドラインを開いたらこのようなメッセージがあるはず、サンプルドメインを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"]}

スクリーンショット 2019-06-24 15.51.12.png

ログインしてみる。

スクリーンショット 2019-06-24 15.51.36.png


終わりに

メール認証に、PhauxthはBambooというライブラリーを取り入れています。

最初はローカル用のアダプターをしてるので、簡単に置き換えればそのまま認証機能を利用できます。

自分はAWS SES用のアダプターに変えてみたら30分もかかりませんでした。

一応Authenticationについて、Elixirではguardianというライブラリーが一番有名らしいが、自分はまだ使ったことないので、比較もできません。

もし両方を使った方がいらっしゃればぜひご意見を聞きたいです。