コード例 #1
0
    def dispatch_request(self, *args, **kwargs):
        resp = kwargs['data']
        access_token = resp['access_token']
        session['access_token'] = access_token, ''

        from urllib2 import Request, urlopen, URLError
        import json
        headers = {'Authorization': 'OAuth ' + access_token}
        req = Request('https://www.googleapis.com/oauth2/v1/userinfo', None,
                      headers)
        try:
            res = urlopen(req)
        except URLError:
            return req.read()  #TODO: Handle this

        data = json.loads(res.read())
        service_account = get_service_account(name=data['email'],
                                              service=USER.GOOGLE)
        next_url = request.args.get('next') or url_for('users.login')

        if g.user:
            if service_account:
                connect_service_account_to_user(g.user, service_account)
            else:
                service_account = create_service_account(
                    name=data['email'],
                    oauth_token=access_token,
                    service=USER.GOOGLE)
                connect_service_account_to_user(g.user, service_account)
            session['session_token'] = create_session(service_account)
            flash(
                USER.ASSOCIATION_COMPLETE %
                (USER.AUTH_SERVICE[USER.GOOGLE], data['email']), 'success')
            next_url = url_for('users.home')
        else:
            if service_account is not None:
                user = get_user(service_account=service_account)
                if user is not None:
                    # create session
                    session['session_token'] = create_session(service_account)
                    flash(u'Welcome %s %s' % (user.first_name, user.last_name))
                else:
                    # Service account exists, but no user.
                    session['session_token'] = create_session(service_account)
                    flash(
                        u'Welcome back, %s. Please consider becoming a member.'
                        % service_account.name)
            else:
                service_account = create_service_account(
                    name=data['email'],
                    oauth_token=access_token,
                    service=USER.GOOGLE)
                session['session_token'] = create_session(service_account)
                flash(u'Your %s ID %s has been saved.' %
                      (USER.AUTH_SERVICE[USER.GOOGLE], data['email']))
            if resp is None:
                flash(USER.LOGIN_DENIED)
        return redirect(next_url)
コード例 #2
0
    def dispatch_request(self, *args, **kwargs):
        resp = kwargs['data']
        service_account = get_service_account(name=resp['screen_name'],
                                              service=USER.TWITTER)
        next_url = request.args.get('next') or url_for('users.login')

        if g.user:
            if service_account:
                connect_service_account_to_user(g.user, service_account)
            else:
                service_account = create_service_account(
                    name=resp['screen_name'],
                    oauth_token=resp['oauth_token'],
                    oauth_secret=resp['oauth_token_secret'],
                    service=USER.TWITTER)
                connect_service_account_to_user(g.user, service_account)
            session['session_token'] = create_session(service_account)
            flash(
                USER.ASSOCIATION_COMPLETE %
                (USER.AUTH_SERVICE[USER.TWITTER], resp['screen_name']),
                'success')
            next_url = url_for('users.home')
        else:
            if service_account is not None:
                user = get_user(service_account=service_account)
                if user is not None:
                    session['session_token'] = create_session(service_account)
                    flash(u'Welcome %s %s' % (user.first_name, user.last_name))
                else:
                    session['session_token'] = create_session(service_account)
                    flash(
                        u'Welcome back, %s. Please consider becoming a member.'
                        % service_account.name)
            else:
                service_account = create_service_account(
                    name=resp['screen_name'],
                    oauth_token=resp['oauth_token'],
                    oauth_secret=resp['oauth_token_secret'],
                    service=USER.TWITTER)
                session['session_token'] = create_session(service_account)
                flash(u'Your %s ID %s has been saved.' %
                      (USER.AUTH_SERVICE[USER.TWITTER], resp['screen_name']))
            if resp is None:
                flash(USER.LOGIN_DENIED)
        return redirect(next_url)
コード例 #3
0
 def dispatch_request(self, *args, **kwargs):
     form = EmailLoginForm(request.form)
     if request.method == "POST":
         if form.validate_on_submit():
             service_account = get_service_account(name=form.email.data,
                                                   service=USER.LOCAL)
             if service_account and check_password_hash(
                     service_account.password, form.password.data):
                 token = create_session(service_account)
                 if token:
                     session['session_token'] = token
                     return redirect(url_for('users.home'))
             flash('Wrong email or password', 'error-message')
     return render_template("login_email.html", email_login_form=form)