def login(): """Does the login via OpenID. Has to call into `oid.try_login` to start the OpenID machinery. """ # if we are already logged in, go back to were we came from if logged_in_user() is not None: return redirect(oid.get_next_url()) if request.method == 'POST': openid = request.form.get('openid') if not re.findall('^https*://', openid): openid = 'http://' + openid if openid: pape_req = pape.Request([]) x = oid.try_login(openid, ask_for=['email', 'nickname'], ask_for_optional=['fullname'], extensions=[pape_req]) return x form = LoginForm() if form.validate_on_submit(): return redirect(oid.get_next_uril()) msg = oid.fetch_error() if msg: flash(msg) elif fns_util.pu_time(): flash('Please enter an openid') return render_template('login.html', next=oid.get_next_url(), error=oid.fetch_error(), form=form, version=version.__version__)
def create_profile(): error = '' if g.user is not None or 'open_id' not in session: return redirect(url_for('main.main_index')) if request.method == 'POST': name = request.form.get('name') email = request.form.get('email') pass1 = request.form.get('pass1') pass2 = request.form.get('pass2') if not name: error = 'Error: you have to provide a name' elif '@' not in email: error = 'Error: you have to enter a valid email address' elif not pass1: error = 'Please fill in password!' elif not pass2: error = 'Please confirm password!' elif pass2 != pass1: error = 'Passwords must be the same!' elif Users.objects(name=name).first(): error = 'Please type another name!' else: user = Users(name=name, email=email, open_id=session['open_id'], password=Users.generate_password(pass1)) user.generate_token() user.save() return redirect(oid.get_next_url()) return render_template('web/create_profile.html', next=oid.get_next_url(), error=error)
def create_or_login(resp): session['open_id'] = resp.identity_url user = Users.objects(open_id=resp.identity_url).first() if user is not None: g.user = user return redirect(oid.get_next_url()) return redirect(url_for('main.create_profile', next=oid.get_next_url(), name=resp.fullname or resp.nickname, email=resp.email))
def oid_login(): if g.user is not None: return redirect(oid.get_next_url()) if request.method == 'POST': openid = request.form.get('openid') if openid: return oid.try_login(openid, ask_for=['email', 'nickname'], ask_for_optional=['fullname']) return render_template('web/index.html', next=oid.get_next_url(), error=oid.fetch_error())
def create_or_login(resp): session['openid'] = resp.identity_url user = User.query.filter_by(openid = resp.identity_url).first() if user is None: return redirect(url_for('users.register', next = oid.get_next_url(), real_name = resp.fullname or resp.nickname, email = resp.email)) # Send new user to profile creation page # User successfully logged out - cache user object then redirect to wherever they came from g.user = user return redirect(oid.get_next_url())
def login(): if g.user is not None: return redirect(oid.get_next_url()) form = LoginForm() if form.validate_on_submit(): return oid.try_login(form.openid.data) return render_template('login.html', form=form, next=oid.get_next_url(), error=oid.fetch_error())
def login(): if flask.g.user is not None: return flask.redirect(oid.get_next_url()) if flask.request.method == "POST": openid = flask.request.form.get("openid") if openid: return oid.try_login(openid, ask_for=["email", "fullname", "nickname"]) # Display the errors on the page using the standard flash mechanism error = oid.fetch_error() if error: flask.flash(error, "alert-error") return flask.render_template("login.html", next=oid.get_next_url())
def create_or_login(resp): u = models.User.query.filter_by(openid=resp.identity_url).first() # If u is None, a new user needs to be created # Otherwise, log in the existing user if not u: data = dict(username=resp.nickname, fullname=resp.fullname, email=resp.email, openid=resp.identity_url) flask.session["temp_login_details"] = data return flask.redirect(flask.url_for("create_profile", next=oid.get_next_url())) flask.session["user_id"] = u.id flask.flash(u"Successfully logged in", "alert-success") return flask.redirect(oid.get_next_url())
def create_or_login(resp): steam_id = long( resp.identity_url.replace("http://steamcommunity.com/openid/id/", "")) account_id = int(steam_id & 0xFFFFFFFF) _user = User.query.filter(User.id == int(account_id & 0xFFFFFFFF)).first() if not _user: _user = User(int(account_id & 0xFFFFFFFF), steam.user.profile(steam_id).persona or account_id) db.session.add(_user) db.session.commit() login_attempt = login_user(_user) if login_attempt is True: flash(u"You are logged in as {}".format(_user.name), "success") elif not _user.is_active(): flash( u"Cannot log you in as {}, your account has been disabled. If you believe this is in error, please contact {}." .format(_user.name, current_app.config["CONTACT_EMAIL"]), "danger") else: flash( u"Error logging you in as {}, please try again later.".format( _user.name), "danger") return redirect(oid.get_next_url())
def flickr_auth(): # Convert the frob passed back from Flickr's auth system into an auth token. api_key = os.environ['PARAM1'] api_secret = os.environ['PARAM2'] flickr = FlickrAPI(api_key, api_secret, store_token = False) token = flickr.get_token(request.values['frob']) # Retrieve the Flickr screen name associated with the dude that just authenticated rsp = flickr.auth_checkToken(auth_token = token, format = 'xmlnode') flickr_screen_name = rsp.auth[0].user[0].attrib['username'] user = session['tmp_flickr_user']; # Check if authenticated screen name matches screen name entered on account creation if flickr_screen_name.lower() == user.name.lower(): user.flickr_auth = True db.session.add(user) db.session.commit() flash('You have successfully authenticated your Flickr account. Welcome.') return redirect(url_for('index')) # Send newly minted user to their Brickr landing page else: flash('Your chosen Screen Name does not match the Screen Name you logged into Flickr with! Try this one.') db.session.rollback() return redirect(url_for('users.register', next = oid.get_next_url(), do_flickr_auth = True, screen_name = flickr_screen_name, real_name = user.real_name, email = user.email)) # Send user back to profile creation page return 'FAILED to Authenticate with Flickr. FAILED. HARD. Call Remi.'
def logout(): fns_util.pu_time(reset=True) if session.pop('openid', None): flash(u'You have been signed out') else: flash(u'You were already signed out') return redirect(oid.get_next_url())
def logout(): if 'user_id' in session: session.pop('user_id') if 'openid' in session: session.pop('openid') flash('You were logged out') return redirect(oid.get_next_url())
def create_or_login(resp): match = re.compile( "steamcommunity.com/openid/id/(.*?)$").search(resp.identity_url) query = api.get_player_summaries(match.group(1)) if query["response"]["players"]: steamdata = query["response"]["players"][0] else: abort(404) player, created = Player.get_or_create( account_id=convert_to_32_bit(int(steamdata["steamid"])), defaults=steamdata) # update variable information if player exists if player: g.user = player g.user.avatar = steamdata["avatar"] g.user.avatarmedium = steamdata["avatarmedium"] g.user.avatarfull = steamdata["avatarfull"] g.user.personaname = steamdata["personaname"] else: g.user = created g.user.last_login = datetime.datetime.now() g.user.save() session["account_id"] = g.user.account_id tasks.get_all_matches.delay(g.user.account_id) flash("You are now logged in as {}".format(g.user.personaname)) return redirect(oid.get_next_url())
def login(): user = g.user if user is not None and user.is_authenticated: # User must already be logged in return redirect(oid.get_next_url()) form = LoginForm() if form.validate_on_submit(): # Got login data from post request session['remember_me'] = form.remember_me.data return oid.try_login(form.openid.data, ask_for=['nickname', 'email']) # User must not be logged in yet and sent a get request to /login return render_template('login.html', title='Sign In', form=form, providers=app.config['OPENID_PROVIDERS'], next=oid.get_next_url(), error=oid.fetch_error())
def create_or_login(resp): """This is called when login with OpenID succeeded and it's not necessary to figure out if this is the users's first login or not. This function has to redirect otherwise the user will be presented with a terrible URL which we certainly don't want. """ session['openid'] = resp.identity_url if 'pape' in resp.extensions: pape_resp = resp.extensions['pape'] session['auth_time'] = pape_resp.auth_time user = User.query.filter_by(openid=resp.identity_url).first() if user is not None: flash(u'Successfully signed in as %s' % user.name) g.user = user return redirect(oid.get_next_url()) return redirect(url_for('create_profile', next=oid.get_next_url(), name=resp.fullname or resp.nickname, email=resp.email))
def create_or_login(resp): steam_id = long( resp.identity_url.replace("http://steamcommunity.com/openid/id/", "")) account_id = int(steam_id & 0xFFFFFFFF) _user = User.query.get(account_id) new_user = False if not _user: _user = User(account_id) new_user = True db.session.add(_user) try: db.session.commit() except IntegrityError: db.session.rollback() _user = User.query.get(account_id) if not _user.signed_in: _user.signed_in = True db.session.add(_user) db.session.commit() if not _user.is_active(): flash(u"Cannot log you in, {}. You are banned.".format(_user.name), "danger") return redirect(oid.get_next_url()) login_attempt = login_user(_user, remember=True) if login_attempt is True and new_user and _user.profile_url: flash(u"Welcome to mods.tf, {}!".format(_user.name), "success") elif login_attempt is True and new_user and not _user.profile_url: flash( u"Welcome to mods.tf! Unfortunately were unable to fetch your Steam user data." u"We will try again soon. For now you will be represented by your numerical ID, {}." .format(_user.name), "success") elif login_attempt is True and not new_user: flash(u"Welcome back, {}.".format(_user.name), "success") else: flash( u"Error logging you in as {}, please try again later.".format( _user.name), "danger") return redirect(oid.get_next_url())
def create_or_login(resp): """This is called when login with OpenID succeeded and it's not necessary to figure out if this is the users's first login or not. This function has to redirect otherwise the user will be presented with a terrible URL which we certainly don't want. """ session['openid'] = resp.identity_url if 'pape' in resp.extensions: pape_resp = resp.extensions['pape'] session['auth_time'] = pape_resp.auth_time user = User.query.filter_by(openid=resp.identity_url).first() if user is not None: flash(u'Successfully signed in as %s' % user.name) g.user = user return redirect(oid.get_next_url()) return redirect( url_for('create_profile', next=oid.get_next_url(), name=resp.fullname or resp.nickname, email=resp.email))
def after_login(resp): _steam_id_re = re.compile('steamcommunity.com/openid/id/(.*?)$') match = _steam_id_re.search(resp.identity_url) g.user = User.get_or_create(match.group(1)) steam_data = get_steam_userinfo(g.user.steam_id) g.user.nickname = steam_data['personaname'] db.session.commit() session['user_id'] = g.user.id flash('You are logged in as %s' % g.user.nickname) return redirect(oid.get_next_url())
def login(): if g.user is not None and g.user.is_authenticated(): return redirect(oid.get_next_url()) form = LoginForm() if form.validate_on_submit(): session['remember_me'] = form.remember_me.data return oid.try_login(form.openid.data, ask_for=['nickname', 'email']) return render_template('login.html', title='Sign In', form=form, providers=app.config['OPENID_PROVIDERS'])
def login(): lForm = LoginForm() # If the page was reached by a post request from the login form # if request.method == 'POST' and not sForm.validate_on_submit(): if lForm.validate_on_submit(): session['remember_me'] = lForm.remember_me.data flash('You have been successfully logged in', 'success') return oid.try_login(lForm.openid.data, ask_for=['nickname', 'email']) flash('Your openID was not recognised', 'error') return redirect(oid.get_next_url())
def create_profile(): """If this is the user's first login, the create_or_login function will redirect here so that the user can set up his profile. """ if g.user is not None or 'openid' not in session: return redirect(url_for('login')) if request.method == 'POST': name = request.form['name'] email = request.form['email'] if not name: flash(u'Error: you have to provide a name') elif '@' not in email: flash(u'Error: you have to enter a valid email address') else: flash(u'Profile successfully created') db.session.add(User(name, email, session['openid'])) db.session.commit() return redirect(oid.get_next_url()) return render_template('create_profile.html', next_url=oid.get_next_url(), version=version.__version__)
def create_or_login(resp): id = steam_id_re.findall(resp.identity_url)[0] g.user, new = User.get_or_create(steamid=id) profile = g.user.get_steam_profile() g.user.nickname = profile['personaname'] g.user.save() if new: flash("Welcome to TF2 Club!") return redirect("/?onboard=1") return redirect(oid.get_next_url())
def register(): if g.user is not None or 'openid' not in session: return redirect(oid.get_next_url()) # Registration form form = RegisterForm(request.form) if 'openid' in session: form.password.validators = [] form.confirm.validators = [] if form.validate_on_submit(): # Create a user instance not yet stored in the database user = User(form.screen_name.data, form.email.data, form.real_name.data) if 'openid' in session: user.openid = session['openid'] else: user.password = generate_password_hash(form.password.data) if form.flickr_auth.data: # User selected to authorize their screen name as a flickr account session['tmp_flickr_user'] = user; api_key = os.environ['PARAM1'] api_secret = os.environ['PARAM2'] flickr = FlickrAPI(api_key, api_secret, store_token = False) login_url = flickr.web_login_url('read') return redirect(login_url) else: # Insert the record in our data base and commit it db.session.add(user) db.session.commit() # Log the user in, as he now has an ID session['user_id'] = user.id flash('Thank you for registering with Brickr!') return redirect(url_for('index')) # Send newly minted user to their Brickr landing page return render_template('users/register.html', form = form, next = oid.get_next_url())
def create_or_login(resp): steam_id = long(resp.identity_url.replace("http://steamcommunity.com/openid/id/", "")) account_id = int(steam_id & 0xFFFFFFFF) _user = User.query.get(account_id) new_user = False if not _user: _user = User(account_id) new_user = True db.session.add(_user) try: db.session.commit() except IntegrityError: db.session.rollback() _user = User.query.get(account_id) if not _user.signed_in: _user.signed_in = True db.session.add(_user) db.session.commit() if not _user.is_active(): flash(u"Cannot log you in, {}. You are banned.".format(_user.name), "danger") return redirect(oid.get_next_url()) login_attempt = login_user(_user, remember=True) if login_attempt is True and new_user and _user.profile_url: flash(u"Welcome to mods.tf, {}!".format(_user.name), "success") elif login_attempt is True and new_user and not _user.profile_url: flash(u"Welcome to mods.tf! Unfortunately were unable to fetch your Steam user data." u"We will try again soon. For now you will be represented by your numerical ID, {}.".format(_user.name), "success") elif login_attempt is True and not new_user: flash(u"Welcome back, {}.".format(_user.name), "success") else: flash(u"Error logging you in as {}, please try again later.".format(_user.name), "danger") return redirect(oid.get_next_url())
def login(): if g.user is not None: return redirect(oid.get_next_url()) if request.method == 'POST': openid = request.form.get('openid_auto_url') if not openid: openid = request.form.get('openid') if openid: return oid.try_login(openid, ask_for = ['email', 'fullname', 'nickname', 'country', 'timezone', 'website']) # login form form = LoginForm(request.form) # make sure data is valid, but doesn't validate password is right if form.validate_on_submit(): g.user = User.query.filter_by(email = form.email.data).first() #we use werzeug to validate user's password if g.user and check_password_hash(g.user.password, form.password.data): # the session can't be modified as it's signed, it's a safe place to store the user ID session['user_id'] = g.user.id flash('Successfully logged %s in!' % g.user.name) return redirect(oid.get_next_url()) flash('Wrong email or password', 'error-message') return render_template('users/login.html', form = form, next = oid.get_next_url(), error = oid.fetch_error())
def create_or_login(resp): _steam_id_re = re.compile("steamcommunity.com/openid/id/(.*?)$") match = _steam_id_re.search(resp.identity_url) g.user = steam.get_or_create(match.group(1)) steamdata = steam.get_steam_userinfo(g.user.steam_id) g.user.username = steamdata["personaname"] g.user.avatar_url = steamdata["avatarfull"] g.user.online_status = steamdata["personastate"] g.user.last_online = steamdata["lastlogoff"] g.user.profile_url = steamdata["profileurl"] g.user.profile_visibility = steamdata["communityvisibilitystate"] db.session.add(g.user) db.session.commit() session["user_id"] = g.user.id return redirect(oid.get_next_url())
def create_profile(): if flask.g.user is not None: return flask.redirect(flask.url_for('index')) data = None if "temp_login_details" in flask.session: data = flask.session["temp_login_details"] flask.session.pop("temp_login_details", None) result = forms.create_or_update_model(models.User, None, data) if "success" not in result: return flask.render_template("forms/add_create.html", **result) u = result["model"] flask.session["user_id"] = u.id flask.flash(u"Welcome to the site!", "alert-success") return flask.redirect(oid.get_next_url())
def create_or_login(resp): steam_id = long(resp.identity_url.replace("http://steamcommunity.com/openid/id/", "")) account_id = int(steam_id & 0xFFFFFFFF) _user = User.query.filter(User.id == int(account_id & 0xFFFFFFFF)).first() if not _user: _user = User(int(account_id & 0xFFFFFFFF), steam.user.profile(steam_id).persona or account_id) db.session.add(_user) db.session.commit() login_attempt = login_user(_user) if login_attempt is True: flash(u"You are logged in as {}".format(_user.name), "success") elif not _user.is_active(): flash(u"Cannot log you in as {}, your account has been disabled. If you believe this is in error, please contact {}.".format(_user.name, current_app.config["CONTACT_EMAIL"]), "danger") else: flash(u"Error logging you in as {}, please try again later.".format(_user.name), "danger") return redirect(oid.get_next_url())
def logout(): session.pop("user_id", None) return redirect(oid.get_next_url())
def login_oid(): if 'user_id' in session: return redirect(oid.get_next_url()) return oid.try_login('https://openid.nus.edu.sg', ask_for=['email'])
def login(): if current_user.is_authenticated(): return redirect(oid.get_next_url()) return oid.try_login('http://steamcommunity.com/openid')
def logout(): logout_user() flash(u"You are now logged out.") return redirect(oid.get_next_url())
def logout(): session.pop('openid', None) flash(u'You were signed out') return redirect(oid.get_next_url())
def logout(): logout_user() return redirect(oid.get_next_url())
def route_auth_login(): if g.user: return redirect(oid.get_next_url()) return oid.try_login("http://steamcommunity.com/openid")
def logout(): session.pop('openid', None) session.pop('games', None) session.pop('user', None) session.pop('naive', None) return redirect(oid.get_next_url())
def login(): if 'user' in g: return redirect(oid.get_next_url()) else: return oid.try_login(app.config['STEAM_API_URL'])
def login(): if g.user is not None: return redirect(oid.get_next_url()) return oid.try_login("http://steamcommunity.com/openid")
def logout(): logout_user() flash('You have been logged out', 'success') return redirect(oid.get_next_url())