();
return (
-
-
- {t("log-in.email")}
-
-
-
- {t("log-in.password")}
-
-
+
+
+
+ {t("log-in.form-title")}
+ {actionData?.error && }
+
+
+ {t("log-in.email")}
+
+
+
+ {t("log-in.password")}
+
+
-
-
-
+
+
+
+
+
+
+
+
+ {t("log-in.3rd-party.title")}
+ {t("log-in.3rd-party.desc")}
+
+ {urls.discord && (
+
+ {t("log-in.3rd-party.discord")}
+
+ )}
+ {urls.google && (
+
+ {t("log-in.3rd-party.google")}
+
+ )}
+ {urls.tumblr && (
+
+ {t("log-in.3rd-party.tumblr")}
+
+ )}
+
+
+
+
);
}
+
+function LoginError({ error }: { error: ApiError }) {
+ const { t } = useTranslation();
+
+ if (error.code !== ErrorCode.UserNotFound) return ;
+
+ return <>{t("log-in.invalid-credentials")}>;
+}
diff --git a/Foxnouns.Frontend/public/locales/en.json b/Foxnouns.Frontend/public/locales/en.json
index 17b3948..d383266 100644
--- a/Foxnouns.Frontend/public/locales/en.json
+++ b/Foxnouns.Frontend/public/locales/en.json
@@ -1,4 +1,18 @@
{
+ "error": {
+ "heading": "An error occurred",
+ "errors": {
+ "authentication-error": "There was an error validating your credentials.",
+ "authentication-required": "You need to log in.",
+ "bad-request": "Server rejected your input, please check anything for errors.",
+ "forbidden": "You are not allowed to perform that action.",
+ "generic-error": "An unknown error occurred.",
+ "internal-server-error": "Server experienced an internal error, please try again later.",
+ "member-not-found": "Member not found, please check your spelling and try again.",
+ "user-not-found": "User not found, please check your spelling and try again."
+ },
+ "title": "Error"
+ },
"navbar": {
"view-profile": "View profile",
"settings": "Settings",
@@ -11,8 +25,18 @@
},
"log-in": {
"title": "Log in",
+ "form-title": "Log in with email",
"email": "Email address",
"password": "Password",
- "log-in-button": "Log in"
+ "log-in-button": "Log in",
+ "register-with-email": "Register with email",
+ "3rd-party": {
+ "title": "Log in with another service",
+ "desc": "If you prefer, you can also log in with one of these services:",
+ "discord": "Log in with Discord",
+ "google": "Log in with Google",
+ "tumblr": "Log in with Tumblr"
+ },
+ "invalid-credentials": "Invalid email address or password, please check your spelling and try again."
}
}