Ejemplo n.º 1
0
def register():
    if request.method == "POST":
        username = request.form['username']
        email = request.form['email'] 
        password = request.form['password']
        confirm_password = request.form['confirm_password']  
        msg = ""
        if not username or not password or not email:
            msg = {"status": {"type": "failure", "message": "Missing Data!"}} 
            return jsonify(msg)

        if confirm_password != password:
            msg ={"status": {"type": "failure", "message": "Please make sure your passwords match."}}
            return jsonify(msg) 

        if User.query.filter_by(username=username).count() == 1:
            msg = {"status": {"type": "failure", "message": "Username already taken!"}}
            return jsonify(msg)

        if User.query.filter_by(email=email).count() == 1:
            msg = {"status": {"type": "failure", "message": "Email already taken!"}}
            return jsonify(msg) 

        
        u = User() 
        u.username = username
        u.email = email
        u.set_password(password)
        db.session.add(u)
        db.session.commit(u)

        msg = {"status": {"type": "success", "message": "You have registered successfully!"}}
        return jsonify(msg) 
Ejemplo n.º 2
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('main.home'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User()
        user.username = form.username.data
        user.email = form.email.data
        user.password = hashed_password
        db.session.add(user)
        db.session.commit()
        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)
Ejemplo n.º 3
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for('home'))
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = bcrypt.generate_password_hash(
            form.password.data).decode('utf-8')
        user = User()
        user.username = form.username.data
        user.email = form.email.data
        user.password = hashed_password
        db.session.add(user)
        db.session.commit()
        flash(f"Your account has been created, you are now able to log in!",
              "success")
        return redirect(
            url_for('login')
        )  # url_for(arg), here arg is function name, not route name.
    return render_template('register.html', title="Register", form=form)
Ejemplo n.º 4
0
def callback():
    if current_user is not None and current_user.is_authenticated:
        return redirect(url_for('main.home'))
    if 'error' in request.args:
        if request.args.get('error') == 'access_denied':
            flash('You denied access.', 'danger')
        else:
            flash('Error occured', 'danger')
        return redirect(url_for('users.login'))
    if 'code' not in request.args or 'state' not in request.args:
        flash('Error Occurred! Please try again.')
        return redirect(url_for('users.login'))
    else:
        print()
        print('code: ', request.args.get('code'))
        print('request.url: ', request.url)
        print()

    oauth = get_google_auth(state=session['oauth_state'])
    try:
        token = oauth.fetch_token(Auth.TOKEN_URI,
                                  client_secret=Auth.CLIENT_SECRET,
                                  authorization_response=request.url)
    except Exception as e:
        print("Error: ", e)
        flash('Error Occurred while getting access token', 'danger')
        return redirect(url_for('users.login'))
    resp = oauth.get(Auth.USER_INFO)
    if resp.status_code == 200:
        user_data = resp.json()
        email = user_data['email']
        # print()
        # print(user_data)
        # print('Name: ',user_data['name'])
        # print('Email: ',user_data['email'])
        # print('Picture link: ',user_data['picture'])
        # print()

        user = User.query.filter_by(email=email).first()
        if user is not None:
            if user.login_using != 'Google':
                flash(
                    f'You have not used Google to login before. Please use email and password to login!',
                    'danger')
                return redirect(url_for('users.login'))
            flash(f'Welcome back, {user.username}.', 'success')
            user.login_using = 'Google'
        else:
            user = User()
            user.username = username_from_email(email, User)
            user.first_name = user_data['given_name']
            user.last_name = user_data['family_name']
            user.email = email
            user.avatar_link = user_data['picture']
            user.image_file = save_picture_from_url(user_data['picture'])
            user.tokens = json.dumps(token)
            user.login_using = 'Google'
            flash(f'Welcome, {user.username}.', 'success')
        db.session.add(user)
        db.session.commit()
        login_user(user)
        return redirect(url_for('main.home'))
    else:
        flash('Could not fetch your information', 'danger')
        return redirect(url_for('users.login'))