Compare commits

...

2 Commits

Author SHA1 Message Date
Henry
22c39fdff2 feat: extend session duration 2025-11-19 23:59:13 +00:00
Henry
a6aae0cea1 fix(cloud): reenable magic login 2025-11-19 23:52:04 +00:00
2 changed files with 26 additions and 15 deletions

View File

@@ -303,6 +303,10 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
const password = watch("password"); const password = watch("password");
const isMagicLinkAvailable = useMemo(() => {
return isCloudEnv || (isEmailSendingEnabled && !isSignUp);
}, [isCloudEnv, isEmailSendingEnabled, isSignUp]);
// Determine if we should operate in magic link mode for current form state (login only) // Determine if we should operate in magic link mode for current form state (login only)
const isMagicLinkMode = useMemo(() => { const isMagicLinkMode = useMemo(() => {
// Magic link only viable when email sending enabled AND not sign up. // Magic link only viable when email sending enabled AND not sign up.
@@ -390,7 +394,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
)} )}
</div> </div>
)} )}
{isCredentialsEnabled && ( {(isCredentialsEnabled || isMagicLinkAvailable) && (
<> <>
<div> <div>
<Input <Input
@@ -404,26 +408,28 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
)} )}
</div> </div>
<div> {isCredentialsEnabled && (
<Input <div>
type="password" <Input
{...register("password", { required: true })} type="password"
placeholder={t`Enter your password`} {...register("password", { required: true })}
/> placeholder={t`Enter your password`}
{errors.password && ( />
<p className="mt-2 text-xs text-red-400"> {errors.password && (
{errors.password.message ?? <p className="mt-2 text-xs text-red-400">
t`Please enter a valid password`} {errors.password.message ??
</p> t`Please enter a valid password`}
)} </p>
</div> )}
</div>
)}
</> </>
)} )}
{loginError && ( {loginError && (
<p className="mt-2 text-xs text-red-400">{loginError}</p> <p className="mt-2 text-xs text-red-400">{loginError}</p>
)} )}
</div> </div>
{isCredentialsEnabled && ( {(isCredentialsEnabled || isMagicLinkAvailable) && (
<div className="mt-[1.5rem] flex items-center gap-4"> <div className="mt-[1.5rem] flex items-center gap-4">
<Button <Button
isLoading={isLoginWithEmailPending} isLoading={isLoginWithEmailPending}

View File

@@ -129,6 +129,11 @@ export const initAuth = (db: dbClient) => {
user: schema.users, user: schema.users,
}, },
}), }),
session: {
expiresIn: 60 * 60 * 24 * 30, // 30 days
updateAge: 60 * 60 * 24 * 2, // Update session expiry every 48 hours if user is active
freshAge: 0,
},
emailAndPassword: { emailAndPassword: {
enabled: env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true", enabled: env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true",
disableSignUp: disableSignUp: