diff --git a/packages/play-node-go/src/components/Button/Guest/Guest.js b/packages/play-node-go/src/components/Button/Guest/Guest.js
new file mode 100644
index 0000000..7989092
--- /dev/null
+++ b/packages/play-node-go/src/components/Button/Guest/Guest.js
@@ -0,0 +1,34 @@
+import React from "react";
+import authServices from "../../../services/authServices";
+
+const Guest = ({ dispatch }) => {
+ const handleClick = async (e) => {
+ e.preventDefault();
+ // dispatch to guest endpoint
+ const guestResponse = await authServices.guestService();
+
+ if (guestResponse.errors) {
+ const authError = guestResponse.errors[0].auth;
+ return dispatch({
+ type: "ERR",
+ message: "AUTH_ERROR",
+ body: { authError },
+ });
+ }
+
+ return dispatch({
+ type: "AUTH",
+ message: "GUEST",
+ body: guestResponse,
+ });
+ };
+ return (
+ <>
+
+ >
+ );
+};
+
+export default Guest;
diff --git a/packages/play-node-go/src/components/Form/Auth/Auth.js b/packages/play-node-go/src/components/Form/Auth/Auth.js
index 87d0234..c567db6 100644
--- a/packages/play-node-go/src/components/Form/Auth/Auth.js
+++ b/packages/play-node-go/src/components/Form/Auth/Auth.js
@@ -1,45 +1,49 @@
-import React, { useState } from 'react';
+import React, { useState } from "react";
-import Login from '../Login/Login';
-import Signup from '../Signup/Signup';
+import Login from "../Login/Login";
+import Signup from "../Signup/Signup";
+import Guest from "../../Button/Guest/Guest";
const Auth = (props) => {
- const [ showForm, setShowForm ] = useState('login')
+ const [showForm, setShowForm] = useState("login");
const { state, dispatch } = props;
return (
<>
-
{setShowForm('login')}}
+
{
+ setShowForm("login");
+ }}
>
-
Login
+
Login
- {
- showForm === 'login'
- ?
- : <>>
- }
+ {showForm === "login" ? (
+
+ ) : (
+ <>>
+ )}
{setShowForm('signup')}}
+ className="nav__section nav__section--auth"
+ onClick={() => {
+ setShowForm("signup");
+ }}
>
-
Signup
+
Signup
- {
- showForm === 'signup'
- ?
- : <>>
- }
+ {showForm === "signup" ? (
+
+ ) : (
+ <>>
+ )}
+
+
+
>
);
-}
+};
export default Auth;
diff --git a/packages/play-node-go/src/reducers/auth/reducer.auth.js b/packages/play-node-go/src/reducers/auth/reducer.auth.js
index ce220de..9152c95 100644
--- a/packages/play-node-go/src/reducers/auth/reducer.auth.js
+++ b/packages/play-node-go/src/reducers/auth/reducer.auth.js
@@ -1,20 +1,23 @@
export const authReducer = (state, action) => {
switch (action.message) {
- case 'LOGIN':
- return loginReducer(state, action);
-
- case 'SIGNUP':
+ case "LOGIN":
return loginReducer(state, action);
- case 'LOGOUT':
+ case "SIGNUP":
+ return loginReducer(state, action);
+
+ case "GUEST":
+ return loginReducer(state, action);
+
+ case "LOGOUT":
return state;
default:
return state;
- }
-}
+ }
+};
function loginReducer(state, action) {
const newUser = action.body;
- return {...state, user: newUser };
-}
\ No newline at end of file
+ return { ...state, user: newUser };
+}
diff --git a/packages/play-node-go/src/services/authServices.js b/packages/play-node-go/src/services/authServices.js
index 2ecbb52..261aa77 100644
--- a/packages/play-node-go/src/services/authServices.js
+++ b/packages/play-node-go/src/services/authServices.js
@@ -1,43 +1,58 @@
-import config from '../config';
+import config from "../config";
const authEndpoint = config.authAddress;
-const signupEndpoint = `${authEndpoint}/signup`
-const loginEndpoint = `${authEndpoint}/login`
+const signupEndpoint = `${authEndpoint}/signup`;
+const loginEndpoint = `${authEndpoint}/login`;
+const guestEndpoint = `${authEndpoint}/guest`;
var headers = new Headers();
-headers.append('Content-Type', 'application/json');
-headers.append('Accept', 'application/json');
-headers.append('Sec-Fetch-Site', 'cross-site')
+headers.append("Content-Type", "application/json");
+headers.append("Accept", "application/json");
+headers.append("Sec-Fetch-Site", "cross-site");
-const loginService = async(formData) => {
+const loginService = async (formData) => {
const response = await fetch(loginEndpoint, {
- method: 'POST',
- credentials: 'include',
+ method: "POST",
+ credentials: "include",
body: JSON.stringify(formData),
- headers: headers
+ headers: headers,
})
- .then(res => res.text())
- .then(text => JSON.parse(text))
- .catch(err => err);
-
+ .then((res) => res.text())
+ .then((text) => JSON.parse(text))
+ .catch((err) => err);
+
return response;
-}
+};
const signupService = async (formData) => {
const response = await fetch(signupEndpoint, {
- method: 'POST',
- credentials: 'include',
+ method: "POST",
+ credentials: "include",
body: JSON.stringify(formData),
- headers: headers
+ headers: headers,
})
- .then(res => res.text())
- .then(text => JSON.parse(text))
- .catch(err => err);
+ .then((res) => res.text())
+ .then((text) => JSON.parse(text))
+ .catch((err) => err);
return response;
-}
+};
+
+const guestService = async () => {
+ const response = await fetch(guestEndpoint, {
+ method: "POST",
+ credentials: "include",
+ headers,
+ })
+ .then((res) => res.text())
+ .then((text) => JSON.parse(text))
+ .catch((err) => err);
+
+ return response;
+};
export default {
loginService,
- signupService
-}
\ No newline at end of file
+ signupService,
+ guestService,
+};