def signup(): next_url = util.get_next_url() form = None if config.CONFIG_DB.has_email_authentication: form = form_with_recaptcha(SignUpForm()) save_request_params() if form.validate_on_submit(): user_db = model.User.get_by('email', form.email.data) if user_db: form.email.errors.append('This email is already taken.') if not form.errors: user_db = create_user_db( None, util.create_name_from_email(form.email.data), form.email.data, form.email.data, ) user_db.put() task.activate_user_notification(user_db) cache.bump_auth_attempt() return flask.redirect(flask.url_for('welcome')) if form and form.errors: cache.bump_auth_attempt() title = 'Sign up' if config.CONFIG_DB.has_email_authentication else 'Sign in' return flask.render_template('auth/auth.html', title=title, html_class='auth', next_url=next_url, form=form, **urls_for_oauth(next_url))
def user_forgot(token=None): if not config.CONFIG_DB.has_email_authentication: flask.abort(418) form = auth.form_with_recaptcha(UserForgotForm(obj=auth.current_user_db())) if form.validate_on_submit(): cache.bump_auth_attempt() email = form.email.data user_dbs, cursors = util.get_dbs( model.User.query(), email=email, active=True, limit=2, ) count = len(user_dbs) if count == 1: task.reset_password_notification(user_dbs[0]) return flask.redirect(flask.url_for('welcome')) elif count == 0: form.email.errors.append('This email was not found') elif count == 2: task.email_conflict_notification(email) form.email.errors.append( '''We are sorry but it looks like there is a conflict with your account. Our support team is already informed and we will get back to you as soon as possible.''' ) if form.errors: cache.bump_auth_attempt() return flask.render_template( 'user/user_forgot.html', title=_('Forgot Password?'), html_class='user-forgot', form=form, )
def signin(): next_url = util.get_next_url() form = None if config.CONFIG_DB.has_email_authentication: form = form_with_recaptcha(SignInForm()) save_request_params() if form.validate_on_submit(): result = get_user_db_from_email(form.email.data, form.password.data) if result: cache.reset_auth_attempt() return signin_user_db(result) if result is None: form.email.errors.append('Email or Password do not match') if result is False: return flask.redirect(flask.url_for('welcome')) if not form.errors: form.next_url.data = next_url if form and form.errors: cache.bump_auth_attempt() return flask.render_template( 'auth/auth.html', title='Sign in', html_class='auth', next_url=next_url, form=form, form_type='signin' if config.CONFIG_DB.has_email_authentication else '', **urls_for_oauth(next_url))
def signup(): next_url = util.get_next_url() form = None if config.CONFIG_DB.has_email_authentication: form = form_with_recaptcha(SignUpForm()) save_request_params() if form.validate_on_submit(): user_db = model.User.get_by('email', form.email.data) if user_db: form.email.errors.append('This email is already taken.') if not form.errors: user_db = create_user_db( None, util.create_name_from_email(form.email.data), form.email.data, form.email.data, ) user_db.put() task.activate_user_notification(user_db) cache.bump_auth_attempt() return flask.redirect(flask.url_for('welcome')) if form and form.errors: cache.bump_auth_attempt() title = 'Sign up' if config.CONFIG_DB.has_email_authentication else 'Sign in' return flask.render_template( 'auth/auth.html', title=title, html_class='auth', next_url=next_url, form=form, **urls_for_oauth(next_url) )
def signin(): next_url = util.get_next_url() form = None if config.CONFIG_DB.has_email_authentication: form = form_with_recaptcha(SignInForm()) save_request_params() if form.validate_on_submit(): result = get_user_db_from_email(form.email.data, form.password.data) if result: cache.reset_auth_attempt() return signin_user_db(result) if result is None: form.email.errors.append('Email or Password do not match') if result is False: return flask.redirect(flask.url_for('welcome')) if not form.errors: form.next_url.data = next_url if form and form.errors: cache.bump_auth_attempt() return flask.render_template( 'auth/auth.html', title='Sign in', html_class='auth', next_url=next_url, form=form, form_type='signin' if config.CONFIG_DB.has_email_authentication else '', **urls_for_oauth(next_url) )
def user_forgot(token=None): if not config.CONFIG_DB.has_email_authentication: flask.abort(418) form = auth.form_with_recaptcha(UserForgotForm(obj=auth.current_user_db())) if form.validate_on_submit(): cache.bump_auth_attempt() email = form.email.data user_dbs, _ = util.get_dbs( model.User.query(), email=email, active=True, limit=2, ) count = len(user_dbs) if count == 1: task.reset_password_notification(user_dbs[0]) return flask.redirect(flask.url_for('welcome')) elif count == 0: form.email.errors.append(u'Имэйл хаяг олдсонгүй') elif count == 2: task.email_conflict_notification(email) form.email.errors.append( u'''Уучлаарай таны дансанд давхардал үүссэн байна. Бид нэн даруй хариуцсан ажилтанд мэдэгдсэн болно. Тусламжийн ажилтан тантай аль болох хурдан холбогдох болно.''') if form.errors: cache.bump_auth_attempt() return flask.render_template( 'user/user_forgot.html', title=u'Нууц үгээ мартсан уу?', html_class='user-forgot', form=form, )
def auth(): auth_type = 'open' if config.CONFIG_DB.has_email_authentication: auth_type = 'signin' if flask.url_for('signup') in flask.request.path: auth_type = 'signup' next_url = util.get_next_url() bitbucket_signin_url = url_for_signin('bitbucket', next_url) dropbox_signin_url = url_for_signin('dropbox', next_url) facebook_signin_url = url_for_signin('facebook', next_url) facebook_signin_url = url_for_signin('facebook', next_url) github_signin_url = url_for_signin('github', next_url) google_signin_url = url_for_signin('google', next_url) instgram_signin_url = url_for_signin('instagram', next_url) linkedin_signin_url = url_for_signin('linkedin', next_url) microsoft_signin_url = url_for_signin('microsoft', next_url) reddit_signin_url = url_for_signin('reddit', next_url) stackoverflow_signin_url = url_for_signin('stackoverflow', next_url) twitter_signin_url = url_for_signin('twitter', next_url) vk_signin_url = url_for_signin('vk', next_url) yahoo_signin_url = url_for_signin('yahoo', next_url) form = None hide_recaptcha = cache.get_auth_attempt() < config.RECAPTCHA_LIMIT # -------------- # Sign in stuff # -------------- if auth_type == 'signin': form = SignInForm() if hide_recaptcha or not config.CONFIG_DB.has_recaptcha: del form.recaptcha save_request_params() if form.validate_on_submit(): result = retrieve_user_from_email(form.email.data, form.password.data) if result: cache.reset_auth_attempt() return signin_user_db(result) if result is None: form.email.errors.append('Email or Password do not match') if result is False: return flask.redirect(flask.url_for('welcome')) if not form.errors: form.next_url.data = next_url # -------------- # Sign up stuff # -------------- if auth_type == 'signup': form = SignUpForm() if hide_recaptcha or not config.CONFIG_DB.has_recaptcha: del form.recaptcha save_request_params() if form.validate_on_submit(): user_db = model.User.get_by('email', form.email.data) if user_db: form.email.errors.append('This email is already taken.') if not form.errors: user_db = create_user_db( None, util.create_name_from_email(form.email.data), form.email.data, form.email.data, ) user_db.put() task.activate_user_notification(user_db) cache.bump_auth_attempt() return flask.redirect(flask.url_for('welcome')) if form and form.errors: cache.bump_auth_attempt() return flask.render_template( 'auth/auth.html', title='Sign up' if auth_type == 'signup' else 'Sign in', html_class='auth %s' % auth_type, bitbucket_signin_url=bitbucket_signin_url, dropbox_signin_url=dropbox_signin_url, facebook_signin_url=facebook_signin_url, github_signin_url=github_signin_url, google_signin_url=google_signin_url, instagram_signin_url=instgram_signin_url, linkedin_signin_url=linkedin_signin_url, microsoft_signin_url=microsoft_signin_url, reddit_signin_url=reddit_signin_url, stackoverflow_signin_url=stackoverflow_signin_url, twitter_signin_url=twitter_signin_url, vk_signin_url=vk_signin_url, yahoo_signin_url=yahoo_signin_url, next_url=next_url, form=form, auth_type=auth_type, )