Esempio n. 1
0
def login(provider):
    if request.method == 'POST':
        session.permanent = 'remember' in request.form
        session.modified = True

    response = make_response()
    result = AUTHOMATIC.login(WerkzeugAdapter(request, response), provider)
    if result:
        if result.user:
            result.user.update()
            credentials = result.user.credentials.serialize()
            user = User.create_or_update(provider, result.user.id,
                                         result.user.email,
                                         result.user.first_name,
                                         result.user.last_name, credentials)
            session['user'] = user.key.urlsafe()

            # If they are on the freemium list hook them up.
            if (not user.is_premium) and (Freemium.get_by_email(
                    result.user.email) is not None):
                user.is_premium = True
                user.put()
                flash(
                    'You\'ve been upgraded to a free premium account for one year!'
                )

            return redirect('/todos')

        return render_template('login.html', result=result)

    return response
Esempio n. 2
0
def login():
    response = make_response()
    result = current_app.authomatic.login(
        WerkzeugAdapter(request, response),
        provider_name='google',
        session=session,
        session_saver=lambda: current_app.save_session(session, response))

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.user:
            # We need to update the user to get more info.
            result.user.update()
            user = User.query.filter_by(email=result.user.email).first()
            if user is None:
                user = User(email=result.user.email,
                            username=result.user.email.split('@')[0],
                            picture=result.user.picture,
                            first_name=result.user.first_name)
                db.session.add(user)
                db.session.commit()
            login_user(user, remember=True)

        # The rest happens inside the template.
        flash("Welcome %s!" % result.user.name)
        return redirect(url_for('home.index'))

    # Don't forget to return the response.
    return response
Esempio n. 3
0
def login(provider_name):
    """
    Login handler, must accept both GET and POST to be able to use OpenID.
    """

    try:

        # We need response object for the WerkzeugAdapter.
        response = make_response()

        # Log the user in, pass it the adapter and the provider name.
        result = authomatic.login(WerkzeugAdapter(request, response), provider_name)

        # If there is no LoginResult object, the login procedure is still pending.
        if result:
            if result.user:
                # We need to update the user to get more info.
                result.user.update()

            # The rest happens inside the template.
            return render_template('login.html', result=result)
    except exceptions.CancellationError as e:
        return redirect(url_for('index'))
    # Don't forget to return the response.
    return response
Esempio n. 4
0
def login_with_oauth(provider_name):
    """Login with Oauth (Google only right now) via authomatic"""

    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response), provider_name)
    if result:
        if result.user:
            result.user.update()

            user = Users.query.filter(Users.email == result.user.email).first() 
         
            if not user:
                
                if not result.user.username and result.user.email:
                    # If result.user doesn't have username attribute, use email handle
                    result.user.username = result.user.email.split('@')[0]

                user = Users.add_user(username=result.user.username, 
                                      auth_id=result.user.id,
                                      email=result.user.email,
                                      email_confirmed = True, 
                                      login_type='google')
            login_user(user)

        if 'match_url' not in session.keys():
            session['match_url'] = '/'

        return redirect(url_for('index', match_url=session['match_url']))
    return response
Esempio n. 5
0
def login_with(provider_name):
    """
    The below is login page action using OAuth with Google

    :param provider_name: The provider name. google by default
    """
    response = make_response()

    authomatic = Authomatic(app.config['SOCIAL_LOGIN'], app.secret_key)

    result = authomatic.login(
        WerkzeugAdapter(request, response),
        provider_name,
        None,
        session=session,
        session_saver=lambda: app.save_session(session, response))

    if result and result.user and result.user.credentials:
        response = result.provider.access(
            authomatic.config.get(provider_name).get('url'))

        if response.status == 200:
            """
            Create a new user if the provided email is
            not exists. Otherwise, update the current user
            """
            user = User.first_or_new(email=response.data.get('email'))
            user.name = response.data.get('name')
            user.save()
            login_user(user)

        return redirect(url_for('index'))

    return response
Esempio n. 6
0
def login(provider_name):

    callbackurl = CALLBACK_URL

    # We need response object for the WerkzeugAdapter.
    response = make_response()

    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.user:
            # We need to update the user to get more info.
            result.user.update()

        # 利用 session 登記登入者的 email
        session['login_email'] = result.user.email

        # 這裡必須分近端與雲端, 因為 google logout redirect 的 url 不同
        if 'OPENSHIFT_REPO_DIR' in os.environ.keys():
            # 表示程式在雲端執行
            local = False
        else:
            # 表示在近端執行
            local = True
        # The rest happens inside the template.
        return render_template('login.html',
                               result=result,
                               local=local,
                               callbackurl=callbackurl)

    # Don't forget to return the response.
    return response
