diff --git a/src/app/api/auth.js b/src/app/api/auth.js
index 2e1ca13..3568b69 100644
--- a/src/app/api/auth.js
+++ b/src/app/api/auth.js
@@ -1,5 +1,6 @@
import { create } from "apisauce";
import authClient from "../auth/authClient";
+import authStorage from "../auth/storage";
function login(name, password) {
return authClient.post(`/login?username=${name}&password=${password}`);
@@ -18,6 +19,7 @@ function signup({
secQuestion,
secQuestionAns,
consent,
+ role,
}) {
const body = {
username: number,
@@ -32,22 +34,41 @@ function signup({
securityquestion: secQuestion,
securityanswer: secQuestionAns,
termsofusage: consent,
- roles: ["ROLE_CLIENT"],
+ roles: role !== "" ? [role] : ["ROLE_CLIENT"],
};
- // Object.entries(body).forEach(([key, value]) => {
- // value == "" && delete body[key];
- // });
+ Object.entries(body).forEach(([key, value]) => {
+ value === "" && delete body[key];
+ });
return authClient.post(`/signup`, body);
}
-function userPersonalData(token) {
+
+async function userPersonalData() {
+ const authToken = await authStorage.getToken()
const localClient = create({
baseURL: "http://wpd.brazilsouth.cloudapp.azure.com:8080/users",
});
- localClient.setHeader("Authorization", `Bearer ${token}`);
+ localClient.setHeader("Authorization", `Bearer ${authToken}`);
+
return localClient.get(`/me`);
}
-export { login, signup, userPersonalData };
+
+async function userActivation(code) {
+ const { username } = await authStorage.getUser();
+ const authToken = await authStorage.getToken()
+ console.log("TOKEN ACTIVATE: "+authToken);
+ console.log("USER NAME: " + username);
+
+ const localClient = create({
+ baseURL: "http://wpd.brazilsouth.cloudapp.azure.com:8080/users",
+ });
+
+ localClient.setHeader("Authorization", `Bearer ${authToken}`);
+
+ return localClient.post(`/activate?username=${username}&activationkey=0b7b37bb-0f6d-4c65-b1b4-d7cc816f52bd`);
+}
+
+export { login, signup, userPersonalData, userActivation };
diff --git a/src/app/screens/AccountScreen.js b/src/app/screens/AccountScreen.js
index e5a1c9f..28cfb63 100644
--- a/src/app/screens/AccountScreen.js
+++ b/src/app/screens/AccountScreen.js
@@ -9,7 +9,6 @@ import { MaterialCommunityIcons, FontAwesome } from "@expo/vector-icons";
import colors from "../config/colors";
import ConfirmationModal from "../components/ConfirmationModal";
-
function UserHeader({ name, fone }) {
return (
@@ -74,16 +73,32 @@ function ProfileItensList({ icon, IconProvider, title, onPress }) {
function AccountScreen(props) {
const { user, setUser } = useContext(AuthContext);
- const [ showLog, setShowLog ] = useState(false);
+ const [showLog, setShowLog] = useState(false);
+ console.log(user);
const logout = () => {
setUser(null);
authStorage.removeToken();
};
+ const activationActions = () => {
+ if (user?.providerActivationKey)
+ props.navigation.navigate("ActivateInstitutionShowCode");
+ else
+ props.navigation.navigate("ActivateInstitutionCode");
+ };
+
+ const showActivation = () => {
+ if (user.role === "ROLE_CLIENT")
+ return !user.active
+ else
+ return true
+ }
+
const profileItems = [
{
icon: "account",
+ show: true,
IconProvider: MaterialCommunityIcons,
title: "Cadastrar pluviômetro",
onPress: () => {
@@ -92,14 +107,16 @@ function AccountScreen(props) {
},
{
icon: "institution",
+ show: showActivation(),
IconProvider: FontAwesome,
title: "ATIVAR INSTITUIÇÃO",
onPress: () => {
- props.navigation.navigate("ActivateInstitution");
+ activationActions();
},
},
{
icon: "information-outline",
+ show: true,
IconProvider: MaterialCommunityIcons,
title: "SOBRE O PROJETO",
onPress: () => {
@@ -108,10 +125,11 @@ function AccountScreen(props) {
},
{
icon: "logout",
+ show: true,
IconProvider: MaterialCommunityIcons,
title: "sair",
onPress: () => {
- setShowLog(true)
+ setShowLog(true);
},
},
// {
@@ -135,16 +153,19 @@ function AccountScreen(props) {
- {profileItems.map(({ icon, IconProvider, title, onPress }) => (
-
-
-
- ))}
+ {profileItems.map(
+ ({ icon, IconProvider, title, onPress, show }) =>
+ show && (
+
+
+
+ )
+ )}
Tippo de instituição:
- {institutionMap[user.institutiontype]}
+
+ {institutionMap[user.institutiontype]}
+
@@ -76,19 +81,24 @@ function Institution({ user, institutionRole }) {
size={30}
color={colors.primary}
/>
- {institutionRole}
+ {roleMap[user.role]}
);
}
-function ValidateCode({ institutionRole, user }) {
+// 950ebd56-7acc-4b45-9366-23a0f814f3f2
+
+// 1199990987
+
+function ValidateCode({ user }) {
return (
-
+
+ Código de ativação:
{
console.log("Forms values: \n" + JSON.stringify(form));
- processOnSubmit(navigation, form, instRole, setShowLog);
+ processOnSubmit(navigation, form, user.role, setShowLog);
}}
>
setShowLog(initialState)}
onDecline={() => setShowLog(initialState)}
/>
-
+
);
diff --git a/src/app/screens/ActivateInstitutionShowCode.js b/src/app/screens/ActivateInstitutionShowCode.js
index f5157e0..daabc8f 100644
--- a/src/app/screens/ActivateInstitutionShowCode.js
+++ b/src/app/screens/ActivateInstitutionShowCode.js
@@ -1,7 +1,10 @@
-import React, { useState, useContext } from "react";
+import React, { useState, useContext, useEffect } from "react";
import { View, Text } from "react-native";
import { dimensions } from "../config/dimensions";
import colors from "../config/colors";
+import authStorage from "../auth/storage";
+import { AuthContext } from "../auth/context";
+import {userPersonalData} from "../api/auth";
function Header() {
return (
@@ -26,10 +29,22 @@ function Header() {
);
}
+export default function ActivateInstitutionShowCode() {
+ const [actCode, setActCode] = useState("");
+
+ const authContext = useContext(AuthContext);
+
+
+ useEffect(() => {
+ if (authContext.user?.providerActivationKey?.activationkey)
+ setActCode(authContext.user.providerActivationKey.activationkey);
+ else
+ userPersonalData().then((userData) => {
+ userData.ok && authContext.setUser(userData.data);
+ setActCode(userData.data.providerActivationKey.activationkey);
+ });
+ }, []);
-export default function ActivateInstitutionShowCode({ route }) {
- const { code } = route.params;
- const [actCode, setActCode] = useState("123456789012");
return (
@@ -52,9 +67,11 @@ export default function ActivateInstitutionShowCode({ route }) {
marginTop: 24,
fontWeight: "bold",
textAlign: "center",
- fontSize: dimensions.text.header
+ fontSize: dimensions.text.header,
}}
- >{actCode}
+ >
+ {actCode}
+
);
}
diff --git a/src/app/screens/LoginScreen.js b/src/app/screens/LoginScreen.js
index 5639cec..255a5f4 100644
--- a/src/app/screens/LoginScreen.js
+++ b/src/app/screens/LoginScreen.js
@@ -79,10 +79,11 @@ export default function LoginScreen(props) {
const result = await login(name, password);
if (!result.ok) return setLoginFailed(true);
- authStorage.setToken(result.data);
+ await authStorage.setToken(result.data);
+ // console.log("TOKEN: " + result.data);
setLoginFailed(false);
- const user = await userPersonalData(result.data);
+ const user = await userPersonalData();
user.ok && authContext.setUser(user.data);
};
diff --git a/src/app/screens/RegisterScreen.js b/src/app/screens/RegisterScreen.js
index 2fde494..d1b8414 100644
--- a/src/app/screens/RegisterScreen.js
+++ b/src/app/screens/RegisterScreen.js
@@ -51,6 +51,7 @@ const validationSchema = Yup.object().shape({
.required("A resposta da pergunta de segurança é obrigatória")
.max(255),
consent: Yup.bool().equals([true], "Este campo é obrigatório"),
+ role: Yup.string(),
});
function LocalDatePicker({ date, setDate, _moment }) {
@@ -218,6 +219,24 @@ function SecQuestionPicker({ name }) {
);
}
+function RolePicker({ name }) {
+ const [items, setItems] = useState([
+ { value: "ROLE_INSTITUTION", label: "Responsável" },
+ { value: "ROLE_CLIENT", label: "Não responsável" },
+ ]);
+
+ return (
+
+ );
+}
+
+
function MaterialCommunityIconsCustom({
name,
color = colors.primary,
@@ -249,7 +268,7 @@ export default function RegisterScreen(props) {
if (!result.ok) return;
authStorage.setToken(result.data);
- const user = await userPersonalData(result.data);
+ const user = await userPersonalData();
user.ok && authContext.setUser(user.data);
}
@@ -258,6 +277,8 @@ export default function RegisterScreen(props) {
const formDate = date.format("DD/MM/yyyy") === moment().format("DD/MM/yyyy") ? "" : date;
const result = await signup({...form, dateofborn: formDate})
+ console.log(result)
+
switch (result.status) {
case 200:
automaticLogin(form)
@@ -285,13 +306,12 @@ export default function RegisterScreen(props) {
institution: "",
secQuestion: "",
secQuestionAns: "",
+ role: "",
consent: false,
}}
onSubmit={(form) => {
comparePassword(form.password, form.confirmPassword);
handleSubmit(form)
- // console.log("cadastro ainda não implementado");
- // console.log("Forms values: \n" + JSON.stringify(form));
}}
validationSchema={validationSchema}
>
@@ -316,7 +336,7 @@ export default function RegisterScreen(props) {
+
+
+ Vínculo institucional:
+
+
+
+
+
+
+
Pergunta de segurança*: