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
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.'