Esempio n. 1
0
def register():
    if request.method == "POST":
        email = request.json.get("email", None)
        name = request.json.get("name", None)
        first_lastname = request.json.get("lastname1", None)
        second_lastname = request.json.get("lastname2", None)
        password = request.json.get("password", None)

        if not email or email == "":
            return jsonify({"msg": "El email es requerido"}), 400

        if not name or name == "":
            return jsonify({"msg": "Debes indicar tu nombre"}), 400

        if not first_lastname or first_lastname == "":
            return jsonify({"msg": "Debes indicar tu apellido paterno"}), 400

        if not second_lastname or second_lastname == "":
            return jsonify({"msg": "Debes indicar tu apellido materno"}), 400

        if not password or password == "":
            return jsonify({"msg": "La contrasena es requerida"}), 400

        user = Users.query.filter_by(email=email).first()
        if user:
            return jsonify({"msg": "El email ya existe"}), 400

        if "avatar" in request.files:
            avatar = request.files["avatar"]
            if avatar.filename != "":
                if allowed_images_file(avatar.filename):
                    filename = secure_filename(avatar.filename)
                    avatar.save(
                        os.path.join(
                            os.path.join(app.config['UPLOAD_FOLDER'],
                                         "img/avatar"), filename))
                else:
                    return jsonify({"msg": "Image not allowed"})

        user = Users()
        user.email = email
        user.name = name
        user.first_lastname = first_lastname
        user.second_lastname = second_lastname
        user.password = bcrypt.generate_password_hash(password)

        if "avatar" in request.files:
            user.avatar = filename

        db.session.add(user)
        db.session.commit()

        html = render_template("emails/email-register.html", user=user)

        #send_mail("Registro de usuario", user.email, user.username, html)

        access_token = create_access_token(identity=user.email)
        data = {"access_token": access_token, "user": user.serialize()}
        return jsonify(data), 200
Esempio n. 2
0
def callback():
    # Redirect user to home page if already logged in.
    if current_user is not None and current_user.is_authenticated:
        return redirect(url_for('index'))
    if 'error' in request.args:
        if request.args.get('error') == 'access_denied':
            return 'You denied access.'
        return 'Error encountered.'
    if 'code' not in request.args and 'state' not in request.args:
        return redirect(url_for('login'))
    else:
        # Execution reaches here when user has
        # successfully authenticated our app.
        google = get_google_auth(state=session['oauth_state'])
        try:
            token = google.fetch_token(
                Auth.TOKEN_URI,
                client_secret=Auth.CLIENT_SECRET,
                authorization_response=request.url)
        except HTTPError:
            return 'HTTPError occurred.'
        google = get_google_auth(token=token)
        resp = google.get(Auth.USER_INFO)
        if resp.status_code == 200:
            user_data = resp.json()
            email = user_data['email']
            user = Users.query.filter_by(email=email).first()
            if user is None:
                user = Users()
                user.email = email
            user.user_name = user_data['name']
            print(token)
            user.tokens = json.dumps(token)
            user.avatar = user_data['picture']
            db.session.add(user)
            db.session.commit()
            login_user(user)
            return redirect(url_for('index'))
        return 'Could not fetch your information.'