From eb6a56dcc93831487fae7f74d5d1cc8cf2ec1f0c Mon Sep 17 00:00:00 2001 From: "daivid.alves" Date: Tue, 13 Jan 2026 12:13:35 -0300 Subject: [PATCH] Auto-deploy: 2026-01-13 12:13:35 | 5 arquivo(s) alterado(s) --- GIT-AUTO-SYNC.md | 4 +- .../workspace/components/WorkspaceGuard.jsx | 16 +++ src/features/workspace/index.jsx | 2 + src/features/workspace/views/LoginView.jsx | 113 ++++++++++++++++++ 4 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 src/features/workspace/components/WorkspaceGuard.jsx create mode 100644 src/features/workspace/views/LoginView.jsx diff --git a/GIT-AUTO-SYNC.md b/GIT-AUTO-SYNC.md index 2a1d31f..1c03109 100644 --- a/GIT-AUTO-SYNC.md +++ b/GIT-AUTO-SYNC.md @@ -174,6 +174,6 @@ Em caso de problemas: --- -**Última atualização**: 2026-01-13 -**Versão**: 2.0 +**Última atualização**: 2026-01-13 (Teste Auto-Sync 12:15) +**Versão**: 2.1 **Autor**: Antigravity AI diff --git a/src/features/workspace/components/WorkspaceGuard.jsx b/src/features/workspace/components/WorkspaceGuard.jsx new file mode 100644 index 0000000..45b261f --- /dev/null +++ b/src/features/workspace/components/WorkspaceGuard.jsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { Navigate } from 'react-router-dom'; + +/** + * WorkspaceGuard + * Protege o ambiente Workspace durante a fase de ajuste usando uma flag de sessão. + */ +export const WorkspaceGuard = ({ children }) => { + const hasAccess = sessionStorage.getItem('workspace_access') === 'true'; + + if (!hasAccess) { + return ; + } + + return children; +}; diff --git a/src/features/workspace/index.jsx b/src/features/workspace/index.jsx index 5183caa..5402111 100644 --- a/src/features/workspace/index.jsx +++ b/src/features/workspace/index.jsx @@ -1,4 +1,6 @@ export * from './components/WorkspaceLayout'; +export * from './components/WorkspaceGuard'; export * from './views/IncomesView'; export * from './views/ExpensesView'; export * from './views/ReconciliationView'; +export * from './views/LoginView'; diff --git a/src/features/workspace/views/LoginView.jsx b/src/features/workspace/views/LoginView.jsx new file mode 100644 index 0000000..3fb5e5f --- /dev/null +++ b/src/features/workspace/views/LoginView.jsx @@ -0,0 +1,113 @@ +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { motion } from 'framer-motion'; +import { Shield, Lock, ArrowRight, Zap, Eye, EyeOff } from 'lucide-react'; + +export const LoginView = () => { + const [password, setPassword] = useState(''); + const [showPassword, setShowPassword] = useState(false); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + const navigate = useNavigate(); + + // Senhas de teste definidas conforme solicitado + const TEST_PASSWORDS = ['itguys2026', 'workspace@test', 'admin123']; + + const handleLogin = (e) => { + e.preventDefault(); + setLoading(true); + setError(''); + + setTimeout(() => { + if (TEST_PASSWORDS.includes(password)) { + sessionStorage.setItem('workspace_access', 'true'); + navigate('/plataforma/workspace'); + } else { + setError('Senha de acesso inválida para este ambiente.'); + setLoading(false); + } + }, 800); + }; + + return ( +
+ {/* Luzes de fundo */} +
+
+ + +
+
+
+ +
+
+

Workspace

+

Acesso Restrito - Teste

+
+
+ +
+
+ +
+
+ +
+ setPassword(e.target.value)} + placeholder="••••••••" + className="w-full pl-12 pr-12 py-4 bg-white/5 border border-white/10 rounded-2xl focus:border-[var(--workspace-sec-2-light)] focus:ring-1 focus:ring-[var(--workspace-sec-2-light)] outline-none transition-all text-white font-medium" + required + /> + +
+
+ + {error && ( + + {error} + + )} + + +
+ +

+ Ambiente em Construção • iTGUYS 2026 +

+
+
+
+ ); +};