Skip to content

Commit eb14fc6

Browse files
authored
Merge pull request #37 from infoshareacademy/hotfix/db-rules
Functions in services.js updated to match new firebase access rules
2 parents aa3c53d + 5203252 commit eb14fc6

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

src/pages/AddNewPlace/AddNewPlace.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ class FormAddPlace extends Component {
3737
handleTextChange = (e, { value, name }) => this.setState({ [name]: value });
3838
handleCheckboxChange = (e, { checked, name }) => this.setState({ [name]: checked });
3939

40-
addToData = () => addAttraction(this.state)
41-
.then(() => getAttractionsAsArray()
40+
addToData = () =>
41+
addAttraction(this.state)
42+
.then(() => getAttractionsAsArray()
4243
.then((attractions) => this.context.setAttractionList(attractions))
43-
);
44+
)
45+
;
4446

4547
resetState = () => this.setState({
4648
name: "",

src/services.js

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,28 @@ const API_KEY = "AIzaSyD2TGrCzks3qlgYeCkAIrqAxdXgM4xJxOo";
33
const REGISTER_URL = `https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=${API_KEY}`;
44
const LOG_IN_URL = `https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=${API_KEY}`;
55

6-
export const getFavoriteAttractionIdsFromFirebase = (userId) =>
7-
fetch(
8-
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json`
6+
// firebase rules:
7+
// {
8+
// "rules": {
9+
// "attractions": {
10+
// ".read": true,
11+
// ".write": "auth != null"
12+
// },
13+
// "users": {
14+
// "$uid": {
15+
// ".read": "$uid === auth.uid",
16+
// ".write": "$uid === auth.uid"
17+
// }
18+
// }
19+
// }
20+
// }
21+
22+
export const getFavoriteAttractionIdsFromFirebase = (userId) => {
23+
const idToken = JSON.parse(localStorage.getItem("tripcityUser")).idToken;
24+
return fetch(
25+
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json?auth=${idToken}`
926
).then((response) => response.json());
27+
};
1028

1129
export const getAttractions = () =>
1230
fetch(ATTRACTIONS_URL + ".json").then((response) => response.json());
@@ -29,18 +47,21 @@ export const getFavoriteAttractionIds = (userId) =>
2947
(attractions) => attractions || null
3048
);
3149

32-
export const addAttraction = (attraction) =>
33-
fetch(ATTRACTIONS_URL + ".json", {
50+
export const addAttraction = (attraction) => {
51+
const idToken = JSON.parse(localStorage.getItem("tripcityUser")).idToken;
52+
return fetch(ATTRACTIONS_URL + ".json?auth=" + idToken, {
3453
method: "POST",
3554
body: JSON.stringify(attraction),
3655
});
56+
};
3757

38-
export const toggleFavorite = (attractionId, userId) =>
39-
getFavoriteAttractionIds(userId).then((attractionIds) => {
58+
export const toggleFavorite = (attractionId, userId) => {
59+
const idToken = JSON.parse(localStorage.getItem("tripcityUser")).idToken;
60+
return getFavoriteAttractionIds(userId).then((attractionIds) => {
4061
if (attractionIds === null) {
4162
const data = JSON.stringify({ [attractionId]: true });
4263
return fetch(
43-
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json`,
64+
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json?auth=${idToken}`,
4465
{
4566
method: "PUT",
4667
body: data,
@@ -50,7 +71,7 @@ export const toggleFavorite = (attractionId, userId) =>
5071
if (attractionIds[attractionId] === true) {
5172
delete attractionIds[attractionId];
5273
return fetch(
53-
`https://tripcity-app.firebaseio.com/users/${userId}/favourites/${attractionId}.json`,
74+
`https://tripcity-app.firebaseio.com/users/${userId}/favourites/${attractionId}.json?auth=${idToken}`,
5475
{
5576
method: "DELETE",
5677
}
@@ -59,13 +80,14 @@ export const toggleFavorite = (attractionId, userId) =>
5980
attractionIds[attractionId] = true;
6081
const data = JSON.stringify(attractionIds);
6182
return fetch(
62-
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json`,
83+
`https://tripcity-app.firebaseio.com/users/${userId}/favourites.json?auth=${idToken}`,
6384
{
6485
method: "PUT",
6586
body: data,
6687
}
6788
);
6889
});
90+
};
6991

7092
export const getFavoriteAttractionsAsArray = (userId) =>
7193
Promise.all([

0 commit comments

Comments
 (0)