-
-
-
- Please fill out this field.
-
+import { getCurrentUser, updateUserInfo } from "../services/auth"
+const Dashboard = () => {
+ const [userMetadata, setUserMetaData] = useState(
+ getCurrentUser().user_metadata
+ )
+ return (
+
+
+
+
+ )
+}
export default Dashboard
diff --git a/src/components/login.js b/src/components/login.js
index ee4a243..e4f6285 100644
--- a/src/components/login.js
+++ b/src/components/login.js
@@ -11,45 +11,17 @@ class Login extends React.Component {
[event.target.name]: event.target.value,
})
}
- handleSubmit = event => {
- event.preventDefault()
- handleLogin(this.state)
- }
+
render() {
if (isLoggedIn()) {
navigate(`/user/dashboard`)
}
return (
-
Log in
-
+ You must login
+
)
}
diff --git a/src/services/auth.js b/src/services/auth.js
index 514f8a3..d284c5a 100644
--- a/src/services/auth.js
+++ b/src/services/auth.js
@@ -1,3 +1,4 @@
+import netlifyIdentity from "netlify-identity-widget"
export const isBrowser = () => typeof window !== "undefined"
export const getUser = () =>
isBrowser() && window.localStorage.getItem("gatsbyUser")
@@ -5,21 +6,48 @@ export const getUser = () =>
: {}
const setUser = user =>
window.localStorage.setItem("gatsbyUser", JSON.stringify(user))
-export const handleLogin = ({ username, password }) => {
- if (username === `john` && password === `pass`) {
- return setUser({
- username: `john`,
- name: `Johnny`,
- email: `johnny@example.org`,
+
+export const handleLogin = navigate => {
+ netlifyAuth.authenticate(() => {
+ setUser(netlifyIdentity.currentUser())
+ navigate("/user/dashboard")
+ })
+}
+
+const netlifyAuth = {
+ isAuthenticated: false,
+ user: null,
+ authenticate(callback) {
+ this.isAuthenticated = true
+ netlifyIdentity.open()
+ netlifyIdentity.on("login", user => {
+ this.user = user
+ callback(user)
+ })
+ },
+ signout(callback) {
+ this.isAuthenticated = false
+ netlifyIdentity.logout()
+ netlifyIdentity.on("logout", () => {
+ this.user = null
+ callback()
})
- }
- return false
+ },
}
+
export const isLoggedIn = () => {
- const user = getUser()
- return !!user.username
+ return netlifyAuth.isAuthenticated
}
export const logout = callback => {
setUser({})
- callback()
+ netlifyAuth.signout(callback)
+}
+
+export const getCurrentUser = () => {
+ return netlifyIdentity.currentUser()
+}
+
+export const updateUserInfo = async user_metadata => {
+ console.log(user_metadata)
+ await netlifyIdentity.gotrue.currentUser().update({ data: user_metadata })
}
diff --git a/yarn.lock b/yarn.lock
index d368e5b..46b3d0c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8076,6 +8076,11 @@ neo-async@^2.5.0, neo-async@^2.6.1:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+netlify-identity-widget@^1.5.6:
+ version "1.5.6"
+ resolved "https://registry.yarnpkg.com/netlify-identity-widget/-/netlify-identity-widget-1.5.6.tgz#b841d4d469ad37bdc47e876d87cc2926aba2c302"
+ integrity sha512-DvWVUGuswOd+IwexKjzIpYcqYMrghmnkmflNqCQc4lG4KX55zE3fFjfXziCTr6LibP7hvZp37s067j5N3kRuyw==
+
next-tick@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"