def _login(self): """ Logs the user in to box.net """ if self.boxapi == None: self.boxapi = BoxDotNet() # login if not done yet, we only login once to prevent # the browser for popping up each time if not self.token: # get the ticket and open login url self._set_ticket() url = BoxDotNet.get_login_url(self.ticket) #wait for log in Web.LoginMagic("Log into Box.net", url, login_function=self._try_login)
def box_login(request, extra_context=dict(), account_inactive_template='TODO'): box = BoxDotNet() # if initial visit of this page, redirect to the box login screen if not 'ticket' in request.GET: url = box.get_login_url(settings.BOX_API_KEY) return HttpResponseRedirect(url) # if we have a ticket, then get the auth token tokenNode = box.login(settings.BOX_API_KEY, request.GET['ticket']) token = tokenNode.auth_token[0].elementText user_id = tokenNode.user[0].user_id[0].elementText print user_id # authenticate the user using this auth token user = authenticate(box_user_id=user_id) if user is None: # we have a token but no user, create one user = User() user.email = tokenNode.user[0].email[0].elementText # use box.net user_id as username user.username = user_id user.save() user_profile = UserProfile() user_profile.user = user user_profile.token = token user_profile.box_user_id = user_id user_profile.save() user = authenticate(box_user_id=user_id) # here we will have valid user so login login(request, user) if not user.is_active: return render_to_response(account_inactive_template, extra_context, context_instance=RequestContext(request)) # update user's auth token profile = user.get_profile() profile.token = token profile.save() return HttpResponseRedirect(_get_next(request))