mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-07-12 22:23:01 +02:00
Fix nagging double auth issue (#2960)
* fix nagging double auth issue * ports
This commit is contained in:
@ -49,6 +49,7 @@ from httpx_oauth.oauth2 import BaseOAuth2
|
|||||||
from httpx_oauth.oauth2 import OAuth2Token
|
from httpx_oauth.oauth2 import OAuth2Token
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
from sqlalchemy import text
|
||||||
from sqlalchemy.orm import attributes
|
from sqlalchemy.orm import attributes
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
@ -366,6 +367,10 @@ class UserManager(UUIDIDMixin, BaseUserManager[User, uuid.UUID]):
|
|||||||
}
|
}
|
||||||
|
|
||||||
user = await self.user_db.create(user_dict)
|
user = await self.user_db.create(user_dict)
|
||||||
|
|
||||||
|
# Explicitly set the Postgres schema for this session to ensure
|
||||||
|
# OAuth account creation happens in the correct tenant schema
|
||||||
|
await db_session.execute(text(f'SET search_path = "{tenant_id}"'))
|
||||||
user = await self.user_db.add_oauth_account(
|
user = await self.user_db.add_oauth_account(
|
||||||
user, oauth_account_dict
|
user, oauth_account_dict
|
||||||
)
|
)
|
||||||
|
@ -57,7 +57,10 @@ async def get_user_count() -> int:
|
|||||||
|
|
||||||
# Need to override this because FastAPI Users doesn't give flexibility for backend field creation logic in OAuth flow
|
# Need to override this because FastAPI Users doesn't give flexibility for backend field creation logic in OAuth flow
|
||||||
class SQLAlchemyUserAdminDB(SQLAlchemyUserDatabase):
|
class SQLAlchemyUserAdminDB(SQLAlchemyUserDatabase):
|
||||||
async def create(self, create_dict: Dict[str, Any]) -> UP:
|
async def create(
|
||||||
|
self,
|
||||||
|
create_dict: Dict[str, Any],
|
||||||
|
) -> UP:
|
||||||
user_count = await get_user_count()
|
user_count = await get_user_count()
|
||||||
if user_count == 0 or create_dict["email"] in get_default_admin_user_emails():
|
if user_count == 0 or create_dict["email"] in get_default_admin_user_emails():
|
||||||
create_dict["role"] = UserRole.ADMIN
|
create_dict["role"] = UserRole.ADMIN
|
||||||
|
Reference in New Issue
Block a user