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