То, что у вас сейчас есть:
.get('/dashboard', auth, async (req, res) => {
try {
const users = await User.find({}).lean()
res.render('pages/dashboard', {users})
} catch (err) {
console.log(err)
res.status(500).send('er ging iets mis')
}
})
выполняет запрос, чтобы получить всех пользователей в базе данных, а затем передает результат в шаблон, поэтому на странице отображаются все ваши пользователи. Чтобы отобразить только данные пользователя, который вошел в систему, вы должны передать в шаблон только данные пользователя, который вошел в систему (не всех пользователей).
Я проверил промежуточное ПО auth
из связанного репозитория и вижу, что оно проверяет авторизацию путем декодирования токена (выданного пользователю при входе в систему), сохраненного в запросе cook ie. Промежуточное программное обеспечение также заботится о том, чтобы найти (из БД) пользователя, связанного с маркером запроса, то есть зарегистрированного пользователя, оно сохраняет этого пользователя в объекте запроса как req.user
. Следовательно, маршрут, который отображает данные одного пользователя, должен выглядеть примерно так:
.get('/userPage', auth, async (req, res) => {
try {
// The auth middleware already took care of fetching the
// data of the logged-in user
const user = req.user;
res.render('pages/userPage', {user})
} catch (err) {
console.log(err)
res.status(500).send('er ging iets mis')
}
})
Я использую шаблон pages/userPage
в этом маршруте, потому что шаблон, который у вас есть для панели мониторинга, создан для Чтобы отобразить список пользователей, чтобы отобразить только одного пользователя, вам нужно изменить шаблон панели мониторинга или просто создать отдельный шаблон для этого. Шаблон может быть примерно таким:
<%- include ('../partials/head') %>
<body>
<%- include ('../partials/header') %>
<p>Welkom <%= user.firstname %></p>
<p>Leeftijd: <%= user.age %></p>
<%- include ('../partials/nav') %>
</body>
Надеюсь, это поможет.