본문 바로가기

Project 기록/와글와글(web)

[프로젝트]벤 당한 유저를 접근 못 하게 하자 (react, nodejs,mysql)

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인지 방금 알았다

 

쓰는덴 이상 없다.

 

 

 

 

 

 

 

 

 

 

 

반응형