@@ -3,10 +3,28 @@ const API_KEY = "AIzaSyD2TGrCzks3qlgYeCkAIrqAxdXgM4xJxOo";
33const REGISTER_URL = `https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=${ API_KEY } ` ;
44const 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
1129export 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
7092export const getFavoriteAttractionsAsArray = ( userId ) =>
7193 Promise . all ( [
0 commit comments