Peas先行公開申請フォームに制限を追加
This commit is contained in:
parent
1d7ab4b2b3
commit
32815c4e78
|
@ -0,0 +1,130 @@
|
|||
"use client";
|
||||
|
||||
import { Icon } from "@iconify/react";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
|
||||
export default function PeasAlphaOpenClient() {
|
||||
const [Load, setLoad] = useState(false);
|
||||
|
||||
const FormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
setLoad(true);
|
||||
|
||||
try {
|
||||
const req = await fetch("/api/peasForm", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
uwuzunetUser: e.currentTarget.uwuzunetUser.value,
|
||||
email: e.currentTarget.email.value,
|
||||
})
|
||||
});
|
||||
|
||||
const res = await req.json();
|
||||
|
||||
if (res.status === "error") {
|
||||
alert(`エラー: ${res.error}`);
|
||||
} else {
|
||||
alert("送信完了");
|
||||
}
|
||||
} catch (err) {
|
||||
alert(`通信エラー: ${err}`);
|
||||
} finally {
|
||||
setLoad(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="content has-text-centered">
|
||||
{Load && (
|
||||
<div style={{ marginBottom: "1rem" }}>
|
||||
<Icon icon="svg-spinners:6-dots-scale" width={32} height={32} />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<h1>Peas公式サーバー先行公開申請</h1>
|
||||
|
||||
<h2>募集期間:2025/07/16 19:00 - 2025/07/23 23:59:59</h2>
|
||||
|
||||
<h2>条件</h2>
|
||||
<ul>
|
||||
<li>GIGAスクール端末での参加は不可</li>
|
||||
<li>13歳未満の場合は保護者の同意が必要</li>
|
||||
<li>利用規約・プライバシーポリシー・NDAへの同意が必要(これらは先行公開時に参加者へ送信)</li>
|
||||
<li>有効なメールアドレスが必要</li>
|
||||
<li>サービスの開発・運営に害を与えない行動範囲での使用</li>
|
||||
<li>参加申請後での申請取り消しは不可(例外はよくありそうな質問2,3)</li>
|
||||
</ul>
|
||||
|
||||
<h2>注意事項</h2>
|
||||
<ul>
|
||||
<li>Last2014が必要な情報をメールで尋ねる可能性があります</li>
|
||||
<li>この先行公開のやり取りはすべてメール上で行われ、Last2014はlast2014yh@yahoo.co.jpのメールアドレスを使用します</li>
|
||||
</ul>
|
||||
|
||||
<h2>よくありそうな質問</h2>
|
||||
<div className="box">
|
||||
Q1. フィルターがかかります。
|
||||
<br />
|
||||
A. GIGAスクール端末は先行公開への参加は拒否させていただきます。
|
||||
<br />
|
||||
その他のフィルターの場合は管理者に解除を申請してください。
|
||||
</div>
|
||||
|
||||
<div className="box">
|
||||
Q2. 利用規約とプライバシーポリシー、NDAを教えてください。
|
||||
<br />
|
||||
A. 条件に記載されている通り先行公開時に電子メールで参加者へ送信させていただきます。
|
||||
<br />
|
||||
確認後に同意いただけない場合は申請の取り消しが可能です。
|
||||
<br />
|
||||
Last2014まで折り返しメールをお願い致します。
|
||||
<br />
|
||||
(全員へ返信ではなくLast2014のみに返信してください)
|
||||
</div>
|
||||
|
||||
<div className="box">
|
||||
Q3. 申請取り消しの例外を教えてください。
|
||||
<br />
|
||||
A. Q2に記載されている通り、
|
||||
<br />
|
||||
利用規約・プライバシーポリシー・NDAのいずれかに同意いただけない場合は
|
||||
<br />
|
||||
申請取り消しが可能です。
|
||||
<br />
|
||||
また、理由をLast2014に送信し承認された場合も申請取り消しが可能です。
|
||||
</div>
|
||||
|
||||
<h1>フォーム</h1>
|
||||
|
||||
<form onSubmit={FormSubmit}>
|
||||
<label className="label">
|
||||
ゆずねっとのID
|
||||
</label>
|
||||
<input className="input" name="uwuzunetUser" placeholder="@から始まるID" />
|
||||
|
||||
<label className="label">
|
||||
メールアドレス
|
||||
</label>
|
||||
<input className="input" type="email" name="email" placeholder="有効なメールアドレス" />
|
||||
|
||||
<label className="label checkbox" style={{ justifyContent: "center" }}>
|
||||
<input type="checkbox" name="ruleCheck" required disabled={Load} />
|
||||
|
||||
当サイトの
|
||||
<Link href="/privacypolicy">
|
||||
プライバシーポリシー
|
||||
</Link>
|
||||
及び<strong>条件</strong>に同意する
|
||||
</label>
|
||||
|
||||
<button
|
||||
className="button"
|
||||
disabled={Load}
|
||||
>
|
||||
送信
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
|
@ -1,130 +1,14 @@
|
|||
"use client";
|
||||
import { isAfter } from "date-fns/fp";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
import { Icon } from "@iconify/react";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
import PeasAlphaOpenClient from "./client";
|
||||
|
||||
export default function PeasAlphaOpen() {
|
||||
const [Load, setLoad] = useState(false);
|
||||
|
||||
const FormSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
setLoad(true);
|
||||
|
||||
try {
|
||||
const req = await fetch("/api/peasForm", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
uwuzunetUser: e.currentTarget.uwuzunetUser.value,
|
||||
email: e.currentTarget.email.value,
|
||||
})
|
||||
});
|
||||
|
||||
const res = await req.json();
|
||||
|
||||
if (res.status === "error") {
|
||||
alert(`エラー: ${res.error}`);
|
||||
} else {
|
||||
alert("送信完了");
|
||||
}
|
||||
} catch (err) {
|
||||
alert(`通信エラー: ${err}`);
|
||||
} finally {
|
||||
setLoad(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="content has-text-centered">
|
||||
{Load && (
|
||||
<div style={{ marginBottom: "1rem" }}>
|
||||
<Icon icon="svg-spinners:6-dots-scale" width={32} height={32} />
|
||||
</div>
|
||||
)}
|
||||
|
||||
<h1>Peas公式サーバー先行公開申請</h1>
|
||||
|
||||
<h2>募集期間:2025/07/16 19:00 - 2025/07/23 23:59:59</h2>
|
||||
|
||||
<h2>条件</h2>
|
||||
<ul>
|
||||
<li>GIGAスクール端末での参加は不可</li>
|
||||
<li>13歳未満の場合は保護者の同意が必要</li>
|
||||
<li>利用規約・プライバシーポリシー・NDAへの同意が必要(これらは先行公開時に参加者へ送信)</li>
|
||||
<li>有効なメールアドレスが必要</li>
|
||||
<li>サービスの開発・運営に害を与えない行動範囲での使用</li>
|
||||
<li>参加申請後での申請取り消しは不可(例外はよくありそうな質問2,3)</li>
|
||||
</ul>
|
||||
|
||||
<h2>注意事項</h2>
|
||||
<ul>
|
||||
<li>Last2014が必要な情報をメールで尋ねる可能性があります</li>
|
||||
<li>この先行公開のやり取りはすべてメール上で行われ、Last2014はlast2014yh@yahoo.co.jpのメールアドレスを使用します</li>
|
||||
</ul>
|
||||
|
||||
<h2>よくありそうな質問</h2>
|
||||
<div className="box">
|
||||
Q1. フィルターがかかります。
|
||||
<br />
|
||||
A. GIGAスクール端末は先行公開への参加は拒否させていただきます。
|
||||
<br />
|
||||
その他のフィルターの場合は管理者に解除を申請してください。
|
||||
</div>
|
||||
|
||||
<div className="box">
|
||||
Q2. 利用規約とプライバシーポリシー、NDAを教えてください。
|
||||
<br />
|
||||
A. 条件に記載されている通り先行公開時に電子メールで参加者へ送信させていただきます。
|
||||
<br />
|
||||
確認後に同意いただけない場合は申請の取り消しが可能です。
|
||||
<br />
|
||||
Last2014まで折り返しメールをお願い致します。
|
||||
<br />
|
||||
(全員へ返信ではなくLast2014のみに返信してください)
|
||||
</div>
|
||||
|
||||
<div className="box">
|
||||
Q3. 申請取り消しの例外を教えてください。
|
||||
<br />
|
||||
A. Q2に記載されている通り、
|
||||
<br />
|
||||
利用規約・プライバシーポリシー・NDAのいずれかに同意いただけない場合は
|
||||
<br />
|
||||
申請取り消しが可能です。
|
||||
<br />
|
||||
また、理由をLast2014に送信し承認された場合も申請取り消しが可能です。
|
||||
</div>
|
||||
|
||||
<h1>フォーム</h1>
|
||||
|
||||
<form onSubmit={FormSubmit}>
|
||||
<label className="label">
|
||||
ゆずねっとのID
|
||||
</label>
|
||||
<input className="input" name="uwuzunetUser" placeholder="@から始まるID" />
|
||||
|
||||
<label className="label">
|
||||
メールアドレス
|
||||
</label>
|
||||
<input className="input" type="email" name="email" placeholder="有効なメールアドレス" />
|
||||
|
||||
<label className="label checkbox" style={{ justifyContent: "center" }}>
|
||||
<input type="checkbox" name="ruleCheck" required disabled={Load} />
|
||||
|
||||
当サイトの
|
||||
<Link href="/privacypolicy">
|
||||
プライバシーポリシー
|
||||
</Link>
|
||||
及び<strong>条件</strong>に同意する
|
||||
</label>
|
||||
|
||||
<button
|
||||
className="button"
|
||||
disabled={Load}
|
||||
>
|
||||
送信
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
if (isAfter(new Date(), new Date("2025-07-23T23:59:59"))) {
|
||||
return (
|
||||
<PeasAlphaOpenClient />
|
||||
);
|
||||
} else {
|
||||
redirect("/");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue