def authenticate(self, token=None): client = DefaultClient(token) self.client = client auth_user = client.get_user() username = auth_user['email'] first_name = auth_user['first_name'] last_name = auth_user['last_name'] email = auth_user['email'] user = OdeskUser(username, first_name, last_name, email) return user
def callback(request, redirect_url=None): odesk_client = DefaultClient() frob = request.GET.get('frob', None) if frob: try: token, auth_user = odesk_client.auth.get_token(frob) except: if not redirect_url: redirect_url = '/' return HttpResponseRedirect(redirect_url) request.session[ODESK_TOKEN_SESSION_KEY] = token #TODO: Get rid of (conceptually correct) additional request to odesk.com user = django_authenticate(token=token) if user: login(request, user) else: pass #Probably the odesk auth backend is missing. Should we raise an error? redirect_url = request.session.pop(ODESK_REDIRECT_SESSION_KEY, redirect_url) if not redirect_url: redirect_url = '/' return HttpResponseRedirect(redirect_url) else: return HttpResponseRedirect(odesk_client.auth.auth_url())
def authenticate(self, token=None): client = DefaultClient(token) try: api_token, auth_user = client.auth.check_token() except HTTPError: return None username = auth_user['mail'] first_name = auth_user['first_name'] last_name = auth_user['last_name'] email = auth_user['mail'] user = OdeskUser(username, first_name, last_name, email) return user
def authenticate(self, token=None): client = DefaultClient(token) self.client = client auth_user = client.get_user() user = None username = self.clean_username(auth_user) model = get_user_model() if self.create_unknown_user: user, created = model.objects.get_or_create(username=username) if created: user = self.configure_user(user, auth_user, token) else: try: user = model.objects.get(username=username) except model.DoesNotExist: pass if self.sync_permissions_on_login: sync_odesk_permissions(user, token, self.create_unknown_group) return user
def authenticate(self, token=None): client = DefaultClient(token) try: api_token, auth_user = client.auth.check_token() except HTTPError: return None user = None username = self.clean_username(auth_user) model = get_user_model() userteams = set(team[u'id'] for team in client.hr.get_teams()) # TODO authorize subteams of parents in ODESK_AUTH_TEAMS auth_teams = userteams.intersection(set(settings.ODESK_AUTH_TEAMS)) if auth_teams or username in settings.ODESK_AUTH_USERS: if self.create_unknown_user: user, created = model.objects.get_or_create(username=username) user = self.set_user_info(user, auth_user) else: try: user = model.objects.get(username=username) except model.DoesNotExist: pass if user is not None: self.sync_django_groups(user, auth_teams) if userteams.intersection(set(settings.ODESK_AUTH_ADMIN_TEAMS)) or \ username in settings.ODESK_ADMINS: user.is_staff=True else: user.is_staff=False if userteams.intersection(set(settings.ODESK_AUTH_SUPERUSER_TEAMS)) or \ username in settings.ODESK_SUPERUSERS: user.is_superuser=True else: user.is_superuser=False # attach api_token to user instance, so it can be passed to post_save signal handler user.odesk_api_token = api_token user.save() return user
def authenticate(self, token=None): client = DefaultClient(token) try: api_token, auth_user = client.auth.check_token() except HTTPError: return None user = None username = self.clean_username(auth_user) model = get_user_model() if self.create_unknown_user: user, created = model.objects.get_or_create(username=username) if created: user = self.configure_user(user, auth_user) else: try: user = model.objects.get(username=username) except model.DoesNotExist: pass return user
def authenticate(request): redirect_to = request.REQUEST.get(REDIRECT_FIELD_NAME, '') request.session[ODESK_REDIRECT_SESSION_KEY] = redirect_to odesk_client = DefaultClient() return HttpResponseRedirect(odesk_client.auth.auth_url())