def send_password_recovery_email(self, username, email): ''' 비밀번호를 분실했을 때, username과 등록된 email 주소가 맞으면 패스워드를 변경할 수 있는 일회용 Token을 생성해 이메일로 전송한다. @type username: string @param username: 비밀번호를 찾으려는 유저 이름 @type email: string @param email: 등록된 E-mail 주소 @rtype: None @return: None ''' session = model.Session() user = self._get_user(session, username) if user.email != email: raise InvalidOperation("No account found with that email address.") session.query(model.LostPasswordToken).filter_by(user_id=user.id).delete() session.flush() generated_string = ''.join([random.choice(string.lowercase + string.uppercase + string.digits) for i in range(24)]) token = model.LostPasswordToken(user_id=user.id, code=generated_string) session.add(token) session.commit() session.close() url = 'http://' + etc.arara_settings.WARARA_SERVER_ADDRESS + '/account/recover/%s/%s/' % (username, generated_string) title = arara_settings.MAIL_TITLE['password_recovery'] content = arara_settings.MAIL_CONTENT['password_recovery'] + '<a href=\'%s\'>%s</a>' % (url, url) send_mail(title, email, content)
def send_id_recovery_email(self, email): ''' ID를 잃어버렸을 때, e-mail 기반으로 id를 찾아서 그 이메일로 id를 전송해주는 함수. 성공할 경우 True, 실패할 경우 False를 반환한다. @type email: string @param email: 이메일 주소 @rtype: bool @return: 1. 성공 시 : True 2. 실패 시 : False ''' session = model.Session() query = session.query(model.User).filter_by(email=email) try: user = query.one() session.close() except NoResultFound: session.close() return False title = arara_settings.MAIL_TITLE['id_recovery'] content = arara_settings.MAIL_CONTENT['id_recovery'] content += ' Here is your ARA account username which is associated with %s <br /><br /> ' % email content += ' Your ID : %s <br /><br />' % user.username content += ' Please visit http://' + arara_settings.WARARA_SERVER_ADDRESS + '<br /><br />' content += ' This is post-only mailing. <br /> Thanks. ' send_mail(title, email, content) return True
def send_id_recovery_email(self, email): ''' ID를 잃어버렸을 때, e-mail 기반으로 id를 찾아서 그 이메일로 id를 전송해주는 함수. 성공할 경우 True, 실패할 경우 False를 반환한다. @type email: string @param email: 이메일 주소 @rtype: bool @return: 1. 성공 시 : True 2. 실패 시 : False ''' session = model.Session() query = session.query(model.User).filter_by(email=email) try: user = query.one() session.close() except NoResultFound: session.close() return False title = arara_settings.MAIL_TITLE['id_recovery'] content = arara_settings.MAIL_CONTENT['id_recovery'] content += ' Here is your ARA account username which is associated with %s <br /><br /> ' % email content += ' Your ID : %s <br /><br />' % user.username content += ' Please visit http://' + arara_settings.WARARA_SERVER_ADDRESS + '<br /><br />' content += ' This is post-only mailing. <br /> Thanks. ' send_mail(title, email, content) return True
def _send_activation_code(self, email, username, activation_code): ''' 회원 가입하는 사용자 email로 activation_code를 보내는 함수 @type email: string @param email: 사용자 E-mail @type username: string @param username: 사용자의 User ID @type activation_code: string @param activation_code: Confirm Key @rtype: none @return: None ''' # TODO: exception 적절하게 handling 하기 # TODO: _charset 이 왜 euc_kr 로 되어있는 걸까? title = etc.arara_settings.MAIL_TITLE['activation'] content = etc.arara_settings.MAIL_CONTENT['activation'] confirm_url = 'http://' + etc.arara_settings.WARARA_SERVER_ADDRESS + '/account/confirm/%s/%s' % (username.strip(), activation_code) confirm_link = '<a href=\'%s\'>%s</a>' % (confirm_url, confirm_url) confirm_key = '<br />Confirm Key : %s' % activation_code send_mail(title, email, content + confirm_link + confirm_key)
def _send_activation_code(self, email, username, activation_code): ''' 회원 가입하는 사용자 email로 activation_code를 보내는 함수 @type email: string @param email: 사용자 E-mail @type username: string @param username: 사용자의 User ID @type activation_code: string @param activation_code: Confirm Key @rtype: none @return: None ''' # TODO: exception 적절하게 handling 하기 # TODO: _charset 이 왜 euc_kr 로 되어있는 걸까? title = etc.arara_settings.MAIL_TITLE['activation'] content = etc.arara_settings.MAIL_CONTENT['activation'] confirm_url = 'http://' + etc.arara_settings.WARARA_SERVER_ADDRESS + '/account/confirm/%s/%s' % ( username.strip(), activation_code) confirm_link = '<a href=\'%s\'>%s</a>' % (confirm_url, confirm_url) confirm_key = '<br />Confirm Key : %s' % activation_code send_mail(title, email, content + confirm_link + confirm_key)
def send_password_recovery_email(self, username, email): ''' 비밀번호를 분실했을 때, username과 등록된 email 주소가 맞으면 패스워드를 변경할 수 있는 일회용 Token을 생성해 이메일로 전송한다. @type username: string @param username: 비밀번호를 찾으려는 유저 이름 @type email: string @param email: 등록된 E-mail 주소 @rtype: None @return: None ''' session = model.Session() user = self._get_user(session, username) if user.email != email: raise InvalidOperation("No account found with that email address.") session.query( model.LostPasswordToken).filter_by(user_id=user.id).delete() session.flush() generated_string = ''.join([ random.choice(string.lowercase + string.uppercase + string.digits) for i in range(24) ]) token = model.LostPasswordToken(user_id=user.id, code=generated_string) session.add(token) session.commit() session.close() url = 'http://' + etc.arara_settings.WARARA_SERVER_ADDRESS + '/account/recover/%s/%s/' % ( username, generated_string) title = arara_settings.MAIL_TITLE['password_recovery'] content = arara_settings.MAIL_CONTENT[ 'password_recovery'] + '<a href=\'%s\'>%s</a>' % (url, url) send_mail(title, email, content)