diff --git a/src/app/api/auth.js b/src/app/api/auth.js index d01dceb..32d2f09 100644 --- a/src/app/api/auth.js +++ b/src/app/api/auth.js @@ -35,11 +35,18 @@ function signup({ }; Object.entries(body).forEach(([key, value]) => { - value == "" && delete body[key] + value == "" && delete body[key]; }); return authClient.post(`/signup`, body); +} +function userPersonalData(token) { + const localClient = create({ + baseURL: "http://wpd.brazilsouth.cloudapp.azure.com:8080/users", + }); + localClient.setHeader("Authorization", `Bearer ${token}`); + return localClient.get(`/me`); } -export { login, signup }; +export { login, signup, userPersonalData }; diff --git a/src/app/screens/LoginScreen.js b/src/app/screens/LoginScreen.js index f3e58b8..5639cec 100644 --- a/src/app/screens/LoginScreen.js +++ b/src/app/screens/LoginScreen.js @@ -11,14 +11,12 @@ import Screen from "../components/Screen"; import colors from "../config/colors"; import { dimensions } from "../config/dimensions"; -import jwdDecode from "jwt-decode"; import { AuthContext } from "../auth/context"; import authStorage from "../auth/storage"; import assets from "../config/assets"; import Button from "../components/Button"; import { TouchableNativeFeedback } from "react-native-gesture-handler"; -// import authApi from '../api/auth'; -import login from "../api/auth"; +import {login, userPersonalData} from "../api/auth"; const phoneRegex = RegExp( /^\(?[\(]?([0-9]{2})?\)?[)\b]?([0-9]{4,5})[-. ]?([0-9]{4})$/ @@ -79,15 +77,14 @@ export default function LoginScreen(props) { const handleSubmit = async (name, password, setLoginFailed) => { const result = await login(name, password); - console.log(JSON.stringify(result)); if (!result.ok) return setLoginFailed(true); + authStorage.setToken(result.data); setLoginFailed(false); - const user = jwdDecode(result.data); - authContext.setUser(user); - console.log("usuário: " + JSON.sstringify(user)); - authStorage.setToken(result.data); + const user = await userPersonalData(result.data); + user.ok && authContext.setUser(user.data); + }; const [loginFailed, setLoginFailed] = useState(false); diff --git a/src/app/screens/RegisterScreen.js b/src/app/screens/RegisterScreen.js index 3837194..2fde494 100644 --- a/src/app/screens/RegisterScreen.js +++ b/src/app/screens/RegisterScreen.js @@ -4,7 +4,7 @@ import { FormField, ErrorMessage, } from "../components/forms"; -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useContext } from "react"; import { StyleSheet, View, Text, TouchableNativeFeedback } from "react-native"; import Screen from "../components/Screen"; import { dimensions } from "../config/dimensions"; @@ -19,7 +19,10 @@ import SearchablePicker from "../components/SearchablePicker"; import { states, statesToCities } from "../assets/cities_states"; import { useFormikContext } from "formik"; import Checkbox from "../components/forms/CheckBox"; -import {signup} from "../api/auth"; +import {signup, login, userPersonalData} from "../api/auth"; +import { AuthContext } from "../auth/context"; +import authStorage from "../auth/storage"; +import jwdDecode from "jwt-decode"; const phoneRegex = RegExp( /^\(?[\(]?([0-9]{2})?\)?[)\b]?([0-9]{4,5})[-. ]?([0-9]{4})$/ @@ -227,6 +230,7 @@ function MaterialCommunityIconsCustom({ ); } export default function RegisterScreen(props) { + const authContext = useContext(AuthContext); const _moment = moment(); const [date, setDate] = useState(_moment); const [singUpFailed, setSingUpFailed] = useState(false); @@ -239,9 +243,31 @@ export default function RegisterScreen(props) { } }; + const automaticLogin = async (form) => { + const result = await login(form.number, form.password); + + if (!result.ok) return; + + authStorage.setToken(result.data); + const user = await userPersonalData(result.data); + user.ok && authContext.setUser(user.data); + + } + const handleSubmit = async (form) => { - const result = await signup({...form, dateofborn: date.format("DD/MM/yyyy")}); - console.log(result); + const formDate = date.format("DD/MM/yyyy") === moment().format("DD/MM/yyyy") ? "" : date; + + const result = await signup({...form, dateofborn: formDate}) + switch (result.status) { + case 200: + automaticLogin(form) + break; + case 422: + // setError() + + default: + + } }; return (