This commit is contained in:
2021-06-21 15:14:35 +02:00
parent ab0f65e247
commit 66db7b4748
12 changed files with 207 additions and 300 deletions

View File

@@ -24,6 +24,7 @@ import EditDish from "./components/Dialogs/EditDish";
import Dish from "./components/Dialogs/Dish"; import Dish from "./components/Dialogs/Dish";
import HomeScreen from "./components/Output/HomeScreen"; import HomeScreen from "./components/Output/HomeScreen";
import Cookies from "./components/Dialogs/Cookies"; import Cookies from "./components/Dialogs/Cookies";
import PrivacyPolicy from "./components/Output/PrivacyPolicy"
const theme = createMuiTheme({ const theme = createMuiTheme({
palette: { palette: {
@@ -82,6 +83,9 @@ function App(props) {
<Route path="/kontakt"> <Route path="/kontakt">
<Contact /> <Contact />
</Route> </Route>
<Route path="/privacy">
<PrivacyPolicy />
</Route>
<PrivateRoute <PrivateRoute
path="/newRestaurant" path="/newRestaurant"
component={<NewRestaurant />} component={<NewRestaurant />}

View File

@@ -86,3 +86,12 @@ export const getTodayHours = (workingHours) => {
return workingHours.pn; return workingHours.pn;
} }
}; };
export const validateNIP = (nip) => {
const separateNumbers = nip.split('');
if(separateNumbers.lenght === 10){
} else {
return false;
}
}

View File

@@ -12,15 +12,12 @@ import PhotoIcon from "@material-ui/icons/Photo";
import RoomIcon from "@material-ui/icons/Room"; import RoomIcon from "@material-ui/icons/Room";
import RestaurantMenuIcon from "@material-ui/icons/RestaurantMenu"; import RestaurantMenuIcon from "@material-ui/icons/RestaurantMenu";
import AddIcon from "@material-ui/icons/Add"; import AddIcon from "@material-ui/icons/Add";
import Badge from "@material-ui/core/Badge";
import SearchIcon from "@material-ui/icons/Search"; import SearchIcon from "@material-ui/icons/Search";
import { formatDateBasic } from "../../Services.js";
//-------------- //--------------
import EditRestaurantInfo from "../EditRestaurant/EditRestaurantInfo"; import EditRestaurantInfo from "../EditRestaurant/EditRestaurantInfo";
import EditRestaurantLocation from "../EditRestaurant/EditRestaurantLocation"; import EditRestaurantLocation from "../EditRestaurant/EditRestaurantLocation";
import EditRestaurantMenu from "../EditRestaurant/EditRestaurantMenu"; import EditRestaurantMenu from "../EditRestaurant/EditRestaurantMenu";
import EditRestaurantPhoto from "../EditRestaurant/EditRestaurantPhoto"; import EditRestaurantPhoto from "../EditRestaurant/EditRestaurantPhoto";
import EditRestaurantSubscription from "../EditRestaurant/EditRestaurantSubscription";
import { fetchAllDishes } from "../../actions"; import { fetchAllDishes } from "../../actions";
const useStyles = makeStyles((theme) => ({ const useStyles = makeStyles((theme) => ({
@@ -55,26 +52,8 @@ export default function EditRestaurant(props) {
const history = useHistory(); const history = useHistory();
let { id } = useParams(); let { id } = useParams();
const restaurants = useSelector((state) => state.data.userData.restaurants); const restaurants = useSelector((state) => state.data.userData.restaurants);
const badgeData = {
color: "",
secondaryText: "",
};
const restaurant = restaurants.find(matchId); const restaurant = restaurants.find(matchId);
if (restaurant === undefined) history.push("/"); if (restaurant === undefined) history.push("/");
const badgeInit = () => {
if (
!restaurant.subscriptionActive ||
restaurant.subscriptionActive === false
) {
badgeData.color = "error";
badgeData.secondaryText = "Nieaktywna";
} else {
badgeData.color = "primary";
badgeData.secondaryText = `Aktywna do: ${formatDateBasic(
restaurant.subscriptionDue
)}`;
}
};
dispatch(fetchAllDishes(restaurant._id)); dispatch(fetchAllDishes(restaurant._id));
const handleListItemClick = (event, index) => { const handleListItemClick = (event, index) => {
@@ -84,7 +63,6 @@ export default function EditRestaurant(props) {
function matchId(element) { function matchId(element) {
return element._id === id; return element._id === id;
} }
badgeInit();
return ( return (
<div className="editRestaurant-container"> <div className="editRestaurant-container">
@@ -111,31 +89,10 @@ export default function EditRestaurant(props) {
</ListItemIcon> </ListItemIcon>
<ListItemText primary="Informacje" /> <ListItemText primary="Informacje" />
</ListItem> </ListItem>
<ListItem
button
selected={tab === 1}
onClick={(event) => handleListItemClick(event, 1)}
>
<ListItemIcon>
<Badge
className={classes.root}
anchorOrigin={{ vertical: "top", horizontal: "left" }}
variant="dot"
color={badgeData.color}
>
<DescriptionIcon color="primary" />
</Badge>
</ListItemIcon>
<ListItemText
className={classes.secondary}
primary="Subskrypcja"
secondary={badgeData.secondaryText}
/>
</ListItem>
<ListItem <ListItem
button button
selected={tab === 2} selected={tab === 2}
onClick={(event) => handleListItemClick(event, 2)} onClick={(event) => handleListItemClick(event, 1)}
> >
<ListItemIcon> <ListItemIcon>
<PhotoIcon color="primary" /> <PhotoIcon color="primary" />
@@ -145,7 +102,7 @@ export default function EditRestaurant(props) {
<ListItem <ListItem
button button
selected={tab === 3} selected={tab === 3}
onClick={(event) => handleListItemClick(event, 3)} onClick={(event) => handleListItemClick(event, 2)}
> >
<ListItemIcon> <ListItemIcon>
<RoomIcon color="primary" /> <RoomIcon color="primary" />
@@ -155,7 +112,7 @@ export default function EditRestaurant(props) {
<ListItem <ListItem
button button
selected={tab === 4} selected={tab === 4}
onClick={(event) => handleListItemClick(event, 4)} onClick={(event) => handleListItemClick(event, 3)}
> >
<ListItemIcon> <ListItemIcon>
<RestaurantMenuIcon color="primary" /> <RestaurantMenuIcon color="primary" />
@@ -175,10 +132,9 @@ export default function EditRestaurant(props) {
<Divider /> <Divider />
</div> </div>
{tab === 0 && <EditRestaurantInfo restaurant={restaurant} />} {tab === 0 && <EditRestaurantInfo restaurant={restaurant} />}
{tab === 1 && <EditRestaurantSubscription restaurant={restaurant} />} {tab === 1 && <EditRestaurantPhoto restaurant={restaurant} />}
{tab === 2 && <EditRestaurantPhoto restaurant={restaurant} />} {tab === 2 && <EditRestaurantLocation restaurant={restaurant} />}
{tab === 3 && <EditRestaurantLocation restaurant={restaurant} />} {tab === 3 && <EditRestaurantMenu restaurant={restaurant} />}
{tab === 4 && <EditRestaurantMenu restaurant={restaurant} />}
</div> </div>
); );
} }

View File

@@ -1,65 +0,0 @@
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import DialogTitle from "@material-ui/core/DialogTitle";
import DialogContent from "@material-ui/core/DialogContent";
import Dialog from "@material-ui/core/Dialog";
import Divider from "@material-ui/core/Divider";
import ButtonSecondary from "../Input/ButtonSecondary";
import ButtonPrimary from "../Input/ButtonPrimary";
import IconButton from "@material-ui/core/IconButton";
import CloseIcon from "@material-ui/icons/Close";
export default function PasswordConfirmation(props) {
const loginStyles = makeStyles((theme) => ({
root: {
zIndex: "5 !important",
textAlign: "center",
"& .MuiPaper-root": {
backgroundColor: "#262626",
color: "#bbbbbb",
},
minWidth: "250px",
},
closeButton: {
color: "#bbbbbb",
position: "absolute",
right: theme.spacing(1),
top: theme.spacing(1),
},
}));
const loginClass = loginStyles();
return (
<Dialog
className={loginClass.root}
onClose={props.cancel}
open={props.open}
aria-labelledby="login-title"
>
<DialogTitle id="login-title">Aktywacja subskrypcji</DialogTitle>
<IconButton
className={loginClass.closeButton}
onClick={props.cancel}
aria-label="close"
>
<CloseIcon />
</IconButton>
<Divider />
<DialogContent>
<p>
Płatność została rozpoczęta. Jeżeli chcesz zrealizować teraz,
kliknij przycisk "Zapłać" (zostaniesz przekierowany do portalu
Przelewy24). Jeżeli nie masz teraz ochoty zapłacić, na swoim adresie
email znajdziesz ten sam link do płatności oraz fakturę pro-forma.
(Link do płatności jest ważny 7 dni - po upływie tego czasu transakcja
jest automatycznie anulowana)
</p>
<div className="yesno-dialog-buttons">
<ButtonPrimary onClick={props.cancel} text="Zamknij" />
<ButtonSecondary onClick={props.accept} text="Zapłać" />
</div>
</DialogContent>
</Dialog>
);
}

View File

@@ -1,150 +0,0 @@
import React, { useState } from "react";
import ButtonSecondary from "../Input/ButtonSecondary";
import Divider from "@material-ui/core/Divider";
import axios from "axios";
import { useDispatch, useSelector } from "react-redux";
import { notification, refreshUserData } from "../../actions";
import { backend } from "../../config.js";
import { showBackdrop, hideBackdrop } from "../../actions/toggles";
import PaymentDialog from "../Dialogs/PaymentDialog";
import { openInNewTab, formatDateBasic } from "../../Services.js";
import LocalOfferIcon from '@material-ui/icons/LocalOffer';
export default function EditRestaurantSubscription(props) {
const { subscriptionActive, subscriptionDue } = props.restaurant;
const initialState = {
transactionId: "",
open: false,
};
const [state, setState] = useState(initialState);
const userData = useSelector((state) => state.data.userData);
const token = userData.jwt;
const dispatch = useDispatch();
const handleActivateSubscription = (type) => {
const data = {
restaurantId: props.restaurant._id,
userData: {
firstname: userData.firstname,
lastname: userData.lastname,
userId: userData.userId,
userEmail: userData.userEmail,
NIP: userData.billing.NIP,
adress: userData.billing.adress,
companyName: userData.billing.companyName,
},
type: type,
};
dispatch(showBackdrop());
axios({
method: "POST",
url: backend + "restaurant/subscription",
data: data,
headers: {
"x-auth-token": token,
},
})
.then((response) => {
dispatch(hideBackdrop());
if (response.status === 200) {
setState({ ...state, open: true });
} else {
dispatch(notification("Wystąpił błąd, spróbuj ponownie.", "error"));
}
})
.catch((error) => {
dispatch(hideBackdrop());
dispatch(notification("Wystąpił błąd, spróbuj ponownie.", "error"));
throw error;
});
};
const onCancel = () => {
setState({ ...state, open: false });
};
const onAccept = () => {
dispatch(refreshUserData());
openInNewTab("https://secure.przelewy24.pl/trnRequest/0");
};
return (
<div className="editSubscription-tab">
<PaymentDialog open={state.open} cancel={onCancel} accept={onAccept} />
<div className="subscription-text">
<h3>Subskrypcja</h3>
{subscriptionActive ? (
<h5>Aktywna do: {formatDateBasic(subscriptionDue)}</h5>
) : (
<h5>Nieaktywna</h5>
)}
</div>
{!subscriptionActive && (
<div className="subscription-content">
<p>
Aktywuj subskrypcję, aby Twoja restauracja była widoczna. Na tydzień
przed końcem subskrypcji wyślemy Ci email z możliwością opłacenia
subskrypcji na kolejny okres.
</p>
<div className="subscription-cards">
<div className="subscription-card">
<div className="subscription-title">
<LocalOfferIcon/>
<h1>Za darmo</h1>
</div>
<Divider style={{ width: "100%" }} />
<h2>3 miesiące</h2>
<div className="subscription-desc">
<p>Możesz jednorazowo aktywować darmowe 3 miesiące subskrypcji, by móc spokojnie uzupełnić menu.</p>
</div>
<Divider style={{ width: "100%" }} />
<ButtonSecondary
text="Aktywuj"
onClick={() => handleActivateSubscription(3)}
/>
</div>
<div className="subscription-card">
<div className="subscription-title">
<LocalOfferIcon/>
<h1>50</h1>
</div>
<Divider style={{ width: "100%" }} />
<h2>1 miesiąc</h2>
<div className="subscription-desc">
<p>Aktywuj subskrypcję na jeden miesiąc.</p>
</div>
<Divider style={{ width: "100%" }} />
<ButtonSecondary
text="Aktywuj"
onClick={() => handleActivateSubscription(1)}
/>
</div>
<div className="subscription-card">
<div className="subscription-title">
<LocalOfferIcon/>
<h1>500</h1>
</div>
<Divider style={{ width: "100%" }} />
<h2>1 rok</h2>
<div className="subscription-desc">
<p>Zapłać z góry za cały rok, a otrzymasz dwa miesiące w prezencie.</p>
</div>
<Divider style={{ width: "100%" }} />
<ButtonSecondary
text="Aktywuj"
onClick={() => handleActivateSubscription(12)}
/>
</div>
</div>
</div>
)}
{subscriptionActive && (
<p>
Subskrypcja jest aktywna - Twoja restauracja jest dostępna do
przeglądania dla użytkowników. Jeżeli chcesz żeby restauracja była
niewidoczna, przejdź do zakładki "Informacje"
</p>
)}
</div>
);
}

View File

@@ -1,10 +1,11 @@
import React from "react"; import React from "react";
import { version } from "../../config";
export default class Footer extends React.Component { export default class Footer extends React.Component {
render() { render() {
return ( return (
<div className="footer"> <div className="footer">
<p>Bankai Software @2021 | Menui (v0.6.0)</p> <p>{`Bankai Software @2021 | Menui v${version}`}</p>
</div> </div>
); );
} }

View File

@@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import LogoMain from "../Output/logoMain"; import LogoMain from "../Output/logoMain";
import SearchPanel from "../Input/SearchPanel"; import SearchPanel from "../Input/SearchPanel";
import appstore from "../../public/appstore.png"; //import appstore from "../../public/appstore.png";
import googleplay from "../../public/googleplay.png"; import googleplay from "../../public/googleplay.png";
import { openInNewTab } from "../../Services.js"; import { openInNewTab } from "../../Services.js";
@@ -19,7 +19,7 @@ export default function HomeScreen() {
<div className="hs-bottom"> <div className="hs-bottom">
<h4>Pobierz Menui na telefon</h4> <h4>Pobierz Menui na telefon</h4>
<div> <div>
<img className="hs-bottom-icon" src={appstore} alt="Get Menui from App Store" /> {/* <img className="hs-bottom-icon" src={appstore} alt="Get Menui from App Store" /> */}
<img className="hs-bottom-icon" onClick={() => openInNewTab("https://play.google.com/store/apps/details?id=pl.menui.menui")} src={googleplay} alt="Get Menui from Google Play"/> <img className="hs-bottom-icon" onClick={() => openInNewTab("https://play.google.com/store/apps/details?id=pl.menui.menui")} src={googleplay} alt="Get Menui from Google Play"/>
</div> </div>
</div> </div>

View File

@@ -3,7 +3,6 @@ import ListItemIcon from "@material-ui/core/ListItemIcon";
import ListItemText from "@material-ui/core/ListItemText"; import ListItemText from "@material-ui/core/ListItemText";
import ListItem from "@material-ui/core/ListItem"; import ListItem from "@material-ui/core/ListItem";
import FastfoodIcon from "@material-ui/icons/Fastfood"; import FastfoodIcon from "@material-ui/icons/Fastfood";
import Badge from "@material-ui/core/Badge";
import { makeStyles } from "@material-ui/core/styles"; import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles((theme) => ({ const useStyles = makeStyles((theme) => ({
@@ -25,20 +24,6 @@ const useStyles = makeStyles((theme) => ({
export default function ListItemRestaurant(props) { export default function ListItemRestaurant(props) {
const styles = useStyles(); const styles = useStyles();
const badgeData = {
color: "",
secondaryText: "",
};
const badgeInit = () => {
if (!props.subscriptionActive || props.subscriptionActive === false) {
badgeData.color = "error";
badgeData.secondaryText = "Aktywuj sybskrypcję";
} else {
badgeData.color = "primary";
badgeData.secondaryText = "Subskrypcja aktywna";
}
};
badgeInit();
return ( return (
<ListItem <ListItem
@@ -46,19 +31,11 @@ export default function ListItemRestaurant(props) {
onClick={() => props.onClick(`/editRestaurant/${props.id}`)} onClick={() => props.onClick(`/editRestaurant/${props.id}`)}
> >
<ListItemIcon> <ListItemIcon>
<Badge
className={styles.root}
anchorOrigin={{ vertical: "top", horizontal: "left" }}
variant="dot"
color={badgeData.color}
>
<FastfoodIcon /> <FastfoodIcon />
</Badge>
</ListItemIcon> </ListItemIcon>
<ListItemText <ListItemText
className={styles.secondary} className={styles.secondary}
primary={props.name} primary={props.name}
secondary={badgeData.secondaryText}
/> />
</ListItem> </ListItem>
); );

View File

@@ -0,0 +1,175 @@
import React, { useEffect } from "react";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = makeStyles((theme) => ({
root: {
width: "100%",
height: "100%",
padding: "24px",
textAlign: "justify",
backgroundColor: "#262626",
color: "#bbbbbb",
borderRadius: "24px",
overflow: "scroll"
},
paragraph: {
padding: "8px",
paddingRight: "48px",
paddingLeft: "48px",
margin: "0"
},
header: {
textAlign: "center"
}
}));
export default function PrivacyPolicy() {
useEffect(() => {
document.title = "Menui - Kontakt";
});
const style = useStyles();
return (
<div className={style.root}>
<h1 className={style.header}>Polityka prywatności</h1>
<h3 className={style.header}>§.1 Postanowienia Ogólne</h3>
<p className={style.paragraph}>
1. Administratorem danych jest Bankai Software z siedzibą w Mikołajki,
ul. Czapla 2, NIP: 7422235479 , REGON: 368383562 . Ochrona danych
odbywa się zgodnie z wymogami powszechnie obowiązujących przepisów
prawa, a ich przechowywanie ma miejsce na zabezpieczonych serwerach.
</p>
<p className={style.paragraph}>
2. Dla interpretacji terminów stosuje się słowniczek Regulaminu lub
tak jak zostało to opisane w Polityce Prywatności (jeżeli wynika
to bezpośrednio z opisu).
</p>
<p className={style.paragraph}>
3. Na potrzeby lepszego odbioru Polityki Prywatności termin
Użytkownik zastąpiony został określeniem Ty,  Administrator
My. Termin RODO oznacza Rozporządzenie Parlamentu Europejskiego
i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób
fizycznych w związku z przetwarzaniem danych osobowych i w sprawie
swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE.
</p>
<p className={style.paragraph}>
4. Szanujemy prawo do prywatności i dbamy o bezpieczeństwo danych.
W tym celu używany jest m.in. bezpieczny protokół szyfrowania
komunikacji (SSL).
</p>
<p className={style.paragraph}>
5. Dane osobowe podawane podczas rejestracji traktowane jako poufne
i nie  widoczne dla osób nieuprawnionych.
</p>
<h3 className={style.header}>§2. Administrator Danych</h3>
<p className={style.paragraph}>
1. Usługodawca jest administratorem danych swoich klientów. Oznacza
to, że jeśli posiadasz Konto na naszej stronie, to przetwarzamy
Twoje dane jak: adres e-mail (w przypadku zwykłych użytkowników), lub:
imię, nazwisko, adres e-mail, nazwa, NIP i adres firmy (w przypadku
użytkowników biznesowych restauratorów).
</p>
<p className={style.paragraph}>
2. Dane osobowe przetwarzane :a. zgodnie z przepisami dotyczącymi
ochrony danych osobowych,b. zgodnie z wdrożoną Polityką Prywatności,c.
w zakresie i celu niezbędnym do nawiązania, ukształtowania treści
Umowy, zmiany bądź jej rozwiązania oraz prawidłowej realizacji Usług
świadczonych drogą elektroniczną, w zakresie i celu niezbędnym
do wypełnienia uzasadnionych interesów (prawnie usprawiedliwionych
celów), a przetwarzanie nie narusza praw i wolności osoby, której dane
dotyczą.
</p>
<p className={style.paragraph}>
3. Każda osoba, której dane dotyczą (jeżeli jesteśmy ich
administratorem) ma prawo dostępu do danych, sprostowania, usunięcia
lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia
skargi do organu nadzorczego.
</p>
<p className={style.paragraph}>
4. Kontakt z osobą nadzorującą przetwarzanie danych osobowych
w organizacji Usługodawcy jest możliwy drogą elektroniczną pod adresem
e-mail: menui@menui.pl.
</p>
<p className={style.paragraph}>
5. Zastrzegamy sobie prawo do przetwarzania Twoich danych
po rozwiązaniu Umowy lub cofnięciu zgody tylko w zakresie na potrzeby
dochodzenia ewentualnych roszczeń przed sądem lub jeżeli przepisy
krajowe albo unijne bądź prawa międzynarodowego obligują nas
do retencji danych.
</p>
<p className={style.paragraph}>
6. Usługodawca ma prawo udostępniać dane osobowe Użytkownika
oraz innych jego danych podmiotom upoważnionym na podstawie właściwych
przepisów prawa (np. organom ścigania).
</p>
<p className={style.paragraph}>
7. Usunięcie danych osobowych może nastąpić na skutek cofnięcia zgody
bądź wniesienia prawnie dopuszczalnego sprzeciwu na przetwarzanie
danych osobowych.
</p>
<p className={style.paragraph}>
8. Usługodawca nie udostępniania danych osobowych innym podmiotom
aniżeli upoważnionym na podstawie właściwych przepisów prawa.
</p>
<p className={style.paragraph}>
9. Wdrożyliśmy pseudonimizację, szyfrowanie danych oraz mamy
wprowadzoną kontrolę dostępu dzięki czemu minimalizujemy skutki
ewentualnego naruszenia bezpieczeństwa danych.
</p>
<p className={style.paragraph}>
10. Dane osobowe przetwarzają osoby wyłącznie upoważnione przez nas
albo przetwarzający, z którymi ściśle współpracujemy.
</p>
<h3 className={style.header}>§3. Pliki cookies</h3>
<p className={style.paragraph}>
1. Witryna www.menui.pl używa cookies. to niewielkie pliki
tekstowe wysyłane przez serwer www i przechowywane
przez oprogramowanie komputera przeglądarki. Kiedy przeglądarka
ponownie połączy się ze stroną, witryna rozpoznaje rodzaj urządzenia,
z którego łączy się użytkownik. Parametry pozwalają na odczytanie
informacji w nich zawartych jedynie serwerowi, który je utworzył.
Cookies ułatwiają więc korzystanie z wcześniej odwiedzonych witryn.
Gromadzone informacje dotyczą, języka, rodzaju systemu operacyjnego,
dostawcy usług internetowych, informacji o czasie i dacie, lokalizacji
oraz informacji przesyłanych do witryny za pośrednictwem formularza
kontaktowego.
</p>
<p className={style.paragraph}>
2. Zebrane dane służą do monitorowania i sprawdzenia, w jaki sposób
użytkownicy korzystają z naszych witryn, aby usprawniać funkcjonowanie
serwisu zapewniając bardziej efektywną i bezproblemową nawigację.
Monitorowania informacji o użytkownikach dokonujemy korzystając
z narzędzia Google Analytics, które rejestruje zachowanie użytkownika
na stronie. Cookies identyfikuje użytkownika, co pozwala
na dopasowanie treści witryny, z której korzysta, do jego potrzeb.
Zapamiętując jego preferencje, umożliwia odpowiednie dopasowanie
skierowanych do niego reklam. Stosujemy pliki cookies, aby
zagwarantować najwyższy standard wygody naszego serwisu, a zebrane
dane wykorzystywane jedynie wewnątrz firmy Bankai Software w celu
optymalizacji działań.
</p>
<p className={style.paragraph}>
3. Na naszej witrynie wykorzystujemy następujące pliki cookies: a)
niezbędne pliki cookies, umożliwiające korzystanie z usług
dostępnych w ramach serwisu, np. uwierzytelniające pliki cookies
wykorzystywane do usług wymagających uwierzytelniania w ramach
serwisu; b) pliki cookies służące do zapewnienia bezpieczeństwa,
np. wykorzystywane do wykrywania nadużyć w zakresie uwierzytelniania
w ramach serwisu; c) funkcjonalne pliki cookies, umożliwiające
zapamiętanie wybranych przez użytkownika ustawień i personalizację
interfejsu użytkownika, np. w zakresie wybranego języka lub regionu,
z którego pochodzi użytkownik, rozmiaru czcionki, wyglądu strony
internetowej itp.;
</p>
<p className={style.paragraph}>
4. Użytkownik w każdej chwili ma możliwość wyłączenia lub
przywrócenia opcji gromadzenia cookies poprzez zmianę ustawień
w przeglądarce internetowej. Instrukcja zarządzania plikami cookies
jest dostępna na stronie http://www.allaboutcookies.org/manage-cookies
Dodatkowe dane osobowe, jak adres e-mail, zbierane jedynie
w miejscach, w których użytkownik wypełniając formularz wyraźnie
wyraził na to zgodę. Powyższe dane zachowujemy i wykorzystujemy
tylko do potrzeb niezbędnych do wykonania danej funkcji.
</p>
</div>
);
}

View File

@@ -14,12 +14,11 @@ import ListItemIcon from "@material-ui/core/ListItemIcon";
import HomeIcon from "@material-ui/icons/Home"; import HomeIcon from "@material-ui/icons/Home";
import MailIcon from "@material-ui/icons/Mail"; import MailIcon from "@material-ui/icons/Mail";
import { logout } from "../actions"; import { logout } from "../actions";
import { showRegulamin } from "../actions/toggles.js";
import { makeStyles } from "@material-ui/core/styles"; import { makeStyles } from "@material-ui/core/styles";
import ButtonSecondary from "./Input/ButtonSecondary"; import ButtonSecondary from "./Input/ButtonSecondary";
import ListSubheader from "@material-ui/core/ListSubheader"; import ListSubheader from "@material-ui/core/ListSubheader";
import { useHistory } from "react-router-dom"; import { useHistory } from "react-router-dom";
import GavelIcon from "@material-ui/icons/Gavel"; import FingerprintIcon from '@material-ui/icons/Fingerprint';
const useStyles = makeStyles((theme) => ({ const useStyles = makeStyles((theme) => ({
paper: { paper: {
@@ -56,8 +55,8 @@ export default function TopBar() {
case "kontakt": case "kontakt":
history.push("/kontakt"); history.push("/kontakt");
break; break;
case "regulamin": case "privacy":
dispatch(showRegulamin()); history.push("/privacy");
break; break;
case "register": case "register":
history.push("/register"); history.push("/register");
@@ -137,11 +136,11 @@ export default function TopBar() {
</ListItemIcon> </ListItemIcon>
<ListItemText primary="Kontakt" /> <ListItemText primary="Kontakt" />
</ListItem> </ListItem>
<ListItem button onClick={() => handleClick("regulamin")}> <ListItem button onClick={() => handleClick("privacy")}>
<ListItemIcon> <ListItemIcon>
<GavelIcon /> <FingerprintIcon />
</ListItemIcon> </ListItemIcon>
<ListItemText primary="Regulamin" /> <ListItemText primary="Polityka prywatności" />
</ListItem> </ListItem>
<Divider /> <Divider />
<ListItem> <ListItem>

View File

@@ -1,5 +1,6 @@
//export const backend = "https://api.menui.pl/"; //export const backend = "https://api.menui.pl/";
export const backend = "http://localhost:4000/"; export const backend = "http://localhost:4000/";
export const version = "1.0.1";
export const restaurantTypes = [ export const restaurantTypes = [
"afrykańska", "afrykańska",

View File

@@ -16,7 +16,7 @@ const store = createStore(
rootReducer(history), rootReducer(history),
compose( compose(
applyMiddleware(routerMiddleware(history), thunk), applyMiddleware(routerMiddleware(history), thunk),
window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : f => f //window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : f => f
) )
); );