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
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
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
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
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
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
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
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
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
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
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
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)
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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