예제 #1
0
    def authenticate(self, token=None):
        client = DefaultClient(token)
        self.client = client
        try:
            api_token, auth_user = client.auth.check_token()
            self.api_token, self.auth_user = api_token, auth_user
        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, 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
예제 #2
0
 def configure_user(self, user, auth_user, token):
     user.first_name = auth_user['first_name']
     user.last_name = auth_user['last_name']
     user.email = auth_user['mail']
     admins = settings.ODESK_ADMINS
     superusers = settings.ODESK_SUPERUSERS
     if user.username in admins:
         user.is_staff = True
     if user.username in superusers:
         user.is_superuser = True
     user.set_unusable_password()
     user.save()
     sync_odesk_permissions(user, token, self.create_unknown_group)
     return user