Esempio n. 7
0
def login(provider_name):
    # response object for the WerkzeugAdapter.
    response = make_response()

    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.user:
            # Updating the user to get more info.
            result.user.update()

            # Reading the facebook id of the user.
            fb_id = result.user.id

            # If there is no this facebook id in the database then add a new user.
            if Student.query.filter_by(fb_id=fb_id).first() is None:
                student = Student(fb_id)
                db.session.add(student)
                db.session.commit()

            # Saving fb_id to the session.
            session['fb_id'] = fb_id

            # Redirecting to the dashboard.
            return redirect(url_for('dashboard'))
    return response
Esempio n. 8
0
def login(provider_name=config.default_provider):
    # Redirect back to index if this action is accessed when already logged in.
    if current_user.is_authenticated:
        return redirect(url_for("index"))

    if provider_name not in config.authomatic_config.keys():
        abort(400)

    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)
    if result:
        if result.user:
            # authomatic
            result.user.update()

            # model
            user, created = User.get_or_create(
                auth_provider=result.user.provider.id, auth_id=result.user.id)

            # flask-login
            login_user(user, remember=True)

            return redirect(url_for("index"))

        if result.error:
            return "Error: {}".format(result.error.message)

        # Something really bad has happened.
        abort(500)

    return response
Esempio n. 9
0
def oauth(provider_name):
    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response), provider_name)

    if result:
        if result.user:
            # authomatic
            result.user.update()

            # User.query.delete()
            # db.session.commit()

            # Check if this user has been seen before
            user = User.query.filter_by(uid=result.user.id).first()

            if user == None:
                username = result.user.email.split('@')[0]
                user = User(uid = result.user.id,
                            username = User.make_unique_username(username),
                            email = result.user.email)
                db.session.add(user)
                db.session.commit()

                login_user(user, remember=True)
                return redirect(url_for('signup'))

            login_user(user, remember=True)

            return redirect(url_for('index'))

        return render_template('login.html', result=result)

    return response
Esempio n. 10
0
def login(provider_name):
    
    # We need response object for the WerkzeugAdapter.
    response = make_response()
    
    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(WerkzeugAdapter(request, response), provider_name)
    
    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.user:
            # We need to update the user to get more info.
            result.user.update()
        
        # use session to save login user's email (試著將 @ 換為 _at_)
        #session['loginEmail'] = result.user.email.replace('@', '_at_')
        loginUser = result.user.email.split("@")[0]
        session["user"] = loginUser
        session["login"] = True
        template_lookup = TemplateLookup(directories=[template_root_dir])
        loginTemplate = template_lookup.get_template("login.html")
        CALLBACK_URL = "https://localhost:8443/menu"
        
        return loginTemplate.render(result=result, CALLBACK_URL=CALLBACK_URL)

    # Don't forget to return the response.
    return response
Esempio n. 11
0
def login_with(provider_name):
    response = make_response()

    authomatic = Authomatic(
        {
            'default': 'google',
            'google': {
                'class_': 'authomatic.providers.oauth2.Google',
                'consumer_key': '426158043393-j1gnqba0dpucop2o5m9lo7m248vr1744'
                '.apps.googleusercontent.com',
                'consumer_secret': 'd88vSFHyhZJ63O4ug6GrksTB',
                'scope': ['profile', 'email'],
                'url': 'https://www.googleapis.com/userinfo/v2/me',
            },
        }, app.secret_key)

    result = authomatic.login(
        WerkzeugAdapter(request, response),
        provider_name,
        None,
        session=session,
        session_saver=lambda: app.save_session(session, response))

    if result and result.user and result.user.credentials:
        response = result.provider.access(
            authomatic.config.get(provider_name).get('url'))

        if response.status == 200:
            user = User.first_or_new(email=response.data.get('email'))
            user.name = response.data.get('name')
            user.save()
            login_user(user)

        return redirect(url_for('index'))
    return response
Esempio n. 12
0
 def decorated(*args, **kwargs):
     self.response = make_response()
     adapter = WerkzeugAdapter(request, self.response)
     login_kwargs.setdefault('session', session)
     login_kwargs.setdefault('session_saver', self.session_saver)
     self.result = super(FlaskAuthomatic, self).login(adapter, *login_args, **login_kwargs)
     return f(*args, **kwargs)
