Как мне подключить пользователей Firestore к их данным? - PullRequest
0 голосов
/ 03 февраля 2019

В настоящее время все зарегистрированные пользователи могут выполнять операции CRUD с портфелем акций, но все пользователи могут видеть доступ к другим данным пользователя.Как это сделать, когда пользователи могут просматривать и выполнять операции только с собственными данными?

Я пользуюсь firestore и пытался изменить правила безопасности, но безрезультатно.Я считаю, что мне нужно выполнить операцию, чтобы получить идентификатор пользователя, а затем отобразить результаты на странице.Я борюсь с этим.

// CreateProject.js Where user add stock to portfolio
class CreateProject extends Component {
  state = {
    title: '',
  }
  handleChange = (e) => {
    this.setState({
      [e.target.id]: e.target.value
    })
  }
  handleSubmit = (e) => {
    e.preventDefault();
    this.props.createProject(this.state);
    this.props.history.push('/dashboard');
  }


  render() {
    const { auth } = this.props;
if (!auth.uid) return <Redirect to='/signin' /> 
return (
  <div className="container">
    <form className="white" onSubmit={this.handleSubmit}>
      <h5 className="grey-text text-darken-3">Add Stock to Portfolio</h5>
      <div className="input-field">
      <input type="text" id='title' onChange={this.handleChange} />
        <label htmlFor="title">Enter ticker</label>
      </div>
      <div className="input-field">
        <button className="btn pink lighten-1">Add to Portfolio</button>
      </div>
    </form>
  </div>
)
  }
    }

const mapStateToProps = (state) => {
  return {
    auth: state.firebase.auth
  }
}

const mapDispatchToProps = dispatch => {
  return {
    createProject: (project) => dispatch(createProject(project))
  }
}

//  dashboard.js Stocks are then added to a portfolio called "Dashboard"
class Dashboard extends Component {
  render() {
    const { projects, auth} = this.props;
    if (!auth.uid) return <Redirect to='/signin' /> 

    return (
      <div className="dashboard container">
        <div className="row">
          <div className="col s12 m6">
            <ProjectList projects={projects} />
          </div>
        </div>
      </div>
    )
  }
}

const mapStateToProps = (state) => {
  return {
    projects: state.firestore.ordered.projects,
    auth: state.firebase.auth,
  }
}

export default compose(
  connect(mapStateToProps),
  firestoreConnect([
    { collection: 'projects', orderBy: ['createdAt', 'desc'] },
  ])
)(Dashboard)

Компонент CreateProject создает компонент ProjectSummary, который в конечном итоге отображается на компоненте Dashboard и маршруте.Каждый пользователь должен видеть только те акции, которые он добавил в портфель.Не у всех пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...