Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)