Esempio n. 13
0
def updatePeopleDB(profile, methods=['GET', 'POST']):

    #first get a list of recent people from Twitter
    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response), 'tw')
    query_profile = profile
    if profile == ('Percolate' or 'percolate'):
        query_profile = '%40percolate OR percolate.com'
    print result

    if result:
        if result.user:
            # We need to update the user to get more info.
            serialized_credentials = result.user.credentials.serialize()
            session['credentials'] = serialized_credentials
            print 'Here are the credss:' + session['credentials']
            result.user.update()
        print 'About to make Twitter call with: ' + session['credentials']
        response = authomatic.access(
            session['credentials'],
            url='https://api.twitter.com/1.1/search/tweets.json?q=' +
            str(query_profile) + '&count=100&result_type=recent')
        #now take all the people and add them to the people database if needed
        addpeople(response, profile)
        #addperson(['fullname', 'shafqatislam', 'klout_score'])

        #now update everyone's importance values in case anything has changed (like new list of orgs, new keywords for title etc)
        updateimportance(profile)
        recent_people = query_db(
            'select * from people where last_seen like \'%' +
            time.strftime("%d %b %Y", time.gmtime()) + '%\' and profile = \'' +
            profile + '\' order by importance desc')
        return render_template('people.html', recent_people=recent_people)

    return response
Esempio n. 14
0
def video():  
    if request.method == 'GET':
        response = make_response()
    
        result = authomatic.login(WerkzeugAdapter(request, response), 'tw')
        if result:
            if result.user:
                result.user.update()
                file_name = ''
                return render_template('video2.html', result=result,file_name=file_name)
        
        return response

    else:
        #post endpoint for saving the video
        data_url = request.form['data_url']
        epoch = str(int(time.time()*100))
        file_name = '%s.webm'%epoch

        video_file = open(os.path.join(app.config['UPLOAD_FOLDER'], file_name), 'wb')
        # video_file.write(data_url)

        uri = DataURI(data_url)

        video_file.write(uri.data)
        return render_template('video2.html',file_name=file_name)
Esempio n. 15
0
def login(provider_code):
    """
    Login handler, must accept both GET and POST to be able to use OpenID.
    """
    if not provider_code:
        form = EmailLoginForm(request.form)
        if request.method == 'POST' and form.validate():
            email = form.email.data
            auth = models.EmailAuth.from_email(
                email, create=False, current_account=g.current_account)
            if auth:
                user_account = auth.user_account.get()
                if user_account.check_password(form.password.data):
                    return _login_user(user_account)
                else:
                    time.sleep(config.security_wait)
                    flasher.warning(_('Invalid email address or password'))
            else:
                time.sleep(config.security_wait)
                flasher.warning(_('Invalid email address or password'))

        return render_template('login.html',
                               login_providers=config.AUTHOMATIC_CONFIG,
                               form=form)

    elif provider_code == 'google':
        if users.get_current_user():
            user_account, auth = models.UserAccount.from_google(
                users.get_current_user(),
                is_superuser=users.is_current_user_admin(),
                current_account=g.current_account)
            return _login_user(user_account)
        else:
            return flask.redirect(
                users.create_login_url(dest_url=flask.request.url))

    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_code)

    logging.info('Authomatic result for %r: %r. Response is %r', provider_code,
                 result, response)

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.error:
            flasher.error(result.error)
            return flask.redirect(flask.url_for('users.login'))

        if result.user:
            # We need to update the user to get more info.
            result.user.update()

        user_account, auth = models.UserAccount.from_authomatic(
            result.user,
            provider_code=provider_code,
            current_account=g.current_account)
        return _login_user(user_account, result=result)
    return response
Esempio n. 16
0
def login_signup_soc_network(soc_network_name):
    # TODO: fix it!
    portal_id = session.get('portal_id')
    back_to = session.get('back_to')
    response = make_response()

    result = g.authomatic.login(WerkzeugAdapter(request, response),
                                soc_network_name)

    if result:
        if result.user:
            result.user.update()
            result_user = result.user
            if result_user.email is None:
                raise exceptions.PRException(
                    "You haven't confirm email bound to your soc-network account yet"
                )
            # db_fields = DB_FIELDS[soc_network_names[-1]]
            # user = g.db.query(User).filter(getattr(User, db_fields['id']) == result_user.id).first()

            user = g.db.query(User).filter(
                getattr(User, soc_network_name +
                        '_id') == result_user.email).first()

            # we have already this user registered
            if not user:
                user = g.db.query(User).filter(
                    User.address_email == result_user.email).first()
                if user:
                    setattr(user, soc_network_name + '_id', result_user.id)
                    user.email_confirmed = True
                    user.save()

            # ok, new user
            if not user:
                user = User(registered_via=soc_network_name,
                            first_name=result_user.first_name,
                            last_name=result_user.last_name,
                            address_email=result_user.email)
                setattr(user, soc_network_name + '_id', result_user.id)
                user.email_confirmed = True
                user.avatar_selected_preset = 'gravatar'
                g.db.add(user)
                user.save()
                user.NOTIFY_WELCOME()

            if user:
                User.logout()
                user.login()
                back_to = check_after_logination_params(user)
                return redirect(back_to if back_to else url_for('index.index'))
            else:
                raise exceptions.PRException('cant login/signup user')
        elif result.error:
            raise exceptions.PRException(result.error)

    return response
