Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
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())
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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())