# #javascript #reactjs #firebase
Вопрос:
Я пытаюсь внедрить платежную систему stripe с помощью своего приложения react, в котором я использую firebase для хранения данных пользователей. Я перенял проект у другого разработчика, но столкнулся с проблемами, пытаясь получить идентификатор пользователя для объединения информации.
Я получаю ошибку Uncaught (in promise) FirebaseError: Missing or insufficient permissions.
при запуске моего checkout.js страница… вот что у меня есть:
user.js
class UserStripe {
constructor({ db, auth, firestoreEnvironment }) {
this.db = db
this.auth = auth
this.collections = new StripeCollectionUtil({ db, firestoreEnvironment, auth })
this.env = firestoreEnvironment
}
doCreateUser(uid, email, name, companyName) {
if (!companyName) companyName = null
return this.collections.getCollectionFor('users').doc(uid).set({
email,
name,
companyName,
areasAndTasks: JSON.stringify(defaultAreasAndTasks),
environment: this.env
})
}
getUserProfile() {
let uid = this.auth.currentUser.uid
return this.collections.getCollectionFor('users').doc(uid).get().then(doc => doc.data())
}
getAreasAndTasks() {
return this.getUserProfile().then((userProfile) => JSON.parse(userProfile.areasAndTasks))
}
}
module.exports = UserStripe
и это мое checkout.js
import firebase from 'firebase';
import getStripe from './stripe';
const firestore = firebase.firestore();
export async function createCheckoutSession(){
// without uid
// return firestore.collection()
const checkoutSessionRef = await firestore.collection('customers').doc().collection('checkout_sessions').add(
{price : 'price_1IGEdTKDPaWWeL1ymwWH5Ubb',
success_url : window.location.origin,
cancel_url: window.location.origin,
}
);
checkoutSessionRef.onSnapshot(async (snap) => {
const {sessionid} = snap.data();
if (sessionid) {
const stripe = await getStripe()
stripe.redirectToCheckout({sessionid})
}
});
}
как я могу импортировать uid на страницу оформления заказа, чтобы не получить эту ошибку?
Комментарии:
1. я бы рекомендовал заглянуть в правила firestore вашего проекта, там есть правило, запрещающее доступ на чтение/запись к одному из документов, к которым вы пытаетесь получить доступ в приведенных выше кодах