def signin(): if request.method == 'POST': email = request.form.get('email').lower() password = request.form.get('password') user = get_user(id=email) if not user: return render_template('users/signin.html', error=['no_user_found']) if not validate_login(user.password, password, 'users'): return render_template('users/signin.html', error=['wrong_password']) if request.form['submit'] == "Remail": if not user.confirmed: token = generate_confirmation_token(email) confirm_url = url_for('users.confirm_email', token=token, _external=True) send_mail(email, confirm_url) return render_template('users/signin.html', error=['user_registered']) return render_template('users/signin.html', error=['account_already_confirmed']) else: if not user.confirmed: return render_template('users/signin.html', error=['user_not_confirmed']) # all is good user = User(id=email, password=password) print(f'connected_as: {email}') login_user(user) return redirect(url_for('users.dashboard')) print(f'flash: {get_flashed_messages()}') return render_template('users/signin.html', error=get_flashed_messages())
def reset_password(token): #confirm user's idendity # we use a shorter expiration time , defined in the PASSWORD_TOKEN_EXPIRATION Environment variable email = confirm_token(token, expiration='PASSWORD_TOKEN_EXPIRATION') if not email: flash('confirm_link_expired', 'danger') return redirect(url_for('users.signin')) if request.method == 'POST': #get user from db user = get_user(id=email) if not user: flash('error') return redirect(url_for('users.signin')) #get the new password from the form password = request.form.get('password') try: #try to change the password in the db changed = change_password(user, password) if (changed): flash('reset_password') else: flash('error') except Exception as e: print('error', e, user, user.data) return redirect(url_for('users.signin')) return render_template('users/reset_password.html', token=token)
def reset_password_request(): if request.method == 'POST': # get the user's mail email = request.form.get('email').lower() user = get_user(id=email) #get user from db if not email: flash('empty_fields') return render_template('users/reset_password_request.html') if not user: #user not found in db return render_template('users/reset_password_request.html', error='user_does_not_exist') else: #generate token token = generate_confirmation_token(email) #generate unique URL confirm_url = url_for('users.reset_password', token=token, _external=True) # send the confirmation mail # use the passwordreset template send_mail(email, confirm_url, 'dd8c6e2a-7d33-42e5-b749-1354c1b357d6') flash('update_password') return redirect(url_for('users.signin')) return render_template('users/reset_password_request.html')
def template_test(): if request.method == 'GET': return render_template('login.html') else: login = request.form.get('login').lower() password = request.form.get('password') if storage.check_password(login, password): user = storage.get_user(login) return render_template('name.html', user=user, users=storage.in_game_list(), login=login) else: return render_template('login.html')
def confirm_email(token): email = confirm_token(token) if not email: flash('confirm_link_expired', 'danger') return redirect(url_for('users.signin')) user = get_user(id=email) if not user: flash('error') return redirect(url_for('users.signin')) if user.confirmed: flash('account_already_confirmed', 'success') else: confirm_user(user) flash('account_confirmed', 'success') return redirect(url_for('users.signin'))
def signin(): if request.method == 'POST': email = request.form.get('email').lower() password = request.form.get('password') user = get_user(id=email) if not user: return render_template('users/signin.html', error=['no_user_found']) if not validate_login(user.password, password, 'users'): return render_template('users/signin.html', error=['wrong_password']) if not user.confirmed: return render_template('users/signin.html', error=['user_not_confirmed']) # all is good user = User(id=email, password=password) print(f'connected_as: {email}') login_user(user) return redirect(url_for('users.dashboard')) print(f'flash: {get_flashed_messages()}') return render_template('users/signin.html', error=get_flashed_messages())
def signup(): if request.method == 'POST': email = request.form.get('email') password = request.form.get('password') if not password or not email: flash('empty_fields') return render_template('users/signup.html') email = email.lower() if user_exists(email): user = get_user(id=email) if user.confirmed: return render_template('users/signup.html', error='user_already_exists') else: token = generate_confirmation_token(email) confirm_url = url_for('users.confirm_email', token=token, _external=True) send_mail(email, confirm_url) flash('user_registered') return redirect(url_for('users.signin')) else: user = User(id=email, password=password, created=True) token = generate_confirmation_token(email) confirm_url = url_for('users.confirm_email', token=token, _external=True) try: created = new_user(user) if created: send_mail(email, confirm_url) flash('user_registered') else: flash('error') except Exception as e: print('error', e, user, user.data) return redirect(url_for('users.signin')) return render_template('users/signup.html')
def load_user(user_id): if '@' in user_id: return storage.get_user(user_id) else: return Company(id=user_id, data=storage.get_company(user_id))