Esempio n. 17
0
def login(provider_name):
    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)

    if result:
        response.data += fixtures.render_login_result('flask', result).encode()

    return response
Esempio n. 18
0
def login(provider_name):
    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)
    if result:
        if result.user:
            result.user.update()
        return render_template('login.html', result=result)
    return response
Esempio n. 19
0
    def login(self, request):

        authomatic = Authomatic(self.config, self.key, report_errors=True)

        response = make_response()
        result = authomatic.login(WerkzeugAdapter(request, response),
                                  self.provider)

        return response, result
Esempio n. 20
0
 def login(self, provider):
     response = make_response()
     adapter = WerkzeugAdapter(request, response)
     login = self.oauth.login(adapter=adapter,
                              provider_name=provider,
                              session=session,
                              session_saver=self._session_saver)
     self.response = response
     return login
Esempio n. 21
0
def login(provider_name):
    """
    Login handler.
    """   
    # We need response object for the WerkzeugAdapter.
    response = make_response()
    
    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(WerkzeugAdapter(request, response), provider_name)
    #####Sessions!! coming back
        # session=session,
        # session_saver=lambda: app.save_session(session, response))
    
    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.error:
            return "Error: {}".format(result.error.message)
        # Something really bad has happened.
        abort(500)
        if result.user:
            # We need to update the user to get more info.
            result.user.update()
            #save user id to session
            user = User.query.filter_by(email=result.user.email).first()
            # session['email'] = result.user.email
            if user is None:
                username = authomatic.result.user.email.split('@')[0]
                username = User.make_valid_nickname(username)
                username = User.make_unique_nickname(username)
                ##Save UserDetails To Db
                user, created = User.get_or_create(id = result.user.id,
                auth_provider = result.user.provider.id,
                username = username,
                email=result.user.email,
                first_name=result.user.first_name,
                family_name=result.user.last_name,
                picture_url=result.user.picture,
                access_level=0,
                created_date=datetime.utcnow(),
                last_seen=datetime.utcnow())
                # ##Add Try/Catch and Logger Here
                # ##Check if user exists in dbS 
                db.session.add(user)
                db.session.commit()

            login_user(user, remember=True)
            if user.is_super:#(create list of preset super admin emails... maybe .ini file)
                return render_template('admin/dashboard.html')
            # elif user.is_admin:
            #     check project(s) in charge
            #     redirect to project page
            # The rest happens inside the template.
            return render_template('home/index.html', result=result)

    return response
Esempio n. 22
0
def login(provider_name):
	# make response object
	response = make_response()

	# log the user in
	result.r = authomatic.login(WerkzeugAdapter(request, response), provider_name)
	if result.r:
		if result.r.user:
			result.r.user.update()
		return redirect(url_for('home'))
	return response
Esempio n. 23
0
def login(provider_name='nyuad'):
    """
    Login handler, must accept both GET and POST to be able to use OpenID.
    """
    if g.user is not None and g.user.is_authenticated():
        return redirect(url_for('home'))

    # We need response object for the WerkzeugAdapter.
    response = make_response()

    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        if result.user:
            # We need to update the user to get more info.
            result.user.update()
            #Check if passport returns an error, if so, that means the user is not a student, therefore we redirect the user to landing
            if hasattr(result.user, "error"):
                flash(
                    "Sorry, it seems that you are not a student, so you can't use NYUAD Coursereview.",
                    "error")
                return redirect(url_for('landing'))
            #Check the user group, if belongs to any restricted group redirect login
            for gr in result.user.groups:
                if gr in AUTHORIZED_GROUPS:
                    authorized = True
                    break
                else:
                    authorized = False

            if not authorized:
                flash(
                    "Sorry, it seems that you are not a student, so you can't use NYUAD Coursereview.",
                    "error")
                return redirect(url_for('landing'))

            #check if the user is in the database already
            user = User.query.filter_by(net_id=result.user.NetID).first()
            if user is None:
                user = User(net_id=result.user.NetID)
                db.session.add(user)
                db.session.commit()

            login_user(user)
            flash("You were logged in successfully.", "success")
        # The rest happens inside the template.
        return redirect(cache.get('next_url') or url_for('home'))

    # Don't forget to return the response.
    return response
