В настоящее время все зарегистрированные пользователи могут выполнять операции 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 и маршруте.Каждый пользователь должен видеть только те акции, которые он добавил в портфель.Не у всех пользователей.