diff --git a/package.json b/package.json
index 33739b84709522b0282612e489d26578783ee60e..5a1a654078335f223c61882baf2da29ce78bc2fc 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,7 @@
   "dependencies": {
     "@material-ui/core": "^4.11.3",
     "@material-ui/icons": "^4.11.2",
+    "@material-ui/lab": "^4.0.0-alpha.58",
     "@testing-library/jest-dom": "^5.11.4",
     "@testing-library/react": "^11.1.0",
     "@testing-library/user-event": "^12.1.10",
diff --git a/src/api/getSeniorList.ts b/src/api/getSeniorList.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d300c33e90ef584b234b5521d052a7a5797260f6
--- /dev/null
+++ b/src/api/getSeniorList.ts
@@ -0,0 +1,4 @@
+import axios from 'axios';
+
+export const getSeniorList = async (name: string): Promise<string[]> =>
+  axios.get(`/api/web/seniors/by_name/${name}`).then((res) => res.data);
diff --git a/src/api/setReservation.ts b/src/api/setReservation.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0d10fafc65d92eb6788c249c5c531dd2212c3db8
--- /dev/null
+++ b/src/api/setReservation.ts
@@ -0,0 +1,4 @@
+import axios from 'axios';
+
+export const setReservation = async (reservation: any): Promise<void> =>
+  axios.options('/api/web/reservations', {}).then((res) => console.log(res));
diff --git a/src/components/Auth/ChoseRole/ChoseRole.tsx b/src/components/Auth/ChoseRole/ChoseRole.tsx
index 334e2bbdf6582d738c62608511cfc49ff848b5f6..558f33a91552709b544484aeb6e34176d91d6830 100644
--- a/src/components/Auth/ChoseRole/ChoseRole.tsx
+++ b/src/components/Auth/ChoseRole/ChoseRole.tsx
@@ -5,6 +5,7 @@ import { setRole } from 'api/setRole';
 import { useHistory } from 'react-router-dom';
 import { AuthRoutes } from 'api/routes';
 import { AuthContext } from 'components/Auth/AuthContext';
+import { getRole } from 'api/getRole';
 
 /**
  * Page that let's users decide role between available roles.
@@ -17,11 +18,10 @@ export const ChoseRole: FC = () => {
   const { setIsAuth } = useContext(AuthContext);
 
   const choseAndForward = (role: string): void => {
-    // Set role in the server.
-    setRole(role);
     setIsAuth(true);
-    // Push to homepage.
-    history.push(`${AuthRoutes.dashboard}${AuthRoutes.home}`);
+    setRole(role).then(() =>
+      history.push(`${AuthRoutes.dashboard}${AuthRoutes.home}`),
+    );
   };
 
   useEffect(() => {
diff --git a/src/components/Auth/SignUpForm/SeniorType.ts b/src/components/Auth/SignUpForm/SeniorType.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ffda2b4b8caf4dba210b0132cca0a4bfa1b3dcb6
--- /dev/null
+++ b/src/components/Auth/SignUpForm/SeniorType.ts
@@ -0,0 +1,12 @@
+export type SeniorType = {
+  username: string;
+  password: string;
+  firstName: string;
+  lastName: string;
+  email: string;
+  phoneNumber: number;
+  address: number;
+  name: string;
+  memberCardNumber: number;
+  notes: string;
+};
diff --git a/src/components/Authorization/Authorization.tsx b/src/components/Authorization/Authorization.tsx
index 08db3cea5572ddc10184b44cece73f59e49e5ce7..f63265ece6abbabb13fb33a7ae5083496d3269a9 100644
--- a/src/components/Authorization/Authorization.tsx
+++ b/src/components/Authorization/Authorization.tsx
@@ -4,6 +4,8 @@ import { NonAuthRoutes } from 'api/routes';
 import { Redirect } from 'react-router-dom';
 import { Unauthorized } from 'components/Unauthorized/Unauthorized';
 import { AuthContext } from 'components/Auth/AuthContext';
+import { useRole } from 'hooks/useRole';
+import { useAuth } from 'hooks/useAuth';
 
 const HandleIsAuth: FC<{ isAuth: boolean }> = ({ isAuth }) =>
   isAuth ? (
@@ -35,11 +37,12 @@ export const withAuthorization = (allowedRoles: string[]) => <
   const ComponentWithAuthorization: FC<T> = (
     props: Omit<T, keyof WithAuthProps>,
   ) => {
-    const { role, isAuth } = useContext(AuthContext);
-    console.log(`ROLE ${role} AUTH ${isAuth}`);
+    const [role, setRole, isLoading] = useRole();
+    const [isAuth] = useAuth();
+    console.log(`ROLE ${role} AUTH ${isAuth} LOADED ${isLoading}`);
 
     /* eslint-disable no-nested-ternary */
-    return typeof isAuth === null && role === null ? (
+    return isAuth === null || isLoading ? (
       <BlurCircular />
     ) : // props comes afterwards so the can override the default ones.
     allowedRoles.includes(role) && isAuth ? (
diff --git a/src/components/Dashboard/ReservationPage/Reservation/SeniorSearch.tsx b/src/components/Dashboard/ReservationPage/Reservation/SeniorSearch.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..fea0da2630d2e768f2c99a80ab895fcbaacee240
--- /dev/null
+++ b/src/components/Dashboard/ReservationPage/Reservation/SeniorSearch.tsx
@@ -0,0 +1,43 @@
+/* eslint-disable react/jsx-props-no-spreading */
+import React, { FC, useState } from 'react';
+import TextField from '@material-ui/core/TextField';
+import Autocomplete from '@material-ui/lab/Autocomplete';
+import { getSeniorList } from 'api/getSeniorList';
+
+export const SeniorSearch: FC = () => {
+  const [value, setValue] = useState<string | null>(null);
+  const [inputValue, setInputValue] = useState<string>('');
+  const [options, setOptions] = useState<string[]>(['']);
+
+  const handleChange = (newValue: string): void => {
+    setInputValue(newValue);
+    const MIN_SEARCH_LENGTH = 3;
+    if (newValue.length >= MIN_SEARCH_LENGTH) {
+      getSeniorList(newValue).then((list) => console.log(list));
+    }
+  };
+
+  return (
+    <div>
+      <div>{`value: ${value !== null ? `'${value}'` : 'null'}`}</div>
+      <div>{`inputValue: '${inputValue}'`}</div>
+      <br />
+      <Autocomplete
+        value={value}
+        onChange={(event: any, newValue: string | null) => {
+          setValue(newValue);
+        }}
+        inputValue={inputValue}
+        onInputChange={(event, newInputValue) => {
+          handleChange(newInputValue);
+        }}
+        id="senior-searcher"
+        options={options}
+        style={{ width: 300 }}
+        renderInput={(params) => (
+          <TextField {...params} label="Search a senior" variant="outlined" />
+        )}
+      />
+    </div>
+  );
+};
diff --git a/src/components/Dashboard/ReservationPage/ReservationDialog.tsx b/src/components/Dashboard/ReservationPage/ReservationDialog.tsx
index 499f130e01f6e5ecb2c9cd2bdc2da37d665113d3..ecc04aeeb3d419f9ace1d720f9e4fc219c51ab89 100644
--- a/src/components/Dashboard/ReservationPage/ReservationDialog.tsx
+++ b/src/components/Dashboard/ReservationPage/ReservationDialog.tsx
@@ -1,7 +1,5 @@
 import React, { FC } from 'react';
 import {
-  Grid,
-  Typography,
   Dialog,
   DialogActions,
   DialogContent,
@@ -9,15 +7,10 @@ import {
   DialogTitle,
   Button,
 } from '@material-ui/core';
-import AddIcon from '@material-ui/icons/Add';
-import Fab from '@material-ui/core/Fab';
-import { NavBar } from 'components/Dashboard/HomePage/NavBar';
-import { Reservation } from 'components/Dashboard/ReservationPage/Reservation/Reservation';
 import { useReservations } from 'hooks/useReservations';
 import { ReservationProps } from 'components/Dashboard/ReservationPage/Reservation/ReservationProps';
 import { SubmitHandler, useForm } from 'react-hook-form';
 import { InputField } from 'components/Auth/InputField/InputField';
-import { useStyles } from './ReservationPage.style';
 
 type ReservationDialogProps = {
   handleClose: () => void;
@@ -27,7 +20,6 @@ export const ReservationDialog: FC<ReservationDialogProps> = ({
   handleClose,
   isOpen,
 }: ReservationDialogProps) => {
-  const classes = useStyles();
   const { control, handleSubmit } = useForm<ReservationProps>();
 
   const reservation = useReservations();
@@ -41,68 +33,53 @@ export const ReservationDialog: FC<ReservationDialogProps> = ({
 
   return (
     <div data-testid="ReservationDialog">
-      <Grid container direction="column" className={classes.paddingBottom}>
-        <div className={classes.root}>
-          <Grid item>
-            <NavBar />
-          </Grid>
+      <Dialog
+        open={isOpen}
+        onClose={handleClose}
+        aria-labelledby="form-dialog-title"
+      >
+        <form onSubmit={handleSubmit(onSubmit)} data-testid="Form">
+          <DialogTitle id="form-dialog-title">Book New Reservation</DialogTitle>
+          <DialogContent>
+            <DialogContentText>
+              Write here below the details of your next reservation
+            </DialogContentText>
 
-          <Dialog
-            open={isOpen}
-            onClose={handleClose}
-            aria-labelledby="form-dialog-title"
-          >
-            <form onSubmit={handleSubmit(onSubmit)} data-testid="Form">
-              <DialogTitle id="form-dialog-title">
-                Book New Reservation
-              </DialogTitle>
-              <DialogContent>
-                <DialogContentText>
-                  Write here below the details of your next reservation
-                </DialogContentText>
-
-                <InputField
-                  name="name"
-                  label="Name Reservation"
-                  type="text"
-                  control={control}
-                />
-                <InputField
-                  name="date"
-                  label="Reservation date"
-                  type="date"
-                  control={control}
-                />
-                <InputField
-                  name="time"
-                  label="Department Time"
-                  type="time"
-                  control={control}
-                />
-                <InputField
-                  name="destination"
-                  label="Destination"
-                  type="text"
-                  control={control}
-                />
-              </DialogContent>
-              <DialogActions>
-                <Button onClick={handleClose} color="primary">
-                  Cancel
-                </Button>
-                <Button
-                  type="submit"
-                  fullWidth
-                  variant="contained"
-                  color="primary"
-                >
-                  Insert
-                </Button>
-              </DialogActions>
-            </form>
-          </Dialog>
-        </div>
-      </Grid>
+            <InputField
+              name="name"
+              label="Name Reservation"
+              type="text"
+              control={control}
+            />
+            <InputField
+              name="date"
+              label="Reservation date"
+              type="date"
+              control={control}
+            />
+            <InputField
+              name="time"
+              label="Department Time"
+              type="time"
+              control={control}
+            />
+            <InputField
+              name="destination"
+              label="Destination"
+              type="text"
+              control={control}
+            />
+          </DialogContent>
+          <DialogActions>
+            <Button onClick={handleClose} color="primary">
+              Cancel
+            </Button>
+            <Button type="submit" fullWidth variant="contained" color="primary">
+              Insert
+            </Button>
+          </DialogActions>
+        </form>
+      </Dialog>
     </div>
   );
 };
diff --git a/src/hooks/useRole.ts b/src/hooks/useRole.ts
index 785a9793d68e38bc9aad578169aa195a0d84f9fc..217383ef569e9460e032229a00d7a9b43897e74b 100644
--- a/src/hooks/useRole.ts
+++ b/src/hooks/useRole.ts
@@ -4,8 +4,10 @@ import { useEffect, useState } from 'react';
 export const useRole = (): [
   string,
   React.Dispatch<React.SetStateAction<string>>,
+  boolean,
 ] => {
   const [role, setRole] = useState('');
+  const [isLoading, setIsLoading] = useState(true);
 
   useEffect(() => {
     let isMounted = true;
@@ -14,11 +16,12 @@ export const useRole = (): [
     getRole().then((responseRole) => {
       if (isMounted) {
         setRole(responseRole);
+        if (role !== null) setIsLoading(false);
       }
     });
     return () => {
       isMounted = false;
     };
   }, []);
-  return [role, setRole];
+  return [role, setRole, isLoading];
 };
diff --git a/yarn.lock b/yarn.lock
index da12648f2fedb3c73a162c22f141baa02fa82a19..725104bc99c5f46a2bffe4b1cf607cf34e1fc602 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1565,6 +1565,17 @@
   dependencies:
     "@babel/runtime" "^7.4.4"
 
+"@material-ui/lab@^4.0.0-alpha.58":
+  version "4.0.0-alpha.58"
+  resolved "https://registry.yarnpkg.com/@material-ui/lab/-/lab-4.0.0-alpha.58.tgz#c7ebb66f49863c5acbb20817163737caa299fafc"
+  integrity sha512-GKHlJqLxUeHH3L3dGQ48ZavYrqGOTXkFkiEiuYMAnAvXAZP4rhMIqeHOPXSUQan4Bd8QnafDcpovOSLnadDmKw==
+  dependencies:
+    "@babel/runtime" "^7.4.4"
+    "@material-ui/utils" "^4.11.2"
+    clsx "^1.0.4"
+    prop-types "^15.7.2"
+    react-is "^16.8.0 || ^17.0.0"
+
 "@material-ui/styles@^4.11.3":
   version "4.11.3"
   resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2"