示例#1
0
def login():
    """
    Log in the user to the system using Google oauth login.
    Note: What gets done here depends on what phase of the login process we are in.
    If this is the INITIAL PHASE, then send the user to the Google login.
    If we are COMING BACK from a Google login, use the code to get the email and display name set up for the user.
    :return: An appropriate redirect (depending on what step of the login process this is.
    """
    domain = parser["learningmachine"]["domain"]
    secrets_file = "{}/{}".format(dir_path, "client_secret.json")
    scope = "https://www.googleapis.com/auth/userinfo.email"
    redirect_uri = "http://{}/login".format(domain)
    login_handler = LoginHandler(secrets_file, scope, redirect_uri)

    if "code" in request.args:
        login_handler.setup_user_info(request.args["code"])
        session["email"] = login_handler.email
        session["display_name"] = login_handler.display_name

        if not fm.user_exists(login_handler.email):
            msg = "Adding user: {} with ID of {} to the database."\
                .format(login_handler.email, login_handler.display_name)
            fm.add_user(login_handler.email, login_handler.display_name)

        msg = "Sending user: {} to main page".format(login_handler.email)
        app.logger.info(msg)
        return redirect("/static/main.html")

    else:
        msg = "No login code yet.  Letting Google handle the login process at: {}"\
                .format(login_handler.auth_url)
        app.logger.info(msg)
        return redirect(login_handler.auth_url)
示例#2
0
文件: api.py 项目: pathcl/ray
    def process(self, fullpath):
        if self.is_login(fullpath):
            return LoginHandler(self.request, self.response, fullpath).process()

        if self.is_logout(fullpath):
            return LogoutHandler(self.response).logout()

        elif self.is_endpoint(fullpath):
            return EndpointHandler(self.request, fullpath).process()

        elif self.is_action(fullpath):
            return self.__handle_action(fullpath)

        else:
            self.response.status = 404
示例#3
0
from flask_mongoengine import MongoEngine
from app.whopenid import OpenId
from flask_openid import OpenID
from openid.extensions import pape
from app.blueprints import register_main_bp, register_open_id_bp
from app.models import Users
from mongoengine import connection
from flask_socketio import SocketIO, emit
from gevent import monkey
import os
import sys
import pymongo.errors

app = Flask(__name__)
oid = OpenID(app, safe_roots=[], extension_responses=[pape.Response])
login_manager = LoginHandler()
socket_io = SocketIO(app, async_mode='threading')
monkey.patch_all()


def create_app():
    register_main_bp(app)
    app.config.from_object(config.DevelopmentConfig)
    app.before_request(register_db())
    login_manager.init(app)
    app.teardown_request(close_database)
    return app


def register_db():
    def load():
示例#4
0
 def __init__(self, logger, db_stub):
     self._login = LoginHandler(logger, db_stub)
     self._create = CreateHandler(logger, db_stub)
     self._update = UpdateHandler(logger, db_stub)
     self._get_css = GetCssHandler(logger, db_stub)
示例#5
0
 def setUp(self):
     self.db_stub = MockDBStub()
     self.login_handler = LoginHandler(Mock(), self.db_stub)
     self._pw = "hunter2"
     self._pw_hash = bcrypt.hashpw(self._pw.encode('utf-8'),
                                   bcrypt.gensalt())