diff --git a/client/src/App/App.container.jsx.bak b/client/src/App/App.container.jsx.bak
deleted file mode 100644
index 50aa92e44..000000000
--- a/client/src/App/App.container.jsx.bak
+++ /dev/null
@@ -1,78 +0,0 @@
-//Baselined on https://blog.hasura.io/authentication-and-authorization-using-hasura-and-firebase/
-
-import React, { useState, useEffect } from "react";
-import firebase from "../firebase/firebase.utils";
-import App from "./App";
-
-import { gql } from "apollo-boost";
-import { HttpLink } from "apollo-link-http";
-import ApolloClient from "apollo-client";
-import { InMemoryCache } from "apollo-cache-inmemory";
-
-import Spin from "../components/loading-spinner/loading-spinner.component";
-
-const UPSERT_USER = gql`
- mutation upsert_user($authEmail: String!, $authToken: String!) {
- insert_users(
- objects: [{ email: $authEmail, authid: $authToken }]
- on_conflict: { constraint: users_pkey, update_columns: [authid] }
- ) {
- returning {
- authid
- }
- }
- }
-`;
-
-export default function Auth() {
- const [authState, setAuthState] = useState({ status: "loading" });
-
- useEffect(() => {
- return firebase.auth().onAuthStateChanged(async user => {
- if (user) {
- console.log("Current User:", user);
-
- client
- .mutate({
- mutation: UPSERT_USER,
- variables: { authEmail: user.email, authToken: user.uid }
- })
- .then(r => console.log("Successful Upsert", r))
- .catch(error => console.log("Upsert error!!!!", error));
-
- const token = await user.getIdToken();
- const idTokenResult = await user.getIdTokenResult();
- const hasuraClaim =
- idTokenResult.claims["https://hasura.io/jwt/claims"];
- if (hasuraClaim) {
- setAuthState({ status: "in", user, token });
- } else {
- // Check if refresh is required.
- const metadataRef = firebase
- .database()
- .ref("metadata/" + user.uid + "/refreshTime");
- metadataRef.on("value", async () => {
- // Force refresh to pick up the latest custom claims changes.
- const token = await user.getIdToken(true);
- setAuthState({ status: "in", user, token });
- });
- }
- } else {
- setAuthState({ status: "out" });
- }
- });
- }, []);
-
- let content;
- if (authState.status === "loading") {
- content = ;
- } else {
- content = (
- <>
-
- >
- );
- }
-
- return
{content}
;
-}
diff --git a/client/src/App/App.js b/client/src/App/App.js
index 07261d605..ab5968bb8 100644
--- a/client/src/App/App.js
+++ b/client/src/App/App.js
@@ -22,13 +22,6 @@ class App extends React.Component {
this.unsubscribeFromAuth = auth.onAuthStateChanged(async user => {
console.log("Current User:", user);
if (user) {
- // client
- // .mutate({
- // mutation: UPSERT_USER,
- // variables: { authEmail: user.email, authToken: user.uid }
- // })
- // .then(r => console.log("Successful Upsert", r))
- // .catch(error => console.log("Upsert error!!!!", error));
const token = await user.getIdToken();
const idTokenResult = await user.getIdTokenResult();
diff --git a/client/src/components/sign-in-form/sign-in-form.component.jsx b/client/src/components/sign-in-form/sign-in-form.component.jsx
index 393f3a875..c1bf32ec1 100644
--- a/client/src/components/sign-in-form/sign-in-form.component.jsx
+++ b/client/src/components/sign-in-form/sign-in-form.component.jsx
@@ -2,6 +2,7 @@ import React from "react";
import { auth } from "../../firebase/firebase.utils";
import { Form, Icon, Input, Button, Alert } from "antd";
+import { UPSERT_USER } from "../../graphql/user.queries";
class SignInForm extends React.Component {
constructor() {
super();
@@ -12,11 +13,27 @@ class SignInForm extends React.Component {
handleSubmit = e => {
e.preventDefault();
+ const { apolloClient } = this.props;
+
this.props.form.validateFields(async (err, values) => {
if (!err) {
const { email, password } = values;
try {
- await auth.signInWithEmailAndPassword(email, password);
+ const { user } = await auth.signInWithEmailAndPassword(
+ email,
+ password
+ );
+
+ apolloClient
+ .mutate({
+ mutation: UPSERT_USER,
+ variables: { authEmail: user.email, authToken: user.uid }
+ })
+ .then(r => console.log("Successful Upsert", r))
+ .catch(error => {
+ console.log("Upsert error!!!!", error);
+ });
+
this.props.form.resetFields();
} catch (error) {
this.setState({ ...this.state, errorMessage: error.message });
@@ -28,6 +45,7 @@ class SignInForm extends React.Component {
render() {
const { getFieldDecorator } = this.props.form;
const { errorMessage } = this.state;
+
return (
diff --git a/client/src/components/sign-in-form/sign-in-form.container.jsx b/client/src/components/sign-in-form/sign-in-form.container.jsx
new file mode 100644
index 000000000..a177606e3
--- /dev/null
+++ b/client/src/components/sign-in-form/sign-in-form.container.jsx
@@ -0,0 +1,13 @@
+import React from "react";
+import { ApolloConsumer } from "react-apollo";
+import SignInFormComponent from "./sign-in-form.component";
+
+export default function SignInFormContainer() {
+ return (
+
+ {client => {
+ return ;
+ }}
+
+ );
+}
diff --git a/client/src/components/sign-out/sign-out.component.jsx b/client/src/components/sign-out/sign-out.component.jsx
index a9ab53f81..9bb3627d0 100644
--- a/client/src/components/sign-out/sign-out.component.jsx
+++ b/client/src/components/sign-out/sign-out.component.jsx
@@ -1,11 +1,11 @@
import React from "react";
import firebase from "../../firebase/firebase.utils";
-export default function SignOut() {
+export default function SignOut({ match }) {
const signOut = async () => {
try {
await firebase.auth().signOut();
- console.log("Signin out!");
+ console.log("match", match);
} catch (error) {
console.log(error);
}
diff --git a/client/src/graphql/user.queries.js b/client/src/graphql/user.queries.js
index 8b697ec52..dd7af55d3 100644
--- a/client/src/graphql/user.queries.js
+++ b/client/src/graphql/user.queries.js
@@ -6,7 +6,7 @@ export const UPSERT_USER = gql`
objects: [{ email: $authEmail, authid: $authToken }]
on_conflict: { constraint: users_pkey, update_columns: [authid] }
) {
- returning {
+ data {
authid
}
}
diff --git a/client/src/pages/sign-in/sign-in.page.jsx b/client/src/pages/sign-in/sign-in.page.jsx
index a1f8c202c..2de375129 100644
--- a/client/src/pages/sign-in/sign-in.page.jsx
+++ b/client/src/pages/sign-in/sign-in.page.jsx
@@ -1,6 +1,6 @@
import React from "react";
-import SignInComponent from "../../components/sign-in-form/sign-in-form.component";
+import SignInContainer from "../../components/sign-in-form/sign-in-form.container";
export default () => {
- return ;
+ return ;
};
diff --git a/hasura/migrations/1576029072284_update_permission_user_public_table_users/down.yaml b/hasura/migrations/1576029072284_update_permission_user_public_table_users/down.yaml
new file mode 100644
index 000000000..5022ed879
--- /dev/null
+++ b/hasura/migrations/1576029072284_update_permission_user_public_table_users/down.yaml
@@ -0,0 +1,6 @@
+- args:
+ role: user
+ table:
+ name: users
+ schema: public
+ type: drop_insert_permission
diff --git a/hasura/migrations/1576029072284_update_permission_user_public_table_users/up.yaml b/hasura/migrations/1576029072284_update_permission_user_public_table_users/up.yaml
new file mode 100644
index 000000000..abd3f4a2f
--- /dev/null
+++ b/hasura/migrations/1576029072284_update_permission_user_public_table_users/up.yaml
@@ -0,0 +1,14 @@
+- args:
+ permission:
+ allow_upsert: true
+ check: {}
+ columns: []
+ localPresets:
+ - key: ""
+ value: ""
+ set: {}
+ role: user
+ table:
+ name: users
+ schema: public
+ type: create_insert_permission
diff --git a/hasura/migrations/1576029179533_update_permission_user_public_table_users/down.yaml b/hasura/migrations/1576029179533_update_permission_user_public_table_users/down.yaml
new file mode 100644
index 000000000..c5e1a383e
--- /dev/null
+++ b/hasura/migrations/1576029179533_update_permission_user_public_table_users/down.yaml
@@ -0,0 +1,19 @@
+- args:
+ role: user
+ table:
+ name: users
+ schema: public
+ type: drop_insert_permission
+- args:
+ permission:
+ check: {}
+ columns: []
+ localPresets:
+ - key: ""
+ value: ""
+ set: {}
+ role: user
+ table:
+ name: users
+ schema: public
+ type: create_insert_permission
diff --git a/hasura/migrations/1576029179533_update_permission_user_public_table_users/up.yaml b/hasura/migrations/1576029179533_update_permission_user_public_table_users/up.yaml
new file mode 100644
index 000000000..4e6739f81
--- /dev/null
+++ b/hasura/migrations/1576029179533_update_permission_user_public_table_users/up.yaml
@@ -0,0 +1,21 @@
+- args:
+ role: user
+ table:
+ name: users
+ schema: public
+ type: drop_insert_permission
+- args:
+ permission:
+ check: {}
+ columns:
+ - authid
+ - email
+ localPresets:
+ - key: ""
+ value: ""
+ set: {}
+ role: user
+ table:
+ name: users
+ schema: public
+ type: create_insert_permission