본문 바로가기
프로젝트/MMOP(추천시스템_최종프로젝트)

사용자 피드백 반영(리뷰 탭 수정, 비밀번호 변경 탭 수정)

by 수쨔앙 2022. 12. 21.

1. 마이페이지 리뷰 탭 수정

사용자 피드백을 계속 받고 있는데 

설문조사때 체크한 향수가 리뷰로 들어가는 부분이 문제인 것 같다

리뷰 내용만 지우자고 회의를 해서 빈칸만 없애는 작업을 했는데 

뭔가 더 근본적으로 설문조사로 인해 추가된 리뷰라는 표시가 있어야 할 것 같다는 의견이 나와서 

오늘 다시 수정을 해야한다

현재 화면인데 좌측 상단에 설문조사 표시를 띄워주자

이건 쉽다

삼항연산자 사용해서 

${data['survey']==true ? `<span class="review_survey">설문</span>` : ``}

띡 해주면 끝

 

 

 

2. 마이페이지 비밀번호 변경 시 기존 비밀번호 체크하기

그리고 마이페이지에서 비밀번호 재설정을 할 때 기존 비밀번호 입력을 받아서 처리하자....ㅜㅜ

백도 프론트도 수정해야된다아아아아악.....

 

https://ssungkang.tistory.com/entry/DjangoUser-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0-checkpassword

 

[Django]User 비밀번호 변경하기, check_password

User password 변경하기 User의 password 를 변경해보도록 하겠습니다. home.html 에는 password를 변경하러 가는 링크가 있습니다. 비밀번호 변경 링크를 통해 change_pw.html 에 도착하면 {{error}} # 한 번에 제출

ssungkang.tistory.com

 

먼저 기존 비밀번호를 가져오고

기존 비밀번호와 입력한 비밀번호가 일치하는지 확인해서

일치하면 진행하고 불일치하면 에러 메세지를 띄워주자!

 

기존 패스워드를 입력받을 origin_password를 추가해주고

기존 비밀번호와 입력한 값을 가져왔다 그런데

기존 비밀번호는 hash값이고 입력받은 값은 그냥 값인데 이걸 어떻게 비교를 해주냐...

입력받은 값이 기존 비밀번호와 똑같으면 hash 처리 했을때 같아지지 않을까 하고

비밀번호 변경을 입력하면서 확인해보니까 같지 않더라......ㅜㅜ 후........ 그렇지 된다면 보안에 아주 문제가 생기겠지....

 

그래서 3시간동안 뻘짓을 하고 다시 찾아본 결과 

Check_password가 있더라 이걸 한번 사용해보자

 

    def update(self, instance, validated_data):
        instance.email = validated_data.get('email', instance.email)
        instance.username = validated_data.get('username', instance.username)
        instance.phone_number = validated_data.get('phone_number', instance.phone_number)
        instance.origin_password = validated_data.get('origin_password')
        print(instance.password)
        print(instance.origin_password)
        if check_password(instance.password, instance.origin_password):
            print("일치")
        else:
            print("불일치")
        password = validated_data.get('password')
        if password:
            instance.set_password(password)
        instance.save()
        return instance

 

이렇게 했더니 계속 불일치가 나오더라..ㅜㅜ 

일치가 나와야되는데도 불일치가 나와서 check_password의 인자 조건을 보니까

앞이 스트링이고 뒤값이 해시값이더라..ㅠㅜㅜ 조건 잘 확인하고 하자....

 

    def update(self, instance, validated_data):
        instance.email = validated_data.get('email', instance.email)
        instance.username = validated_data.get('username', instance.username)
        instance.phone_number = validated_data.get('phone_number', instance.phone_number)
        origin_password = validated_data.get('origin_password')
        print(instance.password)
        print(origin_password)
        if check_password(origin_password, instance.password):
            password = validated_data.get('password')
            if password:
                instance.set_password(password)
            instance.save()
        else:
            raise serializers.ValidationError("기존 비밀번호가 일치하지않습니다!")
        
        return instance

요렇게 잘 바꿔주니 완벽!

 

 

728x90

댓글