From 48689c639736fbff133d299b66d9bd255bf4c0ef Mon Sep 17 00:00:00 2001 From: kenken714 Date: Sun, 10 Nov 2024 04:39:36 +0900 Subject: [PATCH 1/2] add --- docs/chapter2/section1/0_setup.md | 2 +- docs/chapter2/section1/1_account.md | 543 ++++++++++-------- docs/chapter2/section1/src/0_create-table.sql | 9 + docs/chapter2/section1/src/1_account/auth.rs | 39 ++ docs/chapter2/section1/src/1_account/users.rs | 31 + docs/chapter2/section1/src/first/handler.rs | 1 + .../chapter2/section1/src/first/repository.rs | 1 - 7 files changed, 385 insertions(+), 241 deletions(-) create mode 100644 docs/chapter2/section1/src/0_create-table.sql create mode 100644 docs/chapter2/section1/src/1_account/auth.rs create mode 100644 docs/chapter2/section1/src/1_account/users.rs diff --git a/docs/chapter2/section1/0_setup.md b/docs/chapter2/section1/0_setup.md index 61f77fd4..e1343094 100644 --- a/docs/chapter2/section1/0_setup.md +++ b/docs/chapter2/section1/0_setup.md @@ -23,7 +23,7 @@ DB_DATABASE="world" 4. 以下のコマンドを実行し、クレートの依存関係を追加しましょう。 ```sh -$ cargo add axum anyhow serde serde_json tokio --features tokio/full,serde/derive,axum/macros +$ cargo add axum anyhow serde serde_json tokio bcrypt --features tokio/full,serde/derive,axum/macros $ cargo add async-session tracing tracing-subscriber --features tracing-subscriber/env-filter,tracing-subscriber/fmt $ cargo add tower-http --features add-extension,trace,fs ``` diff --git a/docs/chapter2/section1/1_account.md b/docs/chapter2/section1/1_account.md index 86cc252f..97c8b362 100644 --- a/docs/chapter2/section1/1_account.md +++ b/docs/chapter2/section1/1_account.md @@ -2,51 +2,40 @@ ## 本日の目的 -`main.go` の handler の設定部分を見てみましょう。 - -```go -func main() { - // .envファイルから環境変数を読み込み - err := godotenv.Load(".env") - if err != nil { - log.Fatal(err) - } - - // データーベースの設定 - jst, err := time.LoadLocation("Asia/Tokyo") - if err != nil { - log.Fatal(err) - } - conf := mysql.Config{ - User: os.Getenv("DB_USERNAME"), - Passwd: os.Getenv("DB_PASSWORD"), - Net: "tcp", - Addr: os.Getenv("DB_HOSTNAME") + ":" + os.Getenv("DB_PORT"), - DBName: os.Getenv("DB_DATABASE"), - ParseTime: true, - Collation: "utf8mb4_unicode_ci", - Loc: jst, - } - - // データベースに接続 - db, err := sqlx.Open("mysql", conf.FormatDSN()) - if err != nil { - log.Fatal(err) - } - - h := handler.NewHandler(db) // [!code hl] - e := echo.New() // [!code hl] - // [!code hl] - e.GET("/cities/:cityName", h.GetCityInfoHandler) // [!code hl] - e.POST("/cities", h.PostCityHandler) // [!code hl] - // [!code hl] - err = e.Start(":8080") // [!code hl] - if err != nil { - log.Fatal(err) - } +`main.rs` と `handler.rs` の handler の設定部分を見てみましょう。 + +### main.rs +```rs +...(省略) +#[tokio::main] +async fn main() -> anyhow::Result<()> { + tracing_subscriber::fmt() + .with_env_filter(EnvFilter::try_from_default_env().unwrap_or("info".into())) + .init(); + + let app_state = repository::Repository::connect().await?; // [!code hl] + let app = handler::make_router(app_state).layer(TraceLayer::new_for_http()); // [!code hl] + let listener = tokio::net::TcpListener::bind("0.0.0.0:8080").await?; // [!code hl] + + tracing::info!("listening on {}", listener.local_addr()?); + axum::serve(listener, app).await.unwrap(); // [!code hl] + Ok(()) } ``` -今回の目標は、 `/cities/` で始まる api 2 つ (`getCityInfoHandler`, `postCityHandler`) に対して、 + +### handler.rs +```rs +...(省略) +pub fn make_router(app_state: Repository) -> Router { + let city_router = Router::new() // [!code hl] + .route("/city/:city_name", get(country::get_city_handler)) // [!code hl] + .route("/cities", post(country::post_city_handler)); // [!code hl] + + Router::new().nest("/", city_router).with_state(app_state) // [!code hl] +} +``` + +今回の目標は、 `/cities/` で始まる api 2 つ (`get_city_handler`, `post_city_handler`) に対して、 ログインしているかどうかを判定して、ログインしていなければリクエストを拒否するように実装することです。 用語を使わずに言えば、`City` を新たに追加したり、`City` の情報を得るのにログインを必須にする、ということです。 @@ -57,109 +46,136 @@ func main() { 2. ログインを実装する 3. ログインしないと利用できないようにする -## ライブラリのインストール - -新たにライブラリを導入するので以下のコマンドを実行します。 - -```sh -go get -u github.com/labstack/echo-contrib/session -go get -u github.com/srinathgs/mysqlstore -``` - では、アカウントの作成を実装していきましょう。 アカウントの作成は、以下の手順で進んでいきます。 -1. クライアントから`Username`と`Password`をリクエストとして受け取る -2. `Username`と`Password`のバリデーション(値が正当かのチェック)を行う -3. 既に同じ`Username`のユーザーが登録されていないかチェックする -4. `Password`をハッシュ化する +1. クライアントから`username`と`password`をリクエストとして受け取る +2. `username`と`password`のバリデーション(値が正当かのチェック)を行う +3. 既に同じ`username`のユーザーが登録されていないかチェックする +4. `password`をハッシュ化する 5. ユーザーをデーターベースに登録する ## 下準備 ### テーブルの作成 -アカウントを管理するテーブル `users` を作成しましょう。`main.go`に以下を追加します。 - -```go -func main() { - (省略) - // データベースに接続 - db, err := sqlx.Open("mysql", conf.FormatDSN()) - if err != nil { - log.Fatal(err) - } - - // usersテーブルが存在しなかったら、usersテーブルを作成する // [!code ++] - _, err = db.Exec("CREATE TABLE IF NOT EXISTS users (Username VARCHAR(255) PRIMARY KEY, HashedPass VARCHAR(255))") // [!code ++] - if err != nil { // [!code ++] - log.Fatal(err) // [!code ++] - } // [!code ++] - - h := handler.NewHandler(db) - e := echo.New() - (省略) -} +アカウントを管理するテーブル `users` を作成しましょう。そのために、マイグレーションファイルを作成します。 + +マイグレーションとは、データベースのスキーマの変更内容をファイルに記述しておき、それを実行して更新していく手法です。 + +`naro-rs-template-backend` のルートディレクトリに移動し、以下のコマンドを実行してください。 +```sh +$ mkdir migrations && touch migrations/0_create-table.sql ``` + +`0_create_table.sql` に以下の内容を記述してください。 + +<<<@/chapter2/section1/src/0_create-table.sql + + :::tip パスワードをデーターベースに保存する際はハッシュ化するのが当たり前なので、ハッシュ化されたパスワードのためのデータベーステーブルのカラム名には`password`を使うのが一般的です。 -今回は混乱しないように`HashedPass`という名前でカラムを作成しています。 +今回は混乱しないように`hashed_pass`という名前でカラムを作成しています。 ::: -## SignUpHandler の実装 +次に、マイグレーションを実行するために、`main.rs` と `repository.rs` を編集していきます。 -続いて、アカウントを作成するハンドラーである `SignUpHandler` を `handler.go` に実装していきましょう。 +### main.rs +```rs +#[tokio::main] +async fn main() -> anyhow::Result<()> { + tracing_subscriber::fmt() + .with_env_filter(EnvFilter::try_from_default_env().unwrap_or("info".into())) + .init(); -```go -func (h *Handler) SignUpHandler(c echo.Context) error { // [!code ++] -} // [!code ++] + let app_state = repository::Repository::connect().await?; + app_state.migrate().await?; // [!code ++] + let app = handler::make_router(app_state).layer(TraceLayer::new_for_http()); + let listener = tokio::net::TcpListener::bind("127.0.0.1:8080").await?; + + tracing::info!("listening on {}", listener.local_addr()?); + axum::serve(listener, app).await.unwrap(); + Ok(()) +} ``` -この `SignUpHandler` に以下のものを順番に実装していきます。 +### repository.rs +```rs +...(省略) +impl Repository { + pub async fn connect() -> anyhow::Result { + let options = get_options()?; + let pool = sqlx::MySqlPool::connect_with(options).await?; + Ok(Self { + pool, + //session_store: MySqlSessionStore::new(pool.clone()), + }) + } + pub async fn migrate(&self) -> anyhow::Result<()> { // [!code ++] + sqlx::migrate!("./migrations").run(&self.pool).await?; // [!code ++] + Ok(()) // [!code ++] + } // [!code ++] +} +...(省略) +``` -### 1. リクエストの受け取り +マイグレーションを実行するメソッド `migrate` を追加しました。 +これにより、データベースに接続した後 `0_create_table.sql` の内容が実行され、`users` テーブルが作成されます。 -`SignUpHandler` の外に以下の構造体を追加します。 +## signup の ハンドラ の実装 -```go -type LoginRequestBody struct { // [!code ++] - Username string `json:"username,omitempty" form:"username"` // [!code ++] - Password string `json:"password,omitempty" form:"password"` // [!code ++] +続いて、アカウントを作成するハンドラーである `sign_up` を `handler/auth.rs` に実装していきましょう。 + +ファイル `handler/auth.rs` を作成し、以下を記述してください。 + +```rs +pub async fn sign_up( // [!code ++] + State(state): State, // [!code ++] + Json(body): Json, // [!code ++] +) -> Result { // [!code ++] } // [!code ++] ``` -次に、`SignUpHandler`の中に以下を追加します。 +また、`handler.rs` に以下の行を追加してください。 -```go -func (h *Handler) SignUpHandler(c echo.Context) error { - // リクエストを受け取り、reqに格納する // [!code ++] - req := LoginRequestBody{} // [!code ++] - err := c.Bind(&req) // [!code ++] - if err != nil { // [!code ++] - return echo.NewHTTPError(http.StatusBadRequest, "bad request body") // [!code ++] - } // [!code ++] -} +```rs +...(省略) +use crate::repository::Repository; + +mod auth; // [!code ++] +mod country; +...(省略) ``` -ここでは、req 変数に requestBody の json 情報を格納しています。 -`LoginRequestBody` 型を見れば分かる通り、ここには UserName と Password が格納されています。 +この `sign_up` ハンドラに以下のものを順番に実装していきます。 + +### 1. リクエストの受け取り + +`sign_up` ハンドラの外に以下の構造体を追加します。 + +```rs +#[derive(Deserialize)] // [!code ++] +pub struct SignUp { // [!code ++] + pub username: String, // [!code ++] + pub password: String, // [!code ++] +} // [!code ++] +``` + +`sign_up` ハンドラの body 変数に requestBody の json 情報が格納されます。 +`SignUp` 型を見れば分かる通り、ここには username と password が格納されています。 ### 2. リクエストの検証 -```go -func (h *Handler) SignUpHandler(c echo.Context) error { - // リクエストを受け取り、reqに格納する - req := LoginRequestBody{} - err := c.Bind(&req) - if err != nil { - return echo.NewHTTPError(http.StatusBadRequest, "bad request body") - } - - // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) // [!code ++] - if req.Password == "" || req.Username == "" { // [!code ++] - return c.String(http.StatusBadRequest, "Username or Password is empty") // [!code ++] - } // [!code ++] +```rs +pub async fn sign_up( + State(state): State, + Json(body): Json, +) -> Result { + // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) // [!code ++] + if body.username.is_empty() || body.password.is_empty() { // [!code ++] + return Err(StatusCode::BAD_REQUEST); // [!code ++] + } // [!code ++] } ``` @@ -168,163 +184,212 @@ func (h *Handler) SignUpHandler(c echo.Context) error { ### 3. アカウントの存在チェック -```go -func (h *Handler) SignUpHandler(c echo.Context) error { - (省略) - // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) - if req.Password == "" || req.Username == "" { - return c.String(http.StatusBadRequest, "Username or Password is empty") - } - - // 登録しようとしているユーザーが既にデータベース内に存在するかチェック// [!code ++] - var count int// [!code ++] - err = h.db.Get(&count, "SELECT COUNT(*) FROM users WHERE Username=?", req.Username)// [!code ++] - if err != nil {// [!code ++] - log.Println(err)// [!code ++] - return c.NoContent(http.StatusInternalServerError)// [!code ++] - }// [!code ++] - // 存在したら409 Conflictを返す// [!code ++] - if count > 0 {// [!code ++] - return c.String(http.StatusConflict, "Username is already used")// [!code ++] - }// [!code ++] -} -``` +ユーザーに関するデータベースの操作を、`repository/users.rs` に追加していきます。 -`"SELECT COUNT(*) FROM users WHERE Username=?", req.Username` で、指定された UserName を持つユーザーの数を見ます。 +ファイル `repository/users.rs` を作成し、以下を記述してください。 -結果は `count` 変数に格納されます。 +```rs +use super::Repository; // [!code ++] -もしすでに居た場合は、そのユーザーが存在しているので処理は受け付けず、 409 (Conflict) をレスポンスします。 +impl Repository { // [!code ++] + pub async fn is_exist_username(&self, username: String) -> sqlx::Result { // [!code ++] + let result = sqlx::query("SELECT * FROM users WHERE username = ?") // [!code ++] + .bind(&username) // [!code ++] + .fetch_optional(&self.pool) // [!code ++] + .await?; // [!code ++] + Ok(result.is_some()) // [!code ++] + } // [!code ++] +} // [!code ++] +``` -### 4. パスワードのハッシュ化 +また、`repository.rs` に以下の行を追加してください。 -ここまでは「リクエストを実行しても本当に問題がないか」を検証していました。 -ユーザーはまだ存在していなくて、パスワードとユーザー名がある事まで確認できれば、リクエストを処理できます。なのでここから処理を行っていきます。 +```rs +use sqlx::mysql::MySqlConnectOptions; +use sqlx::mysql::MySqlPool; +use std::env; -```go -func (h *Handler) SignUpHandler(c echo.Context) error { - (省略) - - // パスワードをハッシュ化する// [!code ++] - hashedPass, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost)// [!code ++] - // ハッシュ化に失敗したら500 InternalServerErrorを返す// [!code ++] - if err != nil {// [!code ++] - log.Println(err)// [!code ++] - return c.NoContent(http.StatusInternalServerError)// [!code ++] - }// [!code ++] -} +pub mod country; +pub mod users; // [!code ++] + +...(省略) ``` -まずはパスワードのハッシュ化です。 **パスワードは平文で保存してはいけません!** パスワードを DB に保管するときは、必ずハッシュ化をしましょう。 +`SELECT * FROM users WHERE username=?` で、指定された UserName を持つユーザーを取得します。 +このとき、`fetch_optional` を使うことにより、ユーザーを高々 1 つ取得し、`Option` 型で返されます。 + +次に、`sign_up` ハンドラに以下のコードを追加してください。 + +```rs +pub async fn sign_up( + State(state): State, + Json(body): Json, +) -> Result { + // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) + if body.username.is_empty() || body.password.is_empty() { + return Err(StatusCode::BAD_REQUEST); + } + + // 登録しようとしているユーザーが既にデータベース内に存在したら409 Conflictを返す // [!code ++] + if let Ok(true) = state.is_exist_username(body.username.clone()).await { // [!code ++] + return Err(StatusCode::CONFLICT); // [!code ++] + } // [!code ++] +} +``` -:::info 参考: ソルトについて -ソルトという手法を用いることで、事前計算されたテーブルを使用する攻撃から守ることができます。 +もし同じ username を持つユーザーが存在した場合は処理を受け付けず、 409 (Conflict) をレスポンスします。 -今回は、`bcrypt`というライブラリがハッシュ化を行っています。 +### 4. ユーザーの作成 -参考: -::: - -`bcrypt`というのはいい感じにハッシュ化してくれるライブラリです。セキュリティに関わるものは自分で実装すると穴だらけになりやすいので、積極的にライブラリに頼りましょう。 +ここまでは「リクエストを実行しても本当に問題がないか」を検証していました。 +ユーザーはまだ存在していなくて、パスワードとユーザー名がある事まで確認できれば、リクエストを処理できます。なのでここから処理を行っていきます。 -### 5. ユーザーの作成 - -```go -func (h *Handler) SignUpHandler(c echo.Context) error { - (省略) - - // ユーザーを登録する// [!code ++] - _, err = h.db.Exec("INSERT INTO users (Username, HashedPass) VALUES (?, ?)", req.Username, hashedPass)// [!code ++] - // 登録に失敗したら500 InternalServerErrorを返す// [!code ++] - if err != nil {// [!code ++] - log.Println(err)// [!code ++] - return c.NoContent(http.StatusInternalServerError)// [!code ++] - }// [!code ++] - // 登録に成功したら201 Createdを返す// [!code ++] - return c.NoContent(http.StatusCreated)// [!code ++] +まずは、`username` を持つ users レコードをデータベースに追加しましょう。 +SQL のインテグレーションにて、`id INT NOT NULL PRIMARY KEY AUTO_INCREMENT` と指定しているため、自動でインクリメントされた `id` も同時に追加されます。 + +`repository/users.rs` に以下のコードを追加してください。 + +```rs +use super::Repository; + +impl Repository { + pub async fn is_exist_username(&self, username: String) -> sqlx::Result { + let result = sqlx::query("SELECT * FROM users WHERE username = ?") + .bind(&username) + .fetch_optional(&self.pool) + .await?; + Ok(result.is_some()) + } + + pub async fn create_user(&self, username: String) -> sqlx::Result { // [!code ++] + let result = sqlx::query("INSERT INTO users (username) VALUES (?)") // [!code ++] + .bind(&username) // [!code ++] + .execute(&self.pool) // [!code ++] + .await?; // [!code ++] + Ok(result.last_insert_id()) // [!code ++] + } // [!code ++] } ``` -`Username`, `HashedPassword` を持つ User レコードをデータベースに追加しましょう。 +`create_user` メソッドの戻り値として、追加されたユーザーの `id` を返しています。 + +また、`handler/auth.rs` に以下のコードを追加してください。 + +```rs +pub async fn sign_up( + State(state): State, + Json(body): Json, +) -> Result { + // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) + if body.username.is_empty() || body.password.is_empty() { + return Err(StatusCode::BAD_REQUEST); + } + + // 登録しようとしているユーザーが既にデータベース内に存在したら409 Conflictを返す + if let Ok(true) = state.is_exist_username(body.username.clone()).await { + return Err(StatusCode::CONFLICT); + } + + // ユーザーを作成する // [!code ++] + let id = state // [!code ++] + .create_user(body.username.clone()) // [!code ++] + .await // [!code ++] + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; // [!code ++] +} +``` -何かしらのエラーによって生成できなかった場合は err にその内容が詰め込まれます。 +何かしらのエラーによってユーザーを生成できなかった場合は Error が返されます。 ユーザーのリクエストは問題なく、ここでエラーが発生した場合はサーバー側で何かが発生したということなので、 500 (InternalServer Error) をレスポンスします。 ここで、どんなエラーが発生したかをユーザーに直接伝えるのはセキュリティの観点から △ です。 ログで出力するだけにして、ユーザー側には 500 という情報だけ渡しましょう。 -もし err がなければ、それはうまく成功したということです。 201 (Created) をレスポンスしましょう! +### 5. パスワードのハッシュ化と保存 -## 完成! -これで実装は終わりです。すべてを実装したら、以下のようになります。 +次にパスワードのハッシュ化です。 **パスワードは平文で保存してはいけません!** パスワードを DB に保管するときは、必ずハッシュ化をしましょう。 + +`repository/users.rs` に以下のコードを追加してください。 + +```rs +use super::Repository; + +impl Repository { + ...(省略) + + pub async fn save_user_password(&self, id: i32, password: String) -> anyhow::Result<()> { // [!code ++] + let hash = bcrypt::hash(password, bcrypt::DEFAULT_COST)?; // [!code ++] + + sqlx::query("INSERT INTO user_passwords (id, hashed_pass) VALUES (?, ?)") // [!code ++] + .bind(id) // [!code ++] + .bind(hash) // [!code ++] + .execute(&self.pool) // [!code ++] + .await?; // [!code ++] -```go -type LoginRequestBody struct { - Username string `json:"username,omitempty" form:"username"` - Password string `json:"password,omitempty" form:"password"` + Ok(()) // [!code ++] + } // [!code ++] } +``` + +また、`handler/auth.rs` に以下のコードを追加してください。 + +```rs +pub async fn sign_up( + State(state): State, + Json(body): Json, +) -> Result { + ...(省略) + + // ユーザーを作成する + let id = state + .create_user(body.username.clone()) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + + // パスワードを保存する // [!code ++] + state // [!code ++] + .save_user_password(id as i32, body.password.clone()) // [!code ++] + .await // [!code ++] + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; // [!code ++] -func (h *Handler) SignUpHandler(c echo.Context) error { - // リクエストを受け取り、reqに格納する - req := LoginRequestBody{} - err := c.Bind(&req) - if err != nil { - return echo.NewHTTPError(http.StatusBadRequest, "bad request body") - } - - // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) - if req.Password == "" || req.Username == "" { - return c.String(http.StatusBadRequest, "Username or Password is empty") - } - - // 登録しようとしているユーザーが既にデータベース内に存在するかチェック - var count int - err = h.db.Get(&count, "SELECT COUNT(*) FROM users WHERE Username=?", req.Username) - if err != nil { - log.Println(err) - return c.NoContent(http.StatusInternalServerError) - } - // 存在したら409 Conflictを返す - if count > 0 { - return c.String(http.StatusConflict, "Username is already used") - } - - // パスワードをハッシュ化する - hashedPass, err := bcrypt.GenerateFromPassword([]byte(req.Password), bcrypt.DefaultCost) - // ハッシュ化に失敗したら500 InternalServerErrorを返す - if err != nil { - log.Println(err) - return c.NoContent(http.StatusInternalServerError) - } - - // ユーザーを登録する - _, err = h.db.Exec("INSERT INTO users (Username, HashedPass) VALUES (?, ?)", req.Username, hashedPass) - // 登録に失敗したら500 InternalServerErrorを返す - if err != nil { - log.Println(err) - return c.NoContent(http.StatusInternalServerError) - } - // 登録に成功したら201 Createdを返す - return c.NoContent(http.StatusCreated) + Ok(StatusCode::CREATED) // [!code ++] } ``` -最後に、`main.go` に、先ほど書いたハンドラーを追加しましょう。 +:::info 参考: ソルトについて +ソルトという手法を用いることで、事前計算されたテーブルを使用する攻撃から守ることができます。 + +今回は、`bcrypt`というライブラリがハッシュ化を行っています。 + +参考: +::: + +`bcrypt`というのはいい感じにハッシュ化してくれるライブラリです。セキュリティに関わるものは自分で実装すると穴だらけになりやすいので、積極的にライブラリに頼りましょう。 + +全ての操作でエラーが無かったら、最後に 201 (Created) をレスポンスしましょう! + +## 完成! +これで実装は終わりです。すべてを実装したら、以下のようになります。 + +::: code-group +<<<@/chapter2/section1/src/1_account/auth.rs{rs:line-numbers}[auth.rs] +<<<@/chapter2/section1/src/1_account/users.rs{rs:line-numbers}[users.rs] +::: -```go -func main(){ - (省略) - h := handler.NewHandler(db) - e := echo.New() +最後に、`handler.rs` に、先ほど書いたハンドラーを追加しましょう。 - e.POST("/signup", h.SignUpHandler) // [!code ++] +```rs +pub fn make_router(app_state: Repository) -> Router { + let city_router = Router::new() + .route("/cities/:city_name", get(country::get_city_handler)) + .route("/cities", post(country::post_city_handler)); - e.GET("/cities/:cityName", h.GetCityInfoHandler) - e.POST("/cities", h.PostCityHandler) + let auth_router = Router::new().route("/signup", post(auth::sign_up)); // [!code ++] - err = e.Start(":8080") - (省略) + Router::new() + .nest("/", city_router) + .nest("/", auth_router) // [!code ++] + .with_state(app_state) } ``` diff --git a/docs/chapter2/section1/src/0_create-table.sql b/docs/chapter2/section1/src/0_create-table.sql new file mode 100644 index 00000000..26bdd418 --- /dev/null +++ b/docs/chapter2/section1/src/0_create-table.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS users ( + id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, + username VARCHAR(255) NOT NULL +); + +CREATE TABLE IF NOT EXISTS user_passwords ( + id VARCHAR(255) NOT NULL PRIMARY KEY, + hashed_pass VARCHAR(255) NOT NULL +); \ No newline at end of file diff --git a/docs/chapter2/section1/src/1_account/auth.rs b/docs/chapter2/section1/src/1_account/auth.rs new file mode 100644 index 00000000..47767ea7 --- /dev/null +++ b/docs/chapter2/section1/src/1_account/auth.rs @@ -0,0 +1,39 @@ +use axum::{extract::State, http::StatusCode, Json}; +use serde::Deserialize; + +use crate::repository::Repository; + +#[derive(Deserialize)] +pub struct SignUp { + pub username: String, + pub password: String, +} + +pub async fn sign_up( + State(state): State, + Json(body): Json, +) -> Result { + // バリデーションする(PasswordかUsernameが空文字列の場合は400 BadRequestを返す) + if body.username.is_empty() || body.password.is_empty() { + return Err(StatusCode::BAD_REQUEST); + } + + // 登録しようとしているユーザーが既にデータベース内に存在したら409 Conflictを返す + if let Ok(true) = state.is_exist_username(body.username.clone()).await { + return Err(StatusCode::CONFLICT); + } + + // ユーザーを作成する + let id = state + .create_user(body.username.clone()) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + + // パスワードを保存する + state + .save_user_password(id as i32, body.password.clone()) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + + Ok(StatusCode::CREATED) +} diff --git a/docs/chapter2/section1/src/1_account/users.rs b/docs/chapter2/section1/src/1_account/users.rs new file mode 100644 index 00000000..db0c43b3 --- /dev/null +++ b/docs/chapter2/section1/src/1_account/users.rs @@ -0,0 +1,31 @@ +use super::Repository; + +impl Repository { + pub async fn is_exist_username(&self, username: String) -> sqlx::Result { + let result = sqlx::query("SELECT * FROM users WHERE username = ?") + .bind(&username) + .fetch_optional(&self.pool) + .await?; + Ok(result.is_some()) + } + + pub async fn create_user(&self, username: String) -> sqlx::Result { + let result = sqlx::query("INSERT INTO users (username) VALUES (?)") + .bind(&username) + .execute(&self.pool) + .await?; + Ok(result.last_insert_id()) + } + + pub async fn save_user_password(&self, id: i32, password: String) -> anyhow::Result<()> { + let hash = bcrypt::hash(password, bcrypt::DEFAULT_COST)?; + + sqlx::query("INSERT INTO user_passwords (id, hashed_pass) VALUES (?, ?)") + .bind(id) + .bind(hash) + .execute(&self.pool) + .await?; + + Ok(()) + } +} diff --git a/docs/chapter2/section1/src/first/handler.rs b/docs/chapter2/section1/src/first/handler.rs index ccc592a5..1e898c16 100644 --- a/docs/chapter2/section1/src/first/handler.rs +++ b/docs/chapter2/section1/src/first/handler.rs @@ -4,6 +4,7 @@ use axum::{ }; use crate::repository::Repository; + mod country; pub fn make_router(app_state: Repository) -> Router { diff --git a/docs/chapter2/section1/src/first/repository.rs b/docs/chapter2/section1/src/first/repository.rs index c2b171a0..797ad74d 100644 --- a/docs/chapter2/section1/src/first/repository.rs +++ b/docs/chapter2/section1/src/first/repository.rs @@ -1,4 +1,3 @@ -//use async_sqlx_session::MySqlSessionStore; use sqlx::mysql::MySqlConnectOptions; use sqlx::mysql::MySqlPool; use std::env; From c74b3ca659ce08aa0068863b3de427810c8d81ca Mon Sep 17 00:00:00 2001 From: kenken714 Date: Sun, 10 Nov 2024 04:48:33 +0900 Subject: [PATCH 2/2] feat: update images --- .../section1/images/3/database1-user.png | Bin 37452 -> 12359 bytes .../section1/images/3/postman2-signup.png | Bin 31151 -> 38443 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/chapter2/section1/images/3/database1-user.png b/docs/chapter2/section1/images/3/database1-user.png index 612765c2cb0e3ae4eaf1512104084461e05bd0ce..c56a61ede03f0fb18094840750ec74cf8aa6cf80 100644 GIT binary patch literal 12359 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 W`te+6Kr_%&15%V%ldF<35B(qACLg!} literal 37452 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 literal 31151 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
j%aaEc6M$KGd9yEYM>G4$kH6{X4~-unF;d)uFn