static/data/ に配置した timecard.csv、member.csv、fee.csv を使って、月別の稼働状況と支給額を表示するWebアプリです。
static/index.html は、認証付きDenoサーバーから配信します。月を選ぶと日別の稼働状況・その日の支給額・月合計を表示します。未ログイン時は public/ の認証画面だけを配信し、ログイン後は static/ 以下のコンテンツを配信します。
server.ts はDenoで動作する認証付きサーバーです。WebAuthnのパスキーをサーバーで検証し、認証済みユーザーにだけダッシュボードとCSVを配信します。
.env.exampleを.envにコピーし、ADMIN_NAMEを管理者の名前に変更します。複数人の場合はカンマ区切りで指定します(例:ADMIN_NAME=管理者A,管理者B)。- 本番では
RP_IDを公開ドメイン、ORIGINを公開URL(https://...)に設定します。 deno task startで起動します。- 最初に
ADMIN_NAMEと同じ名前で新規登録すると管理者になります。一般メンバーの登録は管理者承認後に利用可能です。
cp .env.example .env
# .env の ADMIN_NAME / RP_ID / ORIGIN を設定
deno task start管理者画面では、登録者ごとに「利用可にする」「無効化」「削除」を操作できます。セッションCookieはブラウザ終了時に破棄され、サーバー側でも3時間で失効します。data/auth.json にはパスフレーズのハッシュとパスキーの公開鍵だけが保存され、秘密鍵は保存しません。
本番公開時は、DenoサーバーをHTTPSリバースプロキシの背後で動かしてください。WebAuthnは通常、HTTPS(またはlocalhost)でのみ利用できます。