A server created basically according to THIS TUTORIAL
echo -n -e "\
DATABASE_URL=postgres://username:password@localhost/your_database\n\
SPARKPOST_API_KEY='yourapikey'\n\
SENDING_EMAIL_ADDRESS='register@yourdomain.com'\n\
" > .env
then
cargo run
Here is
- Invitation request
- Registration request
Here is
- Login request
- Get-me request
- Logout request
ひとまず postgresql
diesel_cli
を無視して先へ
環境を確認
$ uname -a
Linux DESKTOP-HQJERCJ 4.19.104-microsoft-standard #1 SMP Wed Feb 19 06:37:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -d
Description: Ubuntu 20.04.1 LTS
$ rustc --version && cargo --version
rustc 1.46.0 (04488afe3 2020-08-24)
cargo 1.46.0 (149022b1d 2020-07-17)
やらなくてもいいかもしれないやつ
<!-- $ echo "1.46.0" > rust-toolchain -->
<!-- $ sudo apt install libssl-dev pkg-config -->
Cargo.toml
の [dependencies]
に追記
そのあと色々やるも、どうも argonautica
がらみで build できない
代わりに rust-argon2
を入れて、ひとまず build に成功
models.rs
を作成、 main.rs
を編集
postgresql
diesel_cli
が必要になるので用意
$ sudo apt-get install postgresql-12
<!-- $ sudo apt install libpq-dev -->
$ cargo install diesel_cli --no-default-features --features postgres
データベース接続情報を用意
$ sudo passwd postgres
$ sudo -u postgres createdb simple_auth
$ echo DATABASE_URL=postgres://postgres:password@localhost/simple_auth > .env
At this stage your server should compile
とのことですが、まだ schema.rs
utils.rs
invitation_handler.rs
を作っていないので
コンパイルは通らないはずです
$ diesel setup
$ diesel migration generate users
$ diesel migration generate invitations
up.sql
down.sql
たちを編集
$ diesel migration run
models.rs
を編集
Check your implementation is free from errors/warnings
とありますが当然まだエラーだらけです。ガッハッハ!
errors.rs
を作成
invitation_handler.rs
を作成
そもそもまだ build できてないので curl
しようがないですね
.env
に追記、下表はそのためにやったこと
どこで | なにを |
---|---|
SparkPost | アカウントを作る |
お名前.com | 安いドメインを買う |
SparkPost | 送信ドメイン に追加、 DNS Settings を確認 |
お名前.com | DNS Settings を DNSレコード設定 に追加登録 |
SparkPost | すこし待ってから Verify TXT Record |
SparkPost | APIキー生成 |
email_service.rs
を作成
invitation_handler.rs
のコメントアウト
// use crate::email_service::send_invitation;
// send_invitation(&invitation)
を解除
utils.rs
を作成
argonautica
の代わりにrust-argon2
で書いてみました
models.rs
を編集、
use serde::{Serialize, Deserialize};
を追記
email_service.rs
の Transmission::new_eu
を Transmission::new
に変更
cargo run
するとサーバが起動するので別ターミナルから curl
を叩きます
curl --request POST \
--url http://localhost:3000/api/invitation \
--header 'content-type: application/json' \
--data '{"email":"name@domain.com"}'
登録確認メールが届きました!
register_handler.rs
を作成
main.rs
を編集
- Invitation request
curl --request POST \
--url http://localhost:3000/api/invitation \
--header 'content-type: application/json' \
--data '{"email":"name@domain.com"}'
- Registration request
curl --request POST \
--url http://localhost:3000/api/register/964e9cc1-78af-4ca6-9d63-86f578086b4e \
--header 'content-type: application/json' \
--data '{"password":"password"}'
auth_handler.rs
を作成、 main.rs
を編集
- Login request
curl -i --request POST \
--url http://localhost:3000/api/auth \
--header 'content-type: application/json' \
--data '{"email": "name@domain.com","password":"password"}'
- Get-me request
curl -i -n --request GET \
--url http://localhost:3000/api/auth \
--cookie auth=+dom99l8raCa6EG2poRFhdfdhCNGpmZoRm2M1U78hw9N5HvT5Zhlj9hw/1/DEKV71oi9Ib7NiA== \
; echo
- Logout request
curl -i --request DELETE \
--url http://localhost:3000/api/auth
とりあえず雪見だいふくを食べよう