diff --git a/apps/web/i18next-scanner.config.js b/apps/web/i18next-scanner.config.js
index d25244827..4bca73307 100644
--- a/apps/web/i18next-scanner.config.js
+++ b/apps/web/i18next-scanner.config.js
@@ -1,7 +1,7 @@
const typescriptTransform = require("i18next-scanner-typescript");
module.exports = {
- input: ["src/**/*.{ts,tsx}"],
+ input: ["src/**/*.{ts,tsx}", "!src/utils/auth.ts"],
options: {
keySeparator: ".",
nsSeparator: false,
@@ -13,10 +13,6 @@ module.exports = {
removeUnusedKeys: true,
func: {
list: ["t"],
- extensions: [".js", ".jsx"],
- },
- trans: {
- extensions: [".js", ".jsx"],
},
resource: {
loadPath: "public/locales/{{lng}}/{{ns}}.json",
diff --git a/apps/web/public/locales/en/app.json b/apps/web/public/locales/en/app.json
index 2bff03642..970b010f6 100644
--- a/apps/web/public/locales/en/app.json
+++ b/apps/web/public/locales/en/app.json
@@ -33,16 +33,13 @@
"email": "Email",
"emailNotAllowed": "This email is not allowed.",
"emailPlaceholder": "jessie.smith@example.com",
- "expiredOrInvalidLink": "This link is expired or invalid. Please request a new link.",
"exportToCsv": "Export to CSV",
"forgetMe": "Forget me",
"guest": "Guest",
"ifNeedBe": "If need be",
- "loading": "Loading…",
"location": "Location",
"locationPlaceholder": "Joe's Coffee Shop",
"login": "Login",
- "loginSuccessful": "You're logged in! Please wait while you are redirected…",
"logout": "Logout",
"manage": "Manage",
"mixedOptionsDescription": "You can't have both time and date options in the same poll. Which would you like to keep?",
@@ -58,15 +55,12 @@
"nextMonth": "Next month",
"no": "No",
"noDatesSelected": "No dates selected",
- "notificationsDisabled": "Notifications have been disabled for {title}",
"noVotes": "No one has voted for this option",
"optional": "optional",
"preferences": "Preferences",
"previousMonth": "Previous month",
- "redirect": "Click here if you are not redirect automatically…",
"register": "Register",
"requiredString": "“{name}” is required",
- "resendVerificationCode": "Resend verification code",
"response": "Response",
"save": "Save",
"saveInstruction": "Select your availability and click {action}",
@@ -139,10 +133,6 @@
"permissionDenied": "Unauthorized",
"permissionDeniedDescription": "If you are the poll creator, please login to access your poll",
"loginDifferent": "Switch user",
- "differentOwner": "Different Owner",
- "differentOwnerDescription": "This poll was created by a different user. Would you like to transfer ownership to the current user?",
- "yesTransfer": "Yes, transfer to current user",
- "noTransfer": "No, take me home",
"share": "Share",
"timeShownIn": "Times shown in {timeZone}",
"editDetailsDescription": "Change the details of your event.",
@@ -229,5 +219,8 @@
"pollSettingsDescription": "Customize the behaviour of your poll",
"requireParticipantEmailLabel": "Make email address required for participants",
"hideParticipantsLabel": "Hide participant list from other participants",
- "hideScoresLabel": "Hide scores until after a participant has voted"
+ "hideScoresLabel": "Hide scores until after a participant has voted",
+ "authErrorTitle": "Login Error",
+ "authErrorDescription": "There was an error logging you in. Please try again.",
+ "authErrorCta": "Go to login page"
}
diff --git a/apps/web/src/pages/auth/error.tsx b/apps/web/src/pages/auth/error.tsx
new file mode 100644
index 000000000..d9cf041cc
--- /dev/null
+++ b/apps/web/src/pages/auth/error.tsx
@@ -0,0 +1,39 @@
+import { XCircle } from "@rallly/icons";
+import { Button } from "@rallly/ui/button";
+import Link from "next/link";
+
+import {
+ PageDialog,
+ PageDialogDescription,
+ PageDialogFooter,
+ PageDialogHeader,
+ PageDialogTitle,
+} from "@/components/page-dialog";
+import { Trans } from "@/components/trans";
+
+const Page = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Page;
diff --git a/apps/web/src/utils/auth.ts b/apps/web/src/utils/auth.ts
index 246681184..5ed9f700f 100644
--- a/apps/web/src/utils/auth.ts
+++ b/apps/web/src/utils/auth.ts
@@ -112,6 +112,7 @@ const authOptions = {
pages: {
signIn: "/login",
signOut: "/logout",
+ error: "/auth/error",
},
callbacks: {
async redirect({ url, baseUrl }) {