mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-04-08 20:08:36 +02:00
seperated teams and sharepoint enviornment variables
This commit is contained in:
parent
ea71b9830c
commit
14a39e88e8
@ -70,19 +70,19 @@ class SharepointConnector(LoadConnector, PollConnector):
|
||||
self.requested_site_list: list[str] = sites
|
||||
|
||||
def load_credentials(self, credentials: dict[str, Any]) -> dict[str, Any] | None:
|
||||
aad_client_id = credentials["aad_client_id"]
|
||||
aad_client_secret = credentials["aad_client_secret"]
|
||||
aad_directory_id = credentials["aad_directory_id"]
|
||||
sp_client_id = credentials["sp_client_id"]
|
||||
sp_client_secret = credentials["sp_client_secret"]
|
||||
sp_directory_id = credentials["sp_directory_id"]
|
||||
|
||||
def _acquire_token_func() -> dict[str, Any]:
|
||||
"""
|
||||
Acquire token via MSAL
|
||||
"""
|
||||
authority_url = f"https://login.microsoftonline.com/{aad_directory_id}"
|
||||
authority_url = f"https://login.microsoftonline.com/{sp_directory_id}"
|
||||
app = msal.ConfidentialClientApplication(
|
||||
authority=authority_url,
|
||||
client_id=aad_client_id,
|
||||
client_credential=aad_client_secret,
|
||||
client_id=sp_client_id,
|
||||
client_credential=sp_client_secret,
|
||||
)
|
||||
token = app.acquire_token_for_client(
|
||||
scopes=["https://graph.microsoft.com/.default"]
|
||||
@ -224,9 +224,9 @@ if __name__ == "__main__":
|
||||
|
||||
connector.load_credentials(
|
||||
{
|
||||
"aad_client_id": os.environ["AAD_CLIENT_ID"],
|
||||
"aad_client_secret": os.environ["AAD_CLIENT_SECRET"],
|
||||
"aad_directory_id": os.environ["AAD_CLIENT_DIRECTORY_ID"],
|
||||
"sp_client_id": os.environ["SP_CLIENT_ID"],
|
||||
"sp_client_secret": os.environ["SP_CLIENT_SECRET"],
|
||||
"sp_directory_id": os.environ["SP_CLIENT_DIRECTORY_ID"],
|
||||
}
|
||||
)
|
||||
document_batches = connector.load_from_state()
|
||||
|
@ -11,15 +11,13 @@ import msal # type: ignore
|
||||
import openpyxl # type: ignore
|
||||
# import pptx # type: ignore
|
||||
from office365.graph_client import GraphClient # type: ignore
|
||||
from office365.teams.team import Team
|
||||
from office365.teams.channels.channel import Channel
|
||||
from office365.teams.chats.messages.message import ChatMessage
|
||||
from office365.outlook.mail.item_body import ItemBody
|
||||
from office365.teams.team import Team # type: ignore
|
||||
from office365.teams.channels.channel import Channel # type: ignore
|
||||
from office365.teams.chats.messages.message import ChatMessage # type: ignore
|
||||
from office365.outlook.mail.item_body import ItemBody # type: ignore
|
||||
|
||||
from danswer.configs.app_configs import INDEX_BATCH_SIZE
|
||||
from danswer.configs.constants import DocumentSource
|
||||
from danswer.connectors.cross_connector_utils.file_utils import is_text_file_extension
|
||||
from danswer.connectors.cross_connector_utils.file_utils import read_pdf_file
|
||||
from danswer.connectors.interfaces import GenerateDocumentsOutput
|
||||
from danswer.connectors.interfaces import LoadConnector
|
||||
from danswer.connectors.interfaces import PollConnector
|
||||
@ -50,6 +48,7 @@ def get_created_datetime(obj: ChatMessage):
|
||||
|
||||
|
||||
class TeamsConnector(LoadConnector, PollConnector):
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
batch_size: int = INDEX_BATCH_SIZE,
|
||||
@ -60,19 +59,19 @@ class TeamsConnector(LoadConnector, PollConnector):
|
||||
self.requested_team_list: list[str] = teams
|
||||
|
||||
def load_credentials(self, credentials: dict[str, Any]) -> dict[str, Any] | None:
|
||||
aad_client_id = credentials["aad_client_id"]
|
||||
aad_client_secret = credentials["aad_client_secret"]
|
||||
aad_directory_id = credentials["aad_directory_id"]
|
||||
teams_client_id = credentials["teams_client_id"]
|
||||
teams_client_secret = credentials["teams_client_secret"]
|
||||
teams_directory_id = credentials["teams_directory_id"]
|
||||
|
||||
def _acquire_token_func() -> dict[str, Any]:
|
||||
"""
|
||||
Acquire token via MSAL
|
||||
"""
|
||||
authority_url = f"https://login.microsoftonline.com/{aad_directory_id}"
|
||||
authority_url = f"https://login.microsoftonline.com/{teams_directory_id}"
|
||||
app = msal.ConfidentialClientApplication(
|
||||
authority=authority_url,
|
||||
client_id=aad_client_id,
|
||||
client_credential=aad_client_secret,
|
||||
client_id=teams_client_id,
|
||||
client_credential=teams_client_secret,
|
||||
)
|
||||
token = app.acquire_token_for_client(
|
||||
scopes=["https://graph.microsoft.com/.default"]
|
||||
@ -118,6 +117,9 @@ class TeamsConnector(LoadConnector, PollConnector):
|
||||
return channel_list
|
||||
|
||||
def get_all_team_objects(self) -> list[Team]:
|
||||
if self.graph_client is None:
|
||||
raise ConnectorMissingCredentialError("Sharepoint")
|
||||
|
||||
team_object_list: list[Team] = []
|
||||
|
||||
teams_object = self.graph_client.teams.get().execute_query()
|
||||
@ -244,13 +246,13 @@ class TeamsConnector(LoadConnector, PollConnector):
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
connector = TeamsConnector(sites=os.environ["SITES"].split(","))
|
||||
connector = TeamsConnector(teams=os.environ["TEAMS"].split(","))
|
||||
|
||||
connector.load_credentials(
|
||||
{
|
||||
"aad_client_id": os.environ["AAD_CLIENT_ID"],
|
||||
"aad_client_secret": os.environ["AAD_CLIENT_SECRET"],
|
||||
"aad_directory_id": os.environ["AAD_CLIENT_DIRECTORY_ID"],
|
||||
"teams_client_id": os.environ["TEAMS_CLIENT_ID"],
|
||||
"teams_client_secret": os.environ["TEAMS_CLIENT_SECRET"],
|
||||
"teams_directory_id": os.environ["TEAMS_CLIENT_DIRECTORY_ID"],
|
||||
}
|
||||
)
|
||||
document_batches = connector.load_from_state()
|
||||
|
@ -67,7 +67,7 @@ const MainSection = () => {
|
||||
|
||||
const sharepointCredential: Credential<SharepointCredentialJson> | undefined =
|
||||
credentialsData.find(
|
||||
(credential) => credential.credential_json?.aad_client_id
|
||||
(credential) => credential.credential_json?.sp_client_id
|
||||
);
|
||||
|
||||
return (
|
||||
@ -87,7 +87,7 @@ const MainSection = () => {
|
||||
<div className="flex mb-1 text-sm">
|
||||
<Text className="my-auto">Existing Azure AD Client ID: </Text>
|
||||
<Text className="ml-1 italic my-auto">
|
||||
{sharepointCredential.credential_json.aad_client_id}
|
||||
{sharepointCredential.credential_json.sp_client_id}
|
||||
</Text>
|
||||
<button
|
||||
className="ml-1 hover:bg-hover rounded p-1"
|
||||
@ -119,35 +119,35 @@ const MainSection = () => {
|
||||
formBody={
|
||||
<>
|
||||
<TextFormField
|
||||
name="aad_client_id"
|
||||
name="sp_client_id"
|
||||
label="Application (client) ID:"
|
||||
/>
|
||||
<TextFormField
|
||||
name="aad_directory_id"
|
||||
name="sp_directory_id"
|
||||
label="Directory (tenant) ID:"
|
||||
/>
|
||||
<TextFormField
|
||||
name="aad_client_secret"
|
||||
name="sp_client_secret"
|
||||
label="Client Secret:"
|
||||
type="password"
|
||||
/>
|
||||
</>
|
||||
}
|
||||
validationSchema={Yup.object().shape({
|
||||
aad_client_id: Yup.string().required(
|
||||
sp_client_id: Yup.string().required(
|
||||
"Please enter your Application (client) ID"
|
||||
),
|
||||
aad_directory_id: Yup.string().required(
|
||||
sp_directory_id: Yup.string().required(
|
||||
"Please enter your Directory (tenant) ID"
|
||||
),
|
||||
aad_client_secret: Yup.string().required(
|
||||
sp_client_secret: Yup.string().required(
|
||||
"Please enter your Client Secret"
|
||||
),
|
||||
})}
|
||||
initialValues={{
|
||||
aad_client_id: "",
|
||||
aad_directory_id: "",
|
||||
aad_client_secret: "",
|
||||
sp_client_id: "",
|
||||
sp_directory_id: "",
|
||||
sp_client_secret: "",
|
||||
}}
|
||||
onSubmit={(isSuccess) => {
|
||||
if (isSuccess) {
|
||||
@ -175,7 +175,7 @@ const MainSection = () => {
|
||||
connectorIndexingStatuses={sharepointConnectorIndexingStatuses}
|
||||
liveCredential={sharepointCredential}
|
||||
getCredential={(credential) =>
|
||||
credential.credential_json.aad_directory_id
|
||||
credential.credential_json.sp_directory_id
|
||||
}
|
||||
onUpdate={() =>
|
||||
mutate("/api/manage/admin/connector/indexing-status")
|
||||
|
@ -67,7 +67,7 @@ const MainSection = () => {
|
||||
|
||||
const teamsCredential: Credential<TeamsCredentialJson> | undefined =
|
||||
credentialsData.find(
|
||||
(credential) => credential.credential_json?.aad_client_id
|
||||
(credential) => credential.credential_json?.teams_client_id
|
||||
);
|
||||
|
||||
return (
|
||||
@ -86,7 +86,7 @@ const MainSection = () => {
|
||||
<div className="flex mb-1 text-sm">
|
||||
<Text className="my-auto">Existing Azure AD Client ID: </Text>
|
||||
<Text className="ml-1 italic my-auto">
|
||||
{teamsCredential.credential_json.aad_client_id}
|
||||
{teamsCredential.credential_json.teams_client_id}
|
||||
</Text>
|
||||
<button
|
||||
className="ml-1 hover:bg-hover rounded p-1"
|
||||
@ -118,35 +118,35 @@ const MainSection = () => {
|
||||
formBody={
|
||||
<>
|
||||
<TextFormField
|
||||
name="aad_client_id"
|
||||
name="teams_client_id"
|
||||
label="Application (client) ID:"
|
||||
/>
|
||||
<TextFormField
|
||||
name="aad_directory_id"
|
||||
name="teams_directory_id"
|
||||
label="Directory (tenant) ID:"
|
||||
/>
|
||||
<TextFormField
|
||||
name="aad_client_secret"
|
||||
name="teams_client_secret"
|
||||
label="Client Secret:"
|
||||
type="password"
|
||||
/>
|
||||
</>
|
||||
}
|
||||
validationSchema={Yup.object().shape({
|
||||
aad_client_id: Yup.string().required(
|
||||
teams_client_id: Yup.string().required(
|
||||
"Please enter your Application (client) ID"
|
||||
),
|
||||
aad_directory_id: Yup.string().required(
|
||||
teams_directory_id: Yup.string().required(
|
||||
"Please enter your Directory (tenant) ID"
|
||||
),
|
||||
aad_client_secret: Yup.string().required(
|
||||
teams_client_secret: Yup.string().required(
|
||||
"Please enter your Client Secret"
|
||||
),
|
||||
})}
|
||||
initialValues={{
|
||||
aad_client_id: "",
|
||||
aad_directory_id: "",
|
||||
aad_client_secret: "",
|
||||
teams_client_id: "",
|
||||
teams_directory_id: "",
|
||||
teams_client_secret: "",
|
||||
}}
|
||||
onSubmit={(isSuccess) => {
|
||||
if (isSuccess) {
|
||||
@ -173,7 +173,7 @@ const MainSection = () => {
|
||||
connectorIndexingStatuses={teamsConnectorIndexingStatuses}
|
||||
liveCredential={teamsCredential}
|
||||
getCredential={(credential) =>
|
||||
credential.credential_json.aad_directory_id
|
||||
credential.credential_json.teams_directory_id
|
||||
}
|
||||
onUpdate={() =>
|
||||
mutate("/api/manage/admin/connector/indexing-status")
|
||||
|
@ -363,15 +363,15 @@ export interface ZendeskCredentialJson {
|
||||
}
|
||||
|
||||
export interface SharepointCredentialJson {
|
||||
aad_client_id: string;
|
||||
aad_client_secret: string;
|
||||
aad_directory_id: string;
|
||||
sp_client_id: string;
|
||||
sp_client_secret: string;
|
||||
sp_directory_id: string;
|
||||
}
|
||||
|
||||
export interface TeamsCredentialJson {
|
||||
aad_client_id: string;
|
||||
aad_client_secret: string;
|
||||
aad_directory_id: string;
|
||||
teams_client_id: string;
|
||||
teams_client_secret: string;
|
||||
teams_directory_id: string;
|
||||
}
|
||||
|
||||
export interface DiscourseCredentialJson {
|
||||
|
Loading…
x
Reference in New Issue
Block a user