как я помещаю свой логин с другим уровнем пользователя, как это если уровень 1, то пользователь его суперадмин, если 2 уровень, то пользователь его администратор и если его 3 его использует я использую angular 7 nodejs и mongodb это ссылка на мой проект https://github.com/Каммиказы/проект
это мой код
файл авторизации getUserDetails(имя пользователя,пароль){ вернуть this.http.post('api/логин',{ имя пользователя, пароль }) }
компонент входа
login() {
let username = this.loginForm.value.username;
let password = this.loginForm.value.password;
this.Auth.getUserDetails(username,password).subscribe(data =>{
if (data.success){
this.router.navigate(['homepage'])
this.Auth.setLoggedIn(true)
//sdsadad
}else{
document.getElementById("erro").style.visibility = "visible";
window.setTimeout("location.href='login'",3000);
}
})
}
nodejs
app.post('/api/login', async (req,res)=>{
const {username,password}=req.body
const resp = await User.findOne({ username: username}).select('+password')
if (password==null){
res.json({success:false,
message:" password can not be empty"
})
}else if (username==null){
res.json({success:false,
message:" username can not be empty "
})
}
else if (!resp){
res.json({success:false,
message:"incorrect password"
})
}
else if (!await bcrypt.compare(password, resp.password)){
//if (!resp){
res.json({success:false,
message:"incorrect password"
})
}else {
///sessions
req.session.user=username
req.session.save()
res.json({
success:true
})
}
})
вы должны сохранить роль в строке, а затем просто проверить, используя ли после подписки
да, я хочу навигировать пользователя с определенной ролью, что я должен изменить





// declare golbal variable
responce: any;
login() {
let username = this.loginForm.value.username;
let password = this.loginForm.value.password;
this.Auth.getUserDetails(username, password).subscribe(data => {
this.responce = data
if (this.responce.user == 'level1') {
this.router.navigate(['homepage'])
this.Auth.setLoggedIn(true)
//sdsadad
} else if (this.responce.user == 'level2') {
this.router.navigate(['secondpage'])
}
else if (this.responce.user == 'level3') {
this.router.navigate(['thirdpage'])
}
})
}
не работает это ссылка на мой проект github.com/Каммиказы/проект что я делаю не так
вы не сохраняете ответ в глобальной переменной и пока не сравниваете строковое значение роли пользователя, потому что, возможно, вы не объявили роль пользователя
как я это делаю, я новый, используя angular, я храню все данные в mongodb
просто сохраните роль пользователя в строковой переменной и отправьте данные, которые вы сохраняете при создании пользователя. Например: пользователь вводит значения для регистрации в то время, когда решает, находится ли пользователь на уровне 1, уровне 2 или уровне 3.
спасибо, я нашел решение, чтобы войти в систему с уровнями доступа, теперь у меня есть другая проблема, я хочу использовать ту же страницу, но я хочу, чтобы на той же странице было другое меню, один суперадмин, другой для администратора, а другой для сотрудников.
просто показать контент конкретному пользователю. создайте три разных меню и покажите конкретное меню соответствующему пользователю. Пример: <div *ngIf = "user.role=='admin'">считайте этот div своим меню </div> <div *ngIf = "user.role=='superadmin'">считайте этот div своим меню </div>
Я все готов найти решение, но спасибо за помощь, хорошего дня, нашей ночи и хорошей работы, если вы работаете с Мухаммадом Абдуллой.
Вы хотели перейти к пользователю с определенной ролью?