c3-kotatsuneko / backend

0 stars 0 forks source link

`POST /signup`のエンドポイントの実装 #1

Open K-Kizuku opened 1 month ago

K-Kizuku commented 1 month ago

ユーザー作成のエンドポイントを実装する nameとpasswordをリクエストで受け取って、jwt tokenとtoken typeを返す感じで。 FireStoreで使えない文字等があるので、そのバリデーション処理も https://firebase.google.com/docs/firestore/quotas?hl=ja#collections_documents_and_fields

rayfiyo commented 1 week ago

https://github.com/c3-kotatsuneko/backend/issues/1

リクエストのサンプル

{
  "name": "user_name",
  "password": "H0ge"
}

リクエストの型

{
  "name": string,
  "password": string
}

レスポンスのサンプル

{
  "token_type": "Bearer",
  "jwt_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMzUwOTc3Ny1hNGRlLTQ3MjItYWI2Yi00NzZlYTRmZDU2YjkiLCJuYW1lIjoidXNlcl9uYW1lIiwiaWF0IjoxNjkzOTA2ODIwLCJleHAiOjk5OTk5OTk5OTl9.r2nd7bbyOqTW3hNVF7oSfYWjODzlm9Uj_gMlZ-0MA5M"
}

JWTのクレームのサンプル

{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "13509777-a4de-4722-ab6b-476ea4fd56b9",
  "name": "user_name",
  "iat": 1693906820
}
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

レスポンスの型

ステータスコード: 200

{
  "token_type": string,
  "jwt_token": string
}

ステータスコード: 400

{
  "error": "bad_request",
  "message": "リクエストが不適切"
}

ステータスコード: 401

{
  "error": "invalid_credentials",
  "message": "ユーザ名またはパスワードが無効"
}

例外処理