diff --git a/admin-ui/src/App.tsx b/admin-ui/src/App.tsx
index b35ccf1e..c1ca130c 100644
--- a/admin-ui/src/App.tsx
+++ b/admin-ui/src/App.tsx
@@ -23,11 +23,14 @@ import { NutritionEdit } from "./Nutrition/NutritionEdit";
import { NutritionList } from "./Nutrition/NutritionList";
import { PersonEdit } from "./People/PersonEdit";
import { PersonList } from "./People/PersonList";
-import { Register } from "./People/Register";
+import { Register as PeopleRegister } from "./People/Register";
import { ResetPassword } from "./People/ResetPassword";
import { ProductCreate } from "./Products/ProductCreate";
import { ProductEdit } from "./Products/ProductEdit";
import { ProductList } from "./Products/ProductList";
+import { SocialLoginList } from "./SocialLogin/SocialLoginList";
+import { Register as SocialLoginRegister } from "./SocialLogin/Register";
+import { SocialLoginEdit } from "./SocialLogin/SocialLoginEdit";
function App() {
const auth = useAuth();
@@ -46,6 +49,7 @@ function App() {
Person: { excludeFields: ["id"] },
Ingredient: { excludeFields: ["id"] },
Match: { excludeFields: ["id"] },
+ SocialLoginUser: { excludeFields: ["id"] }
},
})
.then((resolvedValue) => setDataProvider(resolvedValue))
@@ -111,7 +115,7 @@ function App() {
/>
- } />
+ } />
}
@@ -119,6 +123,21 @@ function App() {
>
)}
+
+ {auth.currentPerson?.role === "app_admin" && (
+ <>
+
+
+
+ } />
+
+ >
+ )}
) : (
"loading..."
diff --git a/admin-ui/src/People/PersonList.tsx b/admin-ui/src/People/PersonList.tsx
index 693e1b31..0df550cf 100644
--- a/admin-ui/src/People/PersonList.tsx
+++ b/admin-ui/src/People/PersonList.tsx
@@ -12,32 +12,14 @@ import {
useRecordContext,
} from "react-admin";
import { useNavigate } from "react-router-dom";
+import UserRole from "../components/UserRole";
+
type Person = {
role: string;
rowId: string;
};
-const UserRole = (props: FieldProps) => {
- const record = useRecordContext();
-
- const roles: { [key: string]: string | undefined } = {
- APP_ADMIN: "Admin",
- APP_MEAL_DESIGNER: "Meal Designer",
- APP_USER: "Client",
- };
-
- if (!record) {
- return loading person;
- }
- const userRole = roles[record.role] || "Anonymous";
- console.log(record.role);
- {
- console.log("userRole", userRole);
- }
- return {userRole};
-};
-
const ResetPassword = (props: FieldProps) => {
const navigate = useNavigate();
const record = useRecordContext();
@@ -69,6 +51,7 @@ const PersonActions = () => {
);
};
+
export const PersonList = (props: ListProps) => {
return (
diff --git a/admin-ui/src/SocialLogin/Register.tsx b/admin-ui/src/SocialLogin/Register.tsx
new file mode 100644
index 00000000..924b6dad
--- /dev/null
+++ b/admin-ui/src/SocialLogin/Register.tsx
@@ -0,0 +1,77 @@
+import { useApolloClient } from "@apollo/client";
+import {
+ Button,
+ FormControl,
+ Grid,
+ InputLabel,
+ MenuItem,
+ Select,
+ TextField
+} from "@mui/material";
+import { useState } from "react";
+import { useNavigate } from "react-router-dom";
+import { registerSocialLoginUser } from "./service";
+
+
+export const Register = () => {
+ const [fullName, setFullName] = useState("");
+ const [email, setEmail] = useState("");
+ const [loginMode, setLoginMode] = useState("");
+ const client = useApolloClient();
+ const navigate = useNavigate();
+ const isValid = fullName && email && loginMode;
+
+
+ return (
+
+
+ {
+ setFullName(e.target.value);
+ }}
+ />
+
+ {
+ setEmail(e.target.value);
+ }}
+ />
+
+
+ Login Mode
+
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/admin-ui/src/SocialLogin/SocialLoginEdit.tsx b/admin-ui/src/SocialLogin/SocialLoginEdit.tsx
new file mode 100644
index 00000000..1d17b90d
--- /dev/null
+++ b/admin-ui/src/SocialLogin/SocialLoginEdit.tsx
@@ -0,0 +1,46 @@
+import {
+ Edit,
+ EditProps,
+ SelectInput,
+ SimpleForm,
+ TextInput
+} from "react-admin";
+
+
+export const SocialLoginEdit = (props: EditProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/admin-ui/src/SocialLogin/SocialLoginList.tsx b/admin-ui/src/SocialLogin/SocialLoginList.tsx
new file mode 100644
index 00000000..7f17bf23
--- /dev/null
+++ b/admin-ui/src/SocialLogin/SocialLoginList.tsx
@@ -0,0 +1,83 @@
+import React from "react";
+import {
+ List,
+ Datagrid,
+ ListProps,
+ FieldProps,
+ TextField,
+ useRecordContext,
+ EditButton,
+ ExportButton,
+ TopToolbar,
+ Button
+} from "react-admin";
+import { useNavigate } from "react-router-dom";
+import UserRole from "../components/UserRole";
+
+
+const SocialLoginActions = () => {
+ const navigate = useNavigate();
+ return (
+
+
+ );
+};
+
+type LoginModeRecord = {
+ loginMode: string;
+};
+
+const LoginMode = (props: FieldProps) => {
+ const record = useRecordContext();
+ if (!record) return loading login mode...;
+
+ const loginModes: { [key: string]: string | undefined } = {
+ GOOGLE: "Google",
+ FACEBOOK: "Facebook",
+ };
+
+ return {loginModes[record.loginMode ?? ""] || "Unknown"};
+};
+
+type UserStatusRecord = {
+ status: string;
+};
+
+const UserStatus = (props: FieldProps) => {
+ const record = useRecordContext();
+ if (!record) return loading login mode...;
+
+ const UserStatus: { [key: string]: string | undefined } = {
+ PENDING: "Pending",
+ ACTIVE: "Active",
+ INACTIVE: "InActive"
+ };
+
+ return {UserStatus[record.status ?? ""] || "Unknown"};
+};
+
+export const SocialLoginList = (props: ListProps) => {
+ return(
+
+
} >
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
\ No newline at end of file
diff --git a/admin-ui/src/SocialLogin/service.ts b/admin-ui/src/SocialLogin/service.ts
new file mode 100644
index 00000000..208690d5
--- /dev/null
+++ b/admin-ui/src/SocialLogin/service.ts
@@ -0,0 +1,35 @@
+import { ApolloClient, gql } from "@apollo/client";
+
+export const registerSocialLoginUserMutation = gql`
+ mutation RegisterSocialLoginUser( $fullName: String! $loginMode: LoginMode! $email: String!) {
+ createSocialLoginUser(
+ input: {
+ socialLoginUser: {
+ fullName: $fullName
+ loginMode: $loginMode
+ email: $email
+ }
+ }
+ ) {
+ socialLoginUser {
+ rowId
+ fullName
+ createdAt
+ }
+ }
+ }
+`;
+
+export const registerSocialLoginUser = async (
+ client: ApolloClient