def delete(self, request):
user = get_object_or_404(User, id=request.user.id)
user.withdraw = True
user.withdraw_at = timezone.now()
user.save()
return Response({"message":"회원 비활성화가 되었습니다."}, status=status.HTTP_200_OK)
- 회원을 삭제하는 것이 아닌 비활성화를 하고 비활성화 시간을 저장하도록 했다.
- 회원에 대한 정보들을 바로 삭제가 아닌 별도 보관을 하기 위해서 비활성화를 선택했다.
class UserStatusChange:
def __init__(self):
self.year_ago = timezone.now() - timezone.timedelta(days=365)
self.two_months_ago = timezone.now() - timezone.timedelta(days=60)
# 회원정보 보유기간 지나면 withdraw True로 만듬
def user_withdraw_send_email(self):
user = User.objects.filter(is_admin=False, last_login__lte=self.year_ago)
inactivate_user_email = user.values("email")
inactivate_email_subject = '가까? 마까? 휴면회원 계정 처리 안내'
inactivate_email_body = '고객님 안녕하세요. 가까? 마까?입니다. 저희는 소중한 고객님의 개인정보 보호를 위해 관계 법령에 따라 고객님의 온라인 계정을 별도로 분리 보관할 예정입니다. 휴면계정을 해제하기 위해서는 별도의 인증 동의 절차가 진행될 수 있으므로 편리한 계정 사용이 필요하시다면 지금 바로 가까? 마까?를 방문해주세요.'
if user:
for i in inactivate_user_email:
message = {'email_body': inactivate_email_body, 'to_email': i["email"],'email_subject': inactivate_email_subject}
Util.send_email(message)
user.update(withdraw=True)
# 비활성화가 되고 60일이 지나면 삭제
def user_withdraw_delete(self):
user = User.objects.filter(is_admin=False, withdraw_at__lte=self.two_months_ago, withdraw=True)
delete_user_email = user.values("email")
delete_email_subject = '가까? 마까? 비활성화 계정 삭제'
delete_email_body = '고객님 안녕하세요. 가까? 마까?입니다. 저희는 비활성화계정을 삭제합니다.'
if user:
for i in delete_user_email:
message = {'email_body': delete_email_body, 'to_email': i["email"],'email_subject': delete_email_subject}
Util.send_email(message)
user.delete()
# 로그인 비밀번호 변경이 60일이 지났을 경우 password_expired를 True로 바꿈
def user_password_expired(self):
user = User.objects.filter(is_admin=False, last_password_changed__lte=self.two_months_ago)
user.update(password_expired=True)
- 매일 서버가 12시 정각이 되면 crontab이라는 명령어로 특정 명령어를 실행할 수 있도록 하는데 위의 코드를 실행시킨다.(crontab관련 링크)
- 회원정보 보유기간은 1년으로 설정이 되어있으며 1년이 넘어가게 되면 이메일을 발송하고 user의 상태를 withdraw로 True로 전환시킨다.
- 비활성화가되고 60일이 지나면 이메일을 보내고 유저의 정보를 삭제한다.
- 비밀번호 변경일 같은 경우 비밀번호 만료기능이 있는데 만료일이 60로 기준으로 60일이 지났을 경우 password_expired를 True로 바꾼다.