From 74b075864a9625ad82831c953b2560050c92fee0 Mon Sep 17 00:00:00 2001 From: MatheusCampos-450 Date: Sat, 17 Apr 2021 18:07:42 -0300 Subject: [PATCH 1/6] implementing recovery login modal --- src/DTOs/Auth.tsx | 14 ++++++- src/contexts/auth.tsx | 37 +++++++++++++++++++ .../components/RecoveryModal/index.tsx | 15 ++++++++ .../components/RecoveryModal/styles.ts | 5 +++ src/pages/Recovery/index.tsx | 14 +++++-- 5 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 src/pages/Recovery/components/RecoveryModal/index.tsx create mode 100644 src/pages/Recovery/components/RecoveryModal/styles.ts diff --git a/src/DTOs/Auth.tsx b/src/DTOs/Auth.tsx index 781e7c3..90e902b 100644 --- a/src/DTOs/Auth.tsx +++ b/src/DTOs/Auth.tsx @@ -37,6 +37,10 @@ export interface SignUpCredentials { area: string; } +export interface RecoveryCredentials { + email: string; +} + interface InvitationData { error: string; loader: boolean; @@ -47,6 +51,12 @@ interface RegisterData { success: boolean; } +interface RecoveryPassoword { + error: string; + loader: boolean; + success: boolean; +} + export interface AuthContextData { user: { id: string; @@ -61,10 +71,12 @@ export interface AuthContextData { }; invitation: InvitationData; register: RegisterData; + recovery: RecoveryPassoword; signIn(crendentials: SignInCredentials): Promise; signUp(crendentials: SignUpCredentials): Promise; - inviteUser(crendentials: InviteUserCredentials): Promise; signOut(): void; + inviteUser(crendentials: InviteUserCredentials): Promise; + recoveryPassword(crendentials: RecoveryCredentials): Promise; } export interface AuthProviderProps { children: ReactNode; diff --git a/src/contexts/auth.tsx b/src/contexts/auth.tsx index 00aa563..d98d1ac 100644 --- a/src/contexts/auth.tsx +++ b/src/contexts/auth.tsx @@ -14,6 +14,10 @@ const AuthProvider = ({ children }: AuthProviderProps) => { const [inviteError, setInviteError] = useState(''); const [inviteLoader, setInviteLoader] = useState(false); + const [recoveryError, setRecoveryError] = useState(''); + const [recoveryLoader, setRecoveryLoader] = useState(false); + const [recoverySuccess, setRecoverySuccess] = useState(false); + const [data, setData] = useState(() => { const token = localStorage.getItem('@Typext:token'); const user = localStorage.getItem('@Typext:user'); @@ -108,6 +112,30 @@ const AuthProvider = ({ children }: AuthProviderProps) => { setInviteLoader(false); }, []); + const recoveryPassword = useCallback(async ({ email }) => { + setRecoveryLoader(true); + + try { + setRecoveryError(''); + + await api.post('/password/forgot', { + email, + }); + + setRecoverySuccess(true); + setRecoveryLoader(false); + } catch (err) { + const errorStatus = err.response?.status; + + if (errorStatus === 401) { + setRecoveryError(err.response?.data.message); + } + + setRecoverySuccess(false); + setRecoveryLoader(false); + } + }, []); + return ( { loader: signUpLoader, success: signUpSuccess, }, + recovery: { + error: recoveryError, + loader: recoveryLoader, + success: recoverySuccess, + }, signIn, signUp, signOut, inviteUser, + recoveryPassword, }} > {children} @@ -143,3 +177,6 @@ function useAuth(): AuthContextData { } export { AuthProvider, useAuth }; +function async(arg0: { email: any }): any { + throw new Error('Function not implemented.'); +} diff --git a/src/pages/Recovery/components/RecoveryModal/index.tsx b/src/pages/Recovery/components/RecoveryModal/index.tsx new file mode 100644 index 0000000..7a75a85 --- /dev/null +++ b/src/pages/Recovery/components/RecoveryModal/index.tsx @@ -0,0 +1,15 @@ +import DefaultModal from 'components/DefaultModal'; +import React from 'react'; +import StyledRecoveryModal from './styles'; + +const RecoveryModal = () => { + return ( + + +

teste

+
+
+ ); +}; + +export default RecoveryModal; diff --git a/src/pages/Recovery/components/RecoveryModal/styles.ts b/src/pages/Recovery/components/RecoveryModal/styles.ts new file mode 100644 index 0000000..cc11304 --- /dev/null +++ b/src/pages/Recovery/components/RecoveryModal/styles.ts @@ -0,0 +1,5 @@ +import styled from 'styled-components'; + +const StyledRecoveryModal = styled.div``; + +export default StyledRecoveryModal; diff --git a/src/pages/Recovery/index.tsx b/src/pages/Recovery/index.tsx index 5d94d27..a174828 100644 --- a/src/pages/Recovery/index.tsx +++ b/src/pages/Recovery/index.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useCallback, useState } from 'react'; import Button from 'components/Button/Button'; import Input from 'components/Input/Input'; @@ -6,10 +6,18 @@ import Input from 'components/Input/Input'; import LogoIcon from 'assets/logo.svg'; import StyledRecoveryPassword from './styles'; +import RecoveryModal from './components/RecoveryModal'; const RecoveryPassword = () => { + const [showRecoveryModal, setShowRecoveryModal] = useState(false); + + const handleOpenRecoveryModal = useCallback(() => { + setShowRecoveryModal(!showRecoveryModal); + }, [showRecoveryModal]); + return ( <> + {showRecoveryModal && } From d7876ca142287aec57bd21fb58bb7957e3206bec Mon Sep 17 00:00:00 2001 From: MatheusCampos-450 Date: Sat, 17 Apr 2021 21:33:04 -0300 Subject: [PATCH 2/6] implementing reset password screen --- src/DTOs/Auth.tsx | 18 ++++++-- src/contexts/auth.tsx | 4 -- .../components/RecoveryModal/index.tsx | 42 ++++++++++++++++--- .../components/RecoveryModal/styles.ts | 25 ++++++++++- src/pages/Recovery/index.tsx | 34 ++++++++++++--- .../components/ResetPasswordModal/index.tsx | 0 .../components/ResetPasswordModal/styles.ts | 5 +++ 7 files changed, 108 insertions(+), 20 deletions(-) create mode 100644 src/pages/ResetPassword/components/ResetPasswordModal/index.tsx create mode 100644 src/pages/ResetPassword/components/ResetPasswordModal/styles.ts diff --git a/src/DTOs/Auth.tsx b/src/DTOs/Auth.tsx index 90e902b..7480aa1 100644 --- a/src/DTOs/Auth.tsx +++ b/src/DTOs/Auth.tsx @@ -1,3 +1,4 @@ +import { StringifyOptions } from 'node:querystring'; import { ReactNode } from 'react'; export interface AuthState { @@ -41,6 +42,11 @@ export interface RecoveryCredentials { email: string; } +export interface ResetCredentials { + password: string; + confirmPassword: string; +} + interface InvitationData { error: string; loader: boolean; @@ -51,10 +57,14 @@ interface RegisterData { success: boolean; } -interface RecoveryPassoword { +interface RecoveryPassowordData { error: string; loader: boolean; - success: boolean; +} + +interface ResetPasswordData { + error: String; + loader: boolean; } export interface AuthContextData { @@ -71,12 +81,14 @@ export interface AuthContextData { }; invitation: InvitationData; register: RegisterData; - recovery: RecoveryPassoword; + recovery: RecoveryPassowordData; + reset: ResetPasswordData; signIn(crendentials: SignInCredentials): Promise; signUp(crendentials: SignUpCredentials): Promise; signOut(): void; inviteUser(crendentials: InviteUserCredentials): Promise; recoveryPassword(crendentials: RecoveryCredentials): Promise; + resetPassword(credentials: ResetCredentials): Promise; } export interface AuthProviderProps { children: ReactNode; diff --git a/src/contexts/auth.tsx b/src/contexts/auth.tsx index d98d1ac..a966197 100644 --- a/src/contexts/auth.tsx +++ b/src/contexts/auth.tsx @@ -16,7 +16,6 @@ const AuthProvider = ({ children }: AuthProviderProps) => { const [recoveryError, setRecoveryError] = useState(''); const [recoveryLoader, setRecoveryLoader] = useState(false); - const [recoverySuccess, setRecoverySuccess] = useState(false); const [data, setData] = useState(() => { const token = localStorage.getItem('@Typext:token'); @@ -122,7 +121,6 @@ const AuthProvider = ({ children }: AuthProviderProps) => { email, }); - setRecoverySuccess(true); setRecoveryLoader(false); } catch (err) { const errorStatus = err.response?.status; @@ -131,7 +129,6 @@ const AuthProvider = ({ children }: AuthProviderProps) => { setRecoveryError(err.response?.data.message); } - setRecoverySuccess(false); setRecoveryLoader(false); } }, []); @@ -152,7 +149,6 @@ const AuthProvider = ({ children }: AuthProviderProps) => { recovery: { error: recoveryError, loader: recoveryLoader, - success: recoverySuccess, }, signIn, signUp, diff --git a/src/pages/Recovery/components/RecoveryModal/index.tsx b/src/pages/Recovery/components/RecoveryModal/index.tsx index 7a75a85..b15bf51 100644 --- a/src/pages/Recovery/components/RecoveryModal/index.tsx +++ b/src/pages/Recovery/components/RecoveryModal/index.tsx @@ -1,12 +1,44 @@ -import DefaultModal from 'components/DefaultModal'; import React from 'react'; -import StyledRecoveryModal from './styles'; +import { useAuth } from 'contexts/auth'; + +import EmailIcon from 'assets/email.svg'; +import EmailErrorIcon from 'assets/email_error.svg'; +import Loader from 'components/Loader'; + +import DefaultModal from 'components/DefaultModal'; +import { StyledRecoveryModal, StyledRecoveryModalContent } from './styles'; + +interface IRecoveryModalProps { + onClose: Function; +} + +const RecoveryModal: React.FC = ({ + onClose, +}: IRecoveryModalProps) => { + const { + recovery: { error, loader }, + } = useAuth(); -const RecoveryModal = () => { return ( - -

teste

+ + <> + {loader ? ( + + ) : error === '' ? ( + + +

E-MAIL ENVIADO!

+

CONFIRA SUA CAIXA DE E-MAIL.

+
+ ) : ( + + +

E-MAIL INVÁLIDO!

+

REVISE-O E TENTE NOVAMENTE.

+
+ )} +
); diff --git a/src/pages/Recovery/components/RecoveryModal/styles.ts b/src/pages/Recovery/components/RecoveryModal/styles.ts index cc11304..3ab1eec 100644 --- a/src/pages/Recovery/components/RecoveryModal/styles.ts +++ b/src/pages/Recovery/components/RecoveryModal/styles.ts @@ -1,5 +1,26 @@ import styled from 'styled-components'; -const StyledRecoveryModal = styled.div``; +export const StyledRecoveryModal = styled.div` + display: flex; + justify-content: center; + align-items: center; -export default StyledRecoveryModal; + modal-content { + display: flex; + justify-content: center; + align-items: center; + } +`; + +export const StyledRecoveryModalContent = styled.div` + display: flex; + flex: 1; + flex-direction: column; + align-items: center; + justify-content: center; + + img { + height: 3.438rem; + margin-bottom: 1rem; + } +`; diff --git a/src/pages/Recovery/index.tsx b/src/pages/Recovery/index.tsx index a174828..69c1600 100644 --- a/src/pages/Recovery/index.tsx +++ b/src/pages/Recovery/index.tsx @@ -1,23 +1,44 @@ import React, { useCallback, useState } from 'react'; +import { message } from 'antd'; import Button from 'components/Button/Button'; import Input from 'components/Input/Input'; import LogoIcon from 'assets/logo.svg'; +import { useAuth } from 'contexts/auth'; import StyledRecoveryPassword from './styles'; import RecoveryModal from './components/RecoveryModal'; const RecoveryPassword = () => { - const [showRecoveryModal, setShowRecoveryModal] = useState(false); + const { recoveryPassword } = useAuth(); - const handleOpenRecoveryModal = useCallback(() => { - setShowRecoveryModal(!showRecoveryModal); - }, [showRecoveryModal]); + const [showRecoveryModal, setShowRecoveryModal] = useState(false); + + const [userEmail, setUserEmail] = useState(''); + + const handleCloseRecoveryModal = useCallback(() => { + setShowRecoveryModal(false); + }, []); + + const handleRecoveryPassword = useCallback(() => { + if (!userEmail) { + message.error('Todos os campos devem estar preenchidos'); + return; + } + + setShowRecoveryModal(true); + recoveryPassword({ + email: userEmail, + }); + }, [recoveryPassword, userEmail]); return ( <> - {showRecoveryModal && } + {showRecoveryModal && ( + + )} +
diff --git a/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx b/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts b/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts new file mode 100644 index 0000000..adeba87 --- /dev/null +++ b/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts @@ -0,0 +1,5 @@ +import styled from 'styled-components'; + +const StyledResetPasswordModal = styled.div``; + +export default StyledResetPasswordModal; From a8fd3f664a45746c5afcf73b2334d691654825b2 Mon Sep 17 00:00:00 2001 From: MatheusCampos-450 Date: Sat, 17 Apr 2021 23:42:53 -0300 Subject: [PATCH 3/6] adding icons project --- src/assets/shield-icon.svg | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/assets/shield-icon.svg diff --git a/src/assets/shield-icon.svg b/src/assets/shield-icon.svg new file mode 100644 index 0000000..319c96c --- /dev/null +++ b/src/assets/shield-icon.svg @@ -0,0 +1,3 @@ + + + From 3d9974632dee0ebd117d6f73b1b12c4122728dba Mon Sep 17 00:00:00 2001 From: MatheusCampos-450 Date: Sat, 17 Apr 2021 23:46:52 -0300 Subject: [PATCH 4/6] connecting recovery and reset screens with backend --- src/contexts/auth.tsx | 26 ++++++++-- .../components/RecoveryModal/index.tsx | 2 +- .../components/RecoveryModal/styles.ts | 6 --- .../components/ResetPasswordModal/index.tsx | 47 +++++++++++++++++++ .../components/ResetPasswordModal/styles.ts | 19 +++++++- src/pages/ResetPassword/index.tsx | 46 ++++++++++++++---- src/pages/ResetPassword/styles.ts | 38 ++++++++------- src/routes.tsx | 1 - 8 files changed, 146 insertions(+), 39 deletions(-) diff --git a/src/contexts/auth.tsx b/src/contexts/auth.tsx index a966197..c4bca8a 100644 --- a/src/contexts/auth.tsx +++ b/src/contexts/auth.tsx @@ -17,6 +17,9 @@ const AuthProvider = ({ children }: AuthProviderProps) => { const [recoveryError, setRecoveryError] = useState(''); const [recoveryLoader, setRecoveryLoader] = useState(false); + const [resetError, setResetError] = useState(''); + const [resetLoader, setResetLoader] = useState(false); + const [data, setData] = useState(() => { const token = localStorage.getItem('@Typext:token'); const user = localStorage.getItem('@Typext:user'); @@ -120,16 +123,28 @@ const AuthProvider = ({ children }: AuthProviderProps) => { await api.post('/password/forgot', { email, }); + } catch (err) { + setRecoveryError(err.response?.data.message); + } + + setRecoveryLoader(false); + }, []); - setRecoveryLoader(false); + const resetPassword = useCallback(async ({ password, confirmPassword }) => { + setResetLoader(true); + + try { + setRecoveryError(''); + + await api.post('/password/reset', { password, confirmPassword }); } catch (err) { const errorStatus = err.response?.status; if (errorStatus === 401) { - setRecoveryError(err.response?.data.message); + setResetError(err.response?.data.message); } - setRecoveryLoader(false); + setResetLoader(false); } }, []); @@ -150,11 +165,16 @@ const AuthProvider = ({ children }: AuthProviderProps) => { error: recoveryError, loader: recoveryLoader, }, + reset: { + error: resetError, + loader: resetLoader, + }, signIn, signUp, signOut, inviteUser, recoveryPassword, + resetPassword, }} > {children} diff --git a/src/pages/Recovery/components/RecoveryModal/index.tsx b/src/pages/Recovery/components/RecoveryModal/index.tsx index b15bf51..38b242d 100644 --- a/src/pages/Recovery/components/RecoveryModal/index.tsx +++ b/src/pages/Recovery/components/RecoveryModal/index.tsx @@ -34,7 +34,7 @@ const RecoveryModal: React.FC = ({ ) : ( -

E-MAIL INVÁLIDO!

+

{error.toUpperCase()}

REVISE-O E TENTE NOVAMENTE.

)} diff --git a/src/pages/Recovery/components/RecoveryModal/styles.ts b/src/pages/Recovery/components/RecoveryModal/styles.ts index 3ab1eec..4dce561 100644 --- a/src/pages/Recovery/components/RecoveryModal/styles.ts +++ b/src/pages/Recovery/components/RecoveryModal/styles.ts @@ -4,12 +4,6 @@ export const StyledRecoveryModal = styled.div` display: flex; justify-content: center; align-items: center; - - modal-content { - display: flex; - justify-content: center; - align-items: center; - } `; export const StyledRecoveryModalContent = styled.div` diff --git a/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx b/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx index e69de29..eafb0ae 100644 --- a/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx +++ b/src/pages/ResetPassword/components/ResetPasswordModal/index.tsx @@ -0,0 +1,47 @@ +import React from 'react'; + +import { useAuth } from 'contexts/auth'; + +import ShieldIcon from 'assets/shield-icon.svg'; +import WarnIcon from 'assets/warn.svg'; + +import Loader from 'components/Loader'; +import DefaultModal from 'components/DefaultModal'; + +import { StyledResetPasswordModal, StyledResetPasswordContent } from './styles'; + +interface IResetPasswordModalProps { + onClose: Function; +} + +const ResetPasswordModal: React.FC = ({ + onClose, +}: IResetPasswordModalProps) => { + const { + reset: { error, loader }, + } = useAuth(); + + return ( + + + {loader ? ( + + ) : error === '' ? ( + + +

SENHA ATUALIZADA

+

REDIRECIONANDO PARA ÁREA DE LOGIN...

+
+ ) : ( + + +

SENHA INVÁLIDA!

+

VERIFIQUE SE A DIGITOU CORRETAMENTE

+
+ )} +
+
+ ); +}; + +export default ResetPasswordModal; diff --git a/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts b/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts index adeba87..a4cf200 100644 --- a/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts +++ b/src/pages/ResetPassword/components/ResetPasswordModal/styles.ts @@ -1,5 +1,20 @@ import styled from 'styled-components'; -const StyledResetPasswordModal = styled.div``; +export const StyledResetPasswordModal = styled.div` + display: flex; + justify-content: center; + align-items: center; +`; -export default StyledResetPasswordModal; +export const StyledResetPasswordContent = styled.div` + display: flex; + flex: 1; + flex-direction: column; + justify-content: center; + align-items: center; + + img { + height: 4rem; + margin-bottom: 1rem; + } +`; diff --git a/src/pages/ResetPassword/index.tsx b/src/pages/ResetPassword/index.tsx index a950d92..2360934 100644 --- a/src/pages/ResetPassword/index.tsx +++ b/src/pages/ResetPassword/index.tsx @@ -1,13 +1,44 @@ -import React from 'react'; +import React, { useCallback, useState } from 'react'; +import { message } from 'antd'; + +import { useAuth } from 'contexts/auth'; import Input from 'components/Input/Input'; import Button from 'components/Button/Button'; import Logo from 'assets/logo.svg'; +import ResetPasswordModal from './components/ResetPasswordModal'; import StyledNewPassword from './styles'; const NewPassword = () => { - return ( + const { resetPassword } = useAuth(); + + const [showResetModal, setShowResetModal] = useState(false); + + const [userPassword, setUserPassword] = useState(''); + const [userConfirmPassword, setUserConfirmPassword] = useState(''); + + const handleCloseResetModal = useCallback(() => { + setShowResetModal(false); + }, []); + + const handleResetPassword = useCallback(() => { + if (!userPassword || !userConfirmPassword) { + message.error('Todos os campos devem estar preenchidos'); + return; + } + + setShowResetModal(true); + resetPassword({ + password: userPassword, + confirmPassword: userConfirmPassword, + }); + }, [resetPassword, userPassword, userConfirmPassword]); + + return ( + <> + {showResetModal && } + Logo Typext @@ -17,6 +48,7 @@ const NewPassword = () => { color="var(--black)" styleWidth="41.875rem" Type="text" + onChange={event => setUserPassword(event.target.value)} /> { color="var(--black)" styleWidth="41.875rem" Type="text" + onChange={event => setUserConfirmPassword(event.target.value)} /> - - - - ); + + ); }; export default NewPassword; diff --git a/src/pages/ResetPassword/styles.ts b/src/pages/ResetPassword/styles.ts index 07c5b90..70631b6 100644 --- a/src/pages/ResetPassword/styles.ts +++ b/src/pages/ResetPassword/styles.ts @@ -1,33 +1,35 @@ import styled from 'styled-components'; export const StyledNewPassword = styled.div` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + margin-top: 4.375rem; + + .NewPassword { display: flex; - flex-direction: column; align-items: center; justify-content: center; + flex-direction: column; - margin-top: 4.375rem; - - .NewPassword { - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; + max-width: 41.875rem; + width: 100%; - margin-top: 13.25rem; + margin-top: 13.25rem; - align-items: flex-end; + align-items: flex-end; - Input { - margin-bottom: 2rem; - } + Input { + margin-bottom: 2rem; + } - Button { - margin-top: 4rem; - width: 14.063rem; - } + Button { + margin-top: 4rem; + width: 14.063rem; } - + } `; export default StyledNewPassword; diff --git a/src/routes.tsx b/src/routes.tsx index 5f0d1e8..f7b37b3 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -44,7 +44,6 @@ export default function Routes() { )} - ); From 278663f5a566f2db504aae27ae66852078f4f941 Mon Sep 17 00:00:00 2001 From: leonardo messias Date: Sat, 17 Apr 2021 22:13:17 -0300 Subject: [PATCH 5/6] fix(invite accept): fix invite accept route payload --- src/DTOs/Auth.tsx | 2 +- src/components/FormUpdate/index.tsx | 16 ++-- .../Minute/components/MinuteViewer/data.js | 79 ------------------- src/pages/Register/index.tsx | 11 +-- src/routes.tsx | 3 +- src/utils/registerSchemaValidation.ts | 1 + 6 files changed, 17 insertions(+), 95 deletions(-) delete mode 100644 src/pages/Minute/components/MinuteViewer/data.js diff --git a/src/DTOs/Auth.tsx b/src/DTOs/Auth.tsx index 7480aa1..a7f0c90 100644 --- a/src/DTOs/Auth.tsx +++ b/src/DTOs/Auth.tsx @@ -28,7 +28,7 @@ export interface InviteUserCredentials { } export interface SignUpCredentials { - token: string; + email: string; name: string; password: string; password_confirmation: string; diff --git a/src/components/FormUpdate/index.tsx b/src/components/FormUpdate/index.tsx index 8add678..3299960 100644 --- a/src/components/FormUpdate/index.tsx +++ b/src/components/FormUpdate/index.tsx @@ -1,10 +1,10 @@ import React from 'react'; +import { useParams } from 'react-router-dom'; import { Form } from '@unform/web'; import InputForm from 'components/InputForm'; import Button from 'components/Button/Button'; -import Input from 'components/Input/Input'; import { Container } from './styles'; @@ -26,6 +26,9 @@ interface FormUpdateProps { }; } +interface ParamsProps { + email: string; +} function FormUpdate({ handleSubmit, formRef, @@ -33,6 +36,10 @@ function FormUpdate({ hasPasswordField, user, }: FormUpdateProps) { + const params = useParams(); + + const paramsEmail = params.email; + return (
@@ -57,12 +64,11 @@ function FormUpdate({ title="Empresa" /> - diff --git a/src/pages/Minute/components/MinuteViewer/data.js b/src/pages/Minute/components/MinuteViewer/data.js deleted file mode 100644 index 73bd4bc..0000000 --- a/src/pages/Minute/components/MinuteViewer/data.js +++ /dev/null @@ -1,79 +0,0 @@ -export const minuteData = { - addressAndHour: { - local: - 'Avenida Cesare Monsueto Giulio Lattes, 1350 Distrito - Eugênio de Melo, São José dos Campos - SP, 12247-014', - startDate: '27/3/21', - startHour: '12:41', - }, - projectInfo: { - projectName: - 'Incidente com tentativa de incendio por partes dos funcionarios', - members: [ - { - name: 'Luciano Huck', - role: 'Recursos Humanos', - enterprise: 'globo.tv', - phone: '40028922', - email: 'lc@gmail.com', - }, - { - name: 'Renato Aragão', - role: 'CEO', - enterprise: 'globo.tv', - phone: '12312312', - email: 'ra@gmail.com', - }, - { - name: 'Marcelo Rezende', - role: 'Delegado do DF 23', - enterprise: 'policial.com', - phone: '123010212', - email: 'mr@gmail.com', - }, - { - name: 'Maicon Cristo', - role: 'Apresentador', - enterprise: 'youtube.com', - phone: '123010212', - email: 'mc@gmail.com', - }, - ], - }, - topics: [ - { topic: 'Incendio' }, - { topic: 'Depravação' }, - { topic: 'Falta de deus' }, - ], - subjects: [ - { - subject: `Aqueça o óleo em uma panela. - Acrescente o alho picado e deixe dourar. - Em seguida, coloque a mesma quantidade de água indicada na embalagem para fazer o miojo. - Deixe ferver. - Acrescente o macarrão e em seguida o caldo de galinha. - Mexa por 1 minuto e deixe cozinhar no tempo indicado (geralmente 3 minutos)`, - responsible: 'Matheus Fields', - deadLine: '30/10/24', - }, - { - subject: - 'O tempo é uma grandeza física presente não apenas no cotidiano como também em todas as áreas e cadeiras científicas. Uma definição do mesmo em âmbito científico é por tal não apenas essencial como também, em verdade, um requisito fundamental.', - responsible: 'Siqueira Junior', - deadLine: '30/12/2028', - }, - { - subject: `You went to school to learn girl - Things you never knew before - Like "I" before "E" except after "C" - And why 2 plus 2 makes 4 - Now, now, now - I'm gonna teach you, teach you, teach you - All about love girl, all about love - Sit yourself down, take a seat - All you gotta do is repeat after me`, - responsible: 'Datena', - deadLine: '11/09/2054', - }, - ], - distributions: ['Não sei que é isso', 'Pode crer', 'Daora'], -}; diff --git a/src/pages/Register/index.tsx b/src/pages/Register/index.tsx index a2aff1e..3443a9c 100644 --- a/src/pages/Register/index.tsx +++ b/src/pages/Register/index.tsx @@ -1,5 +1,4 @@ import React, { useRef, useCallback, useState } from 'react'; -import { useParams } from 'react-router-dom'; import * as Yup from 'yup'; import { FormHandles } from '@unform/core'; @@ -19,6 +18,7 @@ import StyledRegisterNewUser from './styles'; interface SignUpData { name: string; + email: string; password: string; password_confirmation: string; office: string; @@ -27,12 +27,7 @@ interface SignUpData { area: string; } -interface ParamsProps { - token: string; -} - const RegisterNewUser = () => { - const params = useParams(); const formRef = useRef(null); const inviteInfo = getInviteInfo(); @@ -49,13 +44,13 @@ const RegisterNewUser = () => { await schema.validate(data, { abortEarly: false }); setOpenRegisterModal(true); - await signUp({ ...data, token: params.token }); + await signUp(data); } catch (err) { const errors = getValidationErrors(err); formRef.current?.setErrors(errors); } }, - [signUp, params], + [signUp], ); return ( diff --git a/src/routes.tsx b/src/routes.tsx index f7b37b3..9731d3e 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -34,14 +34,13 @@ export default function Routes() { - + {userIsAdmin && ( <> - )} diff --git a/src/utils/registerSchemaValidation.ts b/src/utils/registerSchemaValidation.ts index 8490a57..0a2ab12 100644 --- a/src/utils/registerSchemaValidation.ts +++ b/src/utils/registerSchemaValidation.ts @@ -7,6 +7,7 @@ export default { phone: Yup.string().required('Telefone obrigatório'), password: Yup.string().required('Senha obrigatória'), company: Yup.string().required('Empresa obrigatória'), + email: Yup.string().email().required('Email obrigatório'), passwordConfirmation: Yup.string().oneOf( [Yup.ref('password'), null], 'Senhas devem ser iguais', From 935756c6457b9ee984d8689d84ad5a850f73c4a0 Mon Sep 17 00:00:00 2001 From: MatheusCampos-450 Date: Sun, 18 Apr 2021 00:03:47 -0300 Subject: [PATCH 6/6] bugfix(recovery modal): importing component --- src/routes.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes.tsx b/src/routes.tsx index 9731d3e..fc2532f 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Switch, BrowserRouter, Redirect } from 'react-router-dom'; +import { Switch, BrowserRouter } from 'react-router-dom'; import { getMode } from 'services/api';