Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
8c4d22e
feat(backend): add email verification functionality with token manage…
yupix May 20, 2026
88ec75f
refactor(backend): SeaORMのv2で推奨されているエラーハンドリングに変更
yupix May 20, 2026
f184165
refactor(backend): トークンの更新をLuaSccriptで原始的に実行するように
yupix May 20, 2026
835e83f
feat(backend): add urlencoding dependency and use it for token encodi…
yupix May 20, 2026
7c5e840
feat(backend): implement verification email outbox for transactional …
yupix May 20, 2026
b691478
chore(front): openapi.jsonからapi呼び出し用の関数を生成
yupix May 20, 2026
46c9b87
feat(backend): add email_verification_app_url to settings with valida…
yupix May 20, 2026
9b59eaf
feat(backend): enhance verification email outbox with processing stat…
yupix May 21, 2026
3c68222
refactor(backend): streamline email worker processing logic and impro…
yupix May 21, 2026
883f35e
feat(backend): introduce centralized error handling with AppError and…
yupix May 21, 2026
1371d4b
feat(backend): タイミング攻撃の対策
yupix May 21, 2026
4632626
feat(backend): implement verification email job processing with Apali…
yupix May 21, 2026
8c3837c
feat(backend): enhance personal_tokens model with ToSchema and remove…
yupix May 21, 2026
2db4f55
feat(backend): implement user registration and email verification flo…
yupix May 21, 2026
43e5187
feat(backend): update personal_tokens model to include ScopeList for …
yupix May 21, 2026
6e68775
feat(backend): メールアドレスを正規化して保存するように
yupix May 22, 2026
a7b7561
refactor(backend): replace hardcoded baseUrl with variable references…
yupix May 22, 2026
3014bf8
refactor(backend): simplify VerificationEmailJob creation and enhance…
yupix May 22, 2026
04c0cb8
refactor(backend): EnvFilterを二度生成せずに共有するように
yupix May 22, 2026
3b04e4f
feat(backend): verification_email_worker_concurrencyに不適切な数値を入れれないように検…
yupix May 22, 2026
99e6af0
refactor(backend): enhance documentation for verification email job a…
yupix May 22, 2026
a6f311a
feat(backend): アカウント登録成功後に、メール送信のジョブ作成に失敗した場合のエラーハンドリングを強化
yupix May 22, 2026
7113f41
refactor(backend): improve token management logic to ensure idempoten…
yupix May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"tamasfe.even-better-toml",
"bradlc.vscode-tailwindcss",
"vue.volar",
"github.vscode-github-actions"
"github.vscode-github-actions",
"bruno-api-client.bruno"
]
}
7 changes: 7 additions & 0 deletions apps/backend/.env.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# 未指定時は info,sqlx=warn(2秒/30秒ポーリングの空 SELECT をログに出さない)
# RUST_LOG=info,sqlx=warn
database_url=postgresql://username:password@host:port/db_name
redis_url=redis://127.0.0.1:6379
sentry_dsn=
Expand All @@ -6,3 +8,8 @@ smtp_port=587
smtp_username=your_smtp_username
smtp_password=your_smtp_password
[email protected]
# 必須。認証メールのリンク先(本番では実際のフロント URL を指定)
email_verification_app_url=http://localhost:3000
# 認証メール Apalis ワーカー並列度(本番では 2 以上を検討)
# verification_email_worker_concurrency=2
# ジョブ管理 UI: http://localhost:3400/ (/jobs は / へリダイレクト。本番はネットワーク制限を推奨)
187 changes: 187 additions & 0 deletions apps/backend/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions apps/backend/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,21 @@ sentry = { version = "0.48.2", features = ["tower-axum-matched-path"] }
tower = "0.5.2"
argon2 = "0.5.3"
anyhow = "1.0.102"
chrono = { version = "0.4", default-features = false, features = ["clock"] }
thiserror = "2.0.10"
base64 = "0.22.1"
redis_pool = "0.10.0"
redis = { version = "1.2.1", features = ["tokio-comp"] }
url = "2.5"
urlencoding = "2.1"
hmac = "0.13"
sha2 = "0.11"
rand = "0.10"
subtle = "2.4"
strum = { version = "0.28.0", features = ["derive"] }
strum_macros = "0.28"
lettre = { version = "0.11", default-features = false, features = ["builder", "hostname", "smtp-transport","tokio1", "tokio1-rustls-tls"] }
apalis = { version = "1.0.0-rc.9", features = ["limit", "retry", "tracing"] }
apalis-postgres = { version = "1.0.0-rc.8", default-features = false, features = ["migrate", "tokio-comp", "time"] }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "time"] }
apalis-board = { version = "1.0.0-rc.8", features = ["axum", "ui", "events"] }
Comment thread
yupix marked this conversation as resolved.
36 changes: 36 additions & 0 deletions apps/backend/bruno/01-register-verify/01-register.bru
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
meta {
name: 1. 新規登録
type: http
seq: 1
}

post {
url: {{baseUrl}}/v1/auth/register
body: json
auth: none
}

headers {
content-type: application/json
}

body:json {
{
"username": "{{username}}",
"email": "{{email}}",
"password": "{{password}}"
}
}

vars:pre-request {
baseUrl: "{{baseUrl}}"
username: "{{username}}"
email: "{{email}}"
password: "{{password}}"
}

tests {
test("should return 201", function() {
expect(res.status).to.equal(201);
});
}
Loading