node, vue

Node, Vue 일지 #6 (20210907) 회원 탈퇴

uni5948 2021. 9. 9. 11:05

6. 회원 탈퇴

 -회원 탈퇴 구현

 *mypage에서 회원 탈퇴 버튼 생성(vue Mypage.vue)

 *마이 페이지에서 회원 정보 수정과 탈퇴를 실행할 수 있도록 2개의 버튼을 만들어 각각의 화면을 구성한다.

 *회원 탈퇴 버튼 클릭 시 회원 탈퇴 화면을 나타내고 그 안에 버튼을 하나 만들어 클릭 시 회원 탈퇴가 이루어 지도록 한다.

<template>

    <div>

        <h3>마이 페이지</h3> <hr />

        <input type="button" @click="menu=1" value="회원정보 수정" />

        <input type="button" @click="menu=2" value="회원 탈퇴" />

        <div v-if="menu===1">

            회원정보 수정

        </div>

        <div v-if="menu===2">

            <input type="button"  value="회원 탈퇴"  @click="deleteHandle "/>

        </div>

    </div>

</template>

 

 *화면 확인

회원 탈퇴 화면

 *회원 탈퇴 화면의 회원 탈퇴 버튼 클릭 시 이루어질 methods 구현(vue Mypage.vue)

 *회원 탈퇴는 토큰이 있어야 하므로 data에 토큰 변수를 입력하고 headers에 토큰 변수를 넣어준다.

 *버튼 클릭 시 탈퇴 확인 유무를 묻는 알림창 표시, 탈퇴 완료 후 home 화면으로 이동과 메뉴바 자동 갱신 추가.

<script>

   import axios from 'axios';

    export default {

        methods:{

            async deleteHandle(){

                const ret = confirm('탈퇴할까요?');

                ifret ) {

                    const url = "/member/delete";

                    const response = await axios.delete(url, {

                        headers : {

                            "Content-Type":"application/json",

                            "token" : this.token,

                        },

                        data:{

                        }

                    });

                    console.log(response);

                    if(response.data.ret === 1) {

                        alert(response.data.data);

                        sessionStorage.removeItem("MyToken");

                        this.$emit('changeMenu'0);

                         this.$emit('changeLogged'); 

                    }

                }

            }

        },

        data() {

            return {

                menu  : 1,

                token : sessionStorage.getItem("MyToken"),

            }

        }

    }

</script>

 

 *node delete 생성(node member.js)

 *탈퇴는 토큰이 있어야 하므로 checkToken으로 토큰 확인.

 *회원 탈퇴 버튼 클릭 시 auth.js에서 인증 후 넘어오는 토큰에 포함된 아이디 값을 변수로 지정한다.

 **auth.js 오류 수정 if(typeof(user.idx) === 'undefined') {

 

//127.0.0.1:3000/member/delete

router.delete('/delete'checkTokenasync function(reqresnext){

   try{

       //인증 후 넘어오는 토큰에 포함된 아이디 값

    const userid = req.idx//auth 참고

    

    //db연결

    const dbconn = await mongoclient.connect(mongourl);

    const coll = dbconn.db(mongodb).collection(mongocoll);

 

    //삭제할 db 조건

    const query = {_id : userid};

    const result = await coll.deleteOne(query);

    //console.log(result);

    if(result.deletedCount === 1){

        return res.send({ret : 1data : "회원 탈퇴 되었습니다."});

    }

    return res.send({ret : 0data : "회원 탈퇴 실패 했습니다."});

   }

   catch(error){

    console.error(error);

    res.send({ret:-1data:error}); //에러

    } 

});

 

 *회원 탈퇴 실행(크롬)

회원 탈퇴 알림창 표시

 *탈퇴 후 토큰이 삭제 되고 home 화면으로 이동한다.

회원 탈퇴
console 화면