Esempio n. 24
0
def login(prov_name):
    response = make_response()
    result = authomatic.login(adapter=WerkzeugAdapter(request, response), provider_name=prov_name)
    if result:
        if result.user:
            result.user.update()
            session['user_id'] = result.user.id
            session['user_email'] = result.user.email
            session['user_name'] = result.user.name
            session['user_pic'] = result.user.picture
        return redirect(url_for('index'))
    return response
Esempio n. 25
0
def login(provider_name):
    """
    Login handler, must accept both GET and POST to be able to use OpenID.
    """
    global currentUser
    global currentResult
    print "Empezando"
    # We need response object for the WerkzeugAdapter.
    response = make_response()

    d=dict()

    # Log the user in, pass it the adapter and the provider name.
    result = authomatic.login(
        WerkzeugAdapter(
            request,
            response),
        provider_name)

    # If there is no LoginResult object, the login procedure is still pending.
    if result:
        #DEBUG
        print "result: " + str(result)
        print "provider: " + str(result.provider)
        print "user: "******"error: " + str(result.error)
        if result.user:
            # We need to update the user to get more info.
            result.user.update()
            #---
            currentUser=result.user
            # The rest happens inside the template.
        #return render_template('login.html', result=result)
        #return redirect(url_for('index'))
        #No funciona pq LoginResult no es serializable por JSON
        #session['temp']=result
            d['user']=result.user.name
            print "ASDASDSAD - " + str(d)
        #currentResult=result
        #return redirect(url_for('index'))
        return str(d)

    """
    #No funciona. Una vez que se pasa a estar OFFLINE no
    #se recupera. Aunque vuelva la conexión seguirá indicando
    #que se stá sin conexión.
    if not result:
        print "offline"
        response=make_response("OFFLINE")
    """
    # Don't forget to return the response.
    return response
Esempio n. 26
0
def celeblogin(username,objectId):
    response = make_response()
    
    result = authomatic.login(WerkzeugAdapter(request, response), 'tw')
    if result:
        if result.user:
            result.user.update()
            if result.user.username == username:
                c = celebster.Query.get(objectId=objectId)
                return render_template('player.html',c=c)
            else:
                return render_template('badlogin.html', result=result)
    return response
Esempio n. 27
0
def login():
    response = make_response()
    result = authomatic.login(WerkzeugAdapter(request, response), 'twitter')
    if result:
        if result.user:
            result.user.update()
            session['consumer_key'] = result.user.credentials.consumer_key
            session[
                'consumer_secret'] = result.user.credentials.consumer_secret
            session['token'] = result.user.credentials.token
            session['token_secret'] = result.user.credentials.token_secret
        return redirect(url_for('index'))
    return response
Esempio n. 28
0
def login(provider_name):
    response = make_response()

    result = authomatic.login(WerkzeugAdapter(request, response),
                              provider_name)

    if result:
        if result.user:
            result.user.update()
        return render_template(user_name=result.user.name,
                               user_email=result.user.email,
                               user_id=result.user.id)
    return response
Esempio n. 29
0
def list_exports():
    """
    List the available HISEP exports.
    """

    os.environ['SCRIPT_NAME'] = ''

    result = None
    logging.info('Listing exports')
    response = make_response(
        '<html><head><meta name = "robots" content = '
        '"noindex"></head><body>Not available. If you have a valid account '
        'please try again using <a href="http://ikiapps'
        '.com/hisep/export/files">http://ikiapps'
        '.com/hisep/export/files</a>.</body></html>')
    result = authomatic.login(WerkzeugAdapter(request, response), 'google')
    authenticated = False
    validEmail = False

    if result:
        if result.user:
            logging.info('Got result.user, email: %s', result.user.email)
            result.user.update()

            if result.user.credentials:
                logging.info('Got result.user.credentials, email: %s' %
                             result.user.email)
                if validUser(result.user.email):
                    authenticated = True
                validEmail = True

    if authenticated:
        logging.info('Requesting export files.')

        fp = open('export-files.txt', 'rb')
        data = fp.read()
        fp.close()

        return data

    else:
        logging.info('Not authenticated.')

    if validEmail:
        response = make_response('Access denied for %s.' % result.user.email)
        return response

    # @CRITICAL: This is necessary for Google authentication to work.
    logging.info('-> Returning response: %s' % response)

    return response