Esempio n. 1
0
def login():
    s3 = boto3.client('s3')
    #default_image_path = os.path.join(current_app.config['APP_ROOT'], 'static/img/default.jpg')

    #     #s3.upload_file(default_image_path, 'ece1779-final', '/tmp/default/default.jpg')
    #
    #     #target_image_path = os.path.join(current_app.config['APP_ROOT'], 'static/profile_pics')
    #     #shutil.rmtree(target_image_path)
    #     #os.mkdir(os.path.join(current_app.config['APP_ROOT'], 'static/profile_pics'))
    #
    #     #s3.download_file('ece1779-final', '/tmp/default/default.jpg','/tmp/default.jpg')

    if 'user' in session:
        return redirect(url_for('main.home'))
    form = LoginForm()
    users_table = Users()
    if form.validate_on_submit():
        email = form.email.data
        users = users_table.query_email(email)
        if len(users) == 0:  #users空
            print("!!!")
            flash("You should register first", 'danger')
        else:
            user = users[0]
            print(user)
            if len(user['image_file']) == 0:
                user[
                    'image_file'] = 'https://covid19blog.s3.amazonaws.com/default/default.jpg'
            # else :
            #     if (user['image_file']!='default.jpg'):
            #       #print(target_image_path + '/' + user['image_file'])
            #       # s3.download_file('ece1779-final',
            #       #                '/tmp/'+ user['email'] + '/user_images/{}'.format(user['image_file']),
            #       #                '/tmp/'+user['image_file'])
            if user and bcrypt.check_password_hash(user['password'],
                                                   form.password.data):
                #print(user['image_file'])
                try:
                    place = get_coordinates(
                        current_app.config['GOOGLEMAPS_KEY'], user['address'])
                    place['infobox'] = "<b>Hello World</b>"
                    user_current_location = [place['lat'], place['lng']]
                except:
                    user_current_location = None
                session.permanent = True
                session['user'] = {
                    'username': user['username'],
                    'email': user['email'],
                    'image_file': user['image_file'],
                    'user_current_location': user_current_location
                }
                next_page = request.args.get('next')
                #flash('Login Successful', 'message')
                return redirect(next_page) if next_page else redirect(
                    url_for('main.home'))
            else:
                flash('Login Unsuccessful. Please check email and password',
                      'danger')
    return render_template('login.html', title='Login', form=form)
Esempio n. 2
0
def register():
    try:
        if 'user' in session:
            return redirect(url_for('main.home'))

        form = RegistrationForm()
        users_table = Users()
        if form.validate_on_submit():
            hashed_password = bcrypt.generate_password_hash(
                form.password.data).decode('utf-8')
            # user = User2(username=form.username.data, email=form.email.data, password=hashed_password)
            #db.session.add(user)
            #db.session.commit()
            username = form.username.data
            email = form.email.data
            password = hashed_password
            address = form.address.data
            try:
                place = get_coordinates(current_app.config['GOOGLEMAPS_KEY'],
                                        address)
            except:
                flash("Your address is invalid", "warning")
                return render_template('register.html',
                                       title='Register',
                                       form=form)

            user = users_table.get_user(username)
            user_emails = users_table.query_email(email)
            if user != None and len(user_emails) != 0:
                flash("Username already exists", "danger")
            elif user != None:
                flash("Username already exists", "danger")
            elif len(user_emails) != 0:
                if user_emails != None: print(user_emails)
                flash("Email already exists", "danger")
            else:
                users_table.put_user(username, email, password, address)
                flash(
                    'Your account has been created! You are now able to log in',
                    'success')
                return redirect(url_for('users.login'))
        return render_template('register.html', title='Register', form=form)

    except Exception as e:
        print(e)
        traceback.print_tb(e.__traceback__)
        return render_template('error.html')
    return ' '
Esempio n. 3
0
def reset_request():
    if 'user' in session:
        return redirect(url_for('main.home'))
    form = RequestResetForm()
    if form.validate_on_submit():
        user = Users()
        user = user.query_email(email=form.email.data)
        if len(user) == 0:
            flash('Your account does not exist', 'error')
            return redirect(url_for('users.reset_password'))
        email = user[0]['email']
        username = user[0]['username']
        image_file = user[0]['image_file']
        user = User(email=email, username=username, image_file=image_file)
        #user = User.query.filter_by(email=form.email.data).first()
        send_reset_email(user)
        flash(
            'An email has been sent with instructions to reset your password.',
            'info')
        return redirect(url_for('users.login'))
    return render_template('reset_request.html',
                           title='Reset Password',
                           form=form)