def ensure(self): user = (User.get_by_name(self.name) or User.get_by_email(self.email)) if user is None: password = gen_salt(30) user = User.create_normal(self.name, password, self.email, is_active=True) deliver_email(EmailTemplate.SIGNUP, user.email, { 'username': user.username, 'password': password, }) return user
def request_to_reset_password(username): user = User.get_by_name(username) if not user or user.is_application: abort(404, u'user {0} not found'.format(username)) if not user.email: abort(403, u'user {0} does not have email'.format(username)) # Generate and record the token token = uuid.uuid4() _redis_client.set( raw_key=_PASSWORD_RESET_KEY.format(username=username), val=token.hex, expiration_time=_PASSWORD_RESET_DURATION) deliver_email(EmailTemplate.PASSWORD_RESET, user.email, { 'username': user.username, 'token': token, 'expires_in': _PASSWORD_RESET_DURATION, }) return user, token
def test_deliver_email_with_client(mocker, app): class Client(AbstractMailClient): def __init__(self): self.s = {} def deliver_email(self, receiver, subject, message, cc): self.s.update(receiver=receiver, subject=subject, message=message, cc=cc) t = EmailTemplate.DEBUG cc = ['*****@*****.**', '*****@*****.**'] receiver = '*****@*****.**' c = Client() deliver_email(t, receiver, {'foo': 'bar'}, cc, client=c) assert c.s['receiver'] == receiver assert c.s['subject'] == t.value[1] assert c.s['cc'] == cc
def post(self): """Creates a new user with your site admin authority. We will send you an email of random password if don't specify password explicitly. :form username: The username of new user. :form password: The optional password of new user. :form email: The email of new user. :<header Authorization: Huskar Token (See :ref:`token`) :status 400: The username is used or the format is invalid. :status 200: The new user is created successfully. """ g.auth.require_admin('only admin can add users') username = request.form['username'].strip() password = request.form.get('password', gen_salt(30)) is_generated_password = '******' not in request.form email = request.form['email'].strip() validate_fields(user_schema, {'username': username, 'email': email}) user = User.get_by_name(username) if user: abort(400, u'{0} is used username'.format(username)) try: user = User.create_normal(username, password, email, is_active=True) except NameOccupiedError: abort(400, u'User %s has been archived' % username) audit_log.emit(audit_log.types.CREATE_USER, user=user) if is_generated_password: deliver_email(EmailTemplate.SIGNUP, user.email, { 'username': user.username, 'password': password, }) return api_response()
def deliver_email_safe(*args, **kwargs): try: deliver_email(*args, **kwargs) except EmailDeliveryError: logger.exception('Failed to deliver Email')
def test_deliver_email_value_error(): t = EmailTemplate.DEBUG with pytest.raises(ValueError): deliver_email(t, '*****@*****.**', {})