feat: Hide tutorial on login, add 'Angemeldet bleiben' checkbox
- OnboardingTutorial: Skip on /login, /auth, /register paths - AuthForm: Added remember-me checkbox (default: checked) - Session persistence based on checkbox selection
This commit is contained in:
@@ -9,6 +9,7 @@ export default function AuthForm() {
|
||||
const [isLogin, setIsLogin] = useState(true);
|
||||
const [email, setEmail] = useState('');
|
||||
const [password, setPassword] = useState('');
|
||||
const [rememberMe, setRememberMe] = useState(true);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [message, setMessage] = useState<string | null>(null);
|
||||
@@ -21,8 +22,20 @@ export default function AuthForm() {
|
||||
|
||||
try {
|
||||
if (isLogin) {
|
||||
const { error } = await supabase.auth.signInWithPassword({ email, password });
|
||||
// Set session persistence based on remember-me
|
||||
const { error } = await supabase.auth.signInWithPassword({
|
||||
email,
|
||||
password,
|
||||
});
|
||||
if (error) throw error;
|
||||
|
||||
// If remember-me is checked, session will persist (default Supabase behavior)
|
||||
// If not checked, clear session on browser close via localStorage flag
|
||||
if (!rememberMe) {
|
||||
sessionStorage.setItem('dramlog_session_only', 'true');
|
||||
} else {
|
||||
sessionStorage.removeItem('dramlog_session_only');
|
||||
}
|
||||
} else {
|
||||
const { error } = await supabase.auth.signUp({
|
||||
email,
|
||||
@@ -88,6 +101,35 @@ export default function AuthForm() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Remember Me Checkbox - only show for login */}
|
||||
{isLogin && (
|
||||
<label className="flex items-center gap-3 cursor-pointer group">
|
||||
<div className="relative">
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={rememberMe}
|
||||
onChange={(e) => setRememberMe(e.target.checked)}
|
||||
className="sr-only peer"
|
||||
/>
|
||||
<div className="w-5 h-5 bg-zinc-950 border border-zinc-700 rounded-md peer-checked:bg-orange-600 peer-checked:border-orange-600 transition-all" />
|
||||
<svg
|
||||
className="absolute inset-0 w-5 h-5 text-white opacity-0 peer-checked:opacity-100 transition-opacity"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z"
|
||||
clipRule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<span className="text-sm text-zinc-400 group-hover:text-zinc-300 transition-colors">
|
||||
Angemeldet bleiben
|
||||
</span>
|
||||
</label>
|
||||
)}
|
||||
|
||||
{error && (
|
||||
<div className="flex items-center gap-2 p-3 bg-red-900/10 text-red-500 text-xs rounded-lg border border-red-900/20">
|
||||
<AlertCircle size={16} />
|
||||
|
||||
Reference in New Issue
Block a user