Project 기록/와글와글(web)
[프로젝트]벤 당한 유저를 접근 못 하게 하자 (react, nodejs,mysql)
휘로그
2020. 9. 25. 05:34
728x90
반응형
채팅앱이다 보니 욕설이나 성희롱이 존재 한다
신고 당한 유저를 이용 못하게 만들자
나쁜사람.
비매너 신고를 받으면 접수를 받고
그 유저를 ben_table에 넣어 주도록 하였다
ben_useer_realid가 회원의 아이디이다
이 테이블에 존재하는 유저는 페이지 어디에 있더라도 알림과 함께 로그인 페이지로 가게 만들자
페이지가 render되기 전
componentWillMount() 안에 코드이다
let user_realid = JSON.parse(localStorage.getItem("user")).user_realid; // 로컬스토리지에서
console.log(user_realid); 유저의 아이디를 가져오자
const box2 = { //박스로 감싸기
user_realid: user_realid,
};
fetch("api/Ben", { //서버에 Ben 라우터를 찾아서 보내기
method: "post",
headers: {
"content-type": "application/json",
},
body: JSON.stringify(box2),
})
.then((res) => res.json())
.then((json) => {
if (json.benTF === false) { //ben 테이블에 아이디가 존재하면 false를 받는다
console.log("입장불가능");
alert("신고가 접수 되어 이용이 불가합니다"); //알람 띄우기
window.location.replace("/"); //처음 화면으로 보내버리기
}
});
server페이지를 보자
router.post("/Ben", (req, res) => {
let realid = req.body.user_realid; //받아온 아이디 realid에 초기화
let sql = "SELECT * FROM ben_table WHERE ben_user_realid = (?)"; // ben_table서 realid와 일치하는것 가져오기
connection.query(sql, [realid], function (err, rows, result) {
let ben_TF = { // true, false 구분하기위한 객체
benTF: true,
};
if (err) {
console.log(err);
} else {
if (rows[0] != undefined) {
if (rows[0].ben_user_realid === undefined) { // 가져온 row가 undefined다?
res.send(ben_TF); == 벤테이블에 존재하지 않는다 true전송
} else {
ben_TF.benTF = false; // row에 뭔가 있다?
res.send(ben_TF); == 벤테이블에 있다 false전송
}
}
}
});
});
벤 당한 아이디로 로그인시도:
다음과 같은 알람이 뜨며
여기로 돌아가 진다
다른 url
/main
/all_message
/message_collect
다 적용해 줘서 접근이 안된다
-끗-
벤이 ben이 아니라 ban인지 방금 알았다
쓰는덴 이상 없다.
반응형