();
+
+ if (data.hasAccount) {
+ const username = data.user!.username;
+
+ return (
+ <>
+ {t("log-in.callback.success")}
+
+
+ {/* @ts-expect-error react-i18next handles interpolation here */}
+ Welcome back, @{{username}}!
+
+
+ {t("log-in.callback.redirect-hint")}
+
+ >
+ );
+ }
+
+ return (
+
+
+ {t("log-in.callback.remote-username.discord")}
+
+
+
+ {t("log-in.callback.username")}
+
+
+
+
+
+
+ );
+}
diff --git a/Foxnouns.Frontend/app/routes/auth.log-in/route.tsx b/Foxnouns.Frontend/app/routes/auth.log-in/route.tsx
index 3d0d387..1f55fda 100644
--- a/Foxnouns.Frontend/app/routes/auth.log-in/route.tsx
+++ b/Foxnouns.Frontend/app/routes/auth.log-in/route.tsx
@@ -10,7 +10,7 @@ import Form from "react-bootstrap/Form";
import Button from "react-bootstrap/Button";
import ButtonGroup from "react-bootstrap/ButtonGroup";
import ListGroup from "react-bootstrap/ListGroup";
-import { Container, Row, Col } from "react-bootstrap";
+import { Row, Col } from "react-bootstrap";
import { useTranslation } from "react-i18next";
import i18n from "~/i18next.server";
import serverRequest, { getToken, writeCookie } from "~/lib/request.server";
@@ -72,7 +72,7 @@ export default function LoginPage() {
const actionData = useActionData();
return (
-
+ <>
{t("log-in.form-title")}
@@ -121,7 +121,7 @@ export default function LoginPage() {
-
+ >
);
}
diff --git a/Foxnouns.Frontend/public/locales/en.json b/Foxnouns.Frontend/public/locales/en.json
index d383266..83455f7 100644
--- a/Foxnouns.Frontend/public/locales/en.json
+++ b/Foxnouns.Frontend/public/locales/en.json
@@ -1,42 +1,52 @@
{
- "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",
- "log-out": "Log out",
- "log-in": "Log in or sign up",
- "theme": "Theme",
- "theme-auto": "Automatic",
- "theme-dark": "Dark",
- "theme-light": "Light"
- },
- "log-in": {
- "title": "Log in",
- "form-title": "Log in with email",
- "email": "Email address",
- "password": "Password",
- "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."
- }
+ "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",
+ "log-out": "Log out",
+ "log-in": "Log in or sign up",
+ "theme": "Theme",
+ "theme-auto": "Automatic",
+ "theme-dark": "Dark",
+ "theme-light": "Light"
+ },
+ "log-in": {
+ "callback": {
+ "success": "Successfully logged in!",
+ "success-link": "Welcome back, <1>@{{username}}1>!",
+ "redirect-hint": "If you're not redirected to your profile in a few seconds, press the link above.",
+ "remote-username": {
+ "discord": "Your discord username"
+ },
+ "username": "Username",
+ "sign-up-button": "Sign up"
+ },
+ "title": "Log in",
+ "form-title": "Log in with email",
+ "email": "Email address",
+ "password": "Password",
+ "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."
+ }
}