Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 28 additions & 12 deletions controller/auth/kratos.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,14 @@ def get_userid_from_mail(user_mail: str) -> str:
if values[key]["simple"]["mail"] == user_mail:
return key
# not in cached values, try search kratos
return __search_kratos_for_user_mail(user_mail)["id"]
result = __search_kratos_for_user_mail(user_mail)
if result is None:
print(
f"get_userid_from_mail: no kratos identity found for mail={user_mail}",
flush=True,
)
return None
return result["id"]


def __search_kratos_for_user_mail(user_mail: str) -> str:
Expand Down Expand Up @@ -315,14 +322,23 @@ def get_admin_users_by_public_metadata() -> List[Dict[str, Any]]:


def get_identity_is_admin(identity: Dict[str, Any]) -> bool:

if (identity.get("metadata_public") or {}).get("role") == "ADMIN" and identity[
"verifiable_addresses"
][0]["verified"]:
return True
if (
identity["traits"]["email"].split("@")[1] == "kern.ai"
and identity["verifiable_addresses"][0]["verified"]
):
return True
return False
try:
if (identity.get("metadata_public") or {}).get("role") == "ADMIN" and identity[
"verifiable_addresses"
][0]["verified"]:
return True
if (
identity["traits"]["email"].split("@")[1] == "kern.ai"
and identity["verifiable_addresses"][0]["verified"]
):
return True
return False
except Exception:
print(
f"get_identity_is_admin: faulty identity record - "
f"id={identity.get('id', 'UNKNOWN')}, "
f"traits={identity.get('traits')}, "
f"verifiable_addresses={identity.get('verifiable_addresses')}",
flush=True,
)
return False
6 changes: 4 additions & 2 deletions controller/data_block/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,11 @@ def get(org_id, project_id: str, data_block_id: str) -> DataBlock:
return data_block


def get_by_project_id(org_id: str, project_id: str) -> List[DataBlock]:
def get_by_project_id(
org_id: str, project_id: str, only_executed: bool = False
) -> List[DataBlock]:
data_blocks: List[DataBlock] = data_block_db_bo.get_all_by_project_id(
org_id, project_id
org_id, project_id, only_executed=only_executed
)
return data_blocks

Expand Down
10 changes: 7 additions & 3 deletions fast_api/routes/data_block.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from fastapi import APIRouter, Request, Body, Depends
from fastapi import APIRouter, Request, Body, Depends, Query

from fast_api.models import (
DataBlockCreateRequest,
Expand Down Expand Up @@ -63,10 +63,14 @@ def get_by_project_id(request: Request, project_id: str):
"/project/{project_id}/mini",
dependencies=[Depends(auth_manager.check_project_access_dep)],
)
def get_by_project_id(request: Request, project_id: str):
def get_project_data_blocks_mini(
request: Request, project_id: str, only_executed: bool
):
user = auth_manager.get_user_by_info(request.state.info)

data_blocks = data_block_manager.get_by_project_id(user.organization_id, project_id)
data_blocks = data_block_manager.get_by_project_id(
user.organization_id, project_id, only_executed=only_executed
)
data_blocks_extended = [
{"id": str(data_block.get("id")), "name": str(data_block.get("name"))}
for data_block in sql_alchemy_to_dict(data_blocks)
Expand Down
18 changes: 9 additions & 9 deletions fast_api/routes/inbox_mail.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

@router.post("")
def create_inbox_mail_by_thread(request: Request, inbox_mail: InboxMailCreateRequest):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
user = auth_manager.get_user_by_info(request.state.info)

if inbox_mail.threadId:
Expand Down Expand Up @@ -52,7 +52,7 @@ def create_inbox_mail_by_thread(request: Request, inbox_mail: InboxMailCreateReq

@router.get("/thread/{thread_id}")
def get_inbox_mails_by_thread(request: Request, thread_id: str) -> List[Dict[str, Any]]:
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin

user = auth_manager.get_user_by_info(request.state.info)

Expand All @@ -72,7 +72,7 @@ def get_inbox_mail_thread_overview_paginated(
limit: int = 10,
filters: Optional[List[str]] = Query(default=None),
):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
user = auth_manager.get_user_by_info(request.state.info)
mail = inbox_mail_manager.get_inbox_mail_threads_overview(
org_id=user.organization_id,
Expand All @@ -91,7 +91,7 @@ def update_inbox_mail_thread_progress(
thread_id: str,
inbox_mail_thread_update: UpdateInboxMailThreadProgressRequest,
):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
user = auth_manager.get_user_by_info(request.state.info)

inbox_mail_thread = inbox_mail_go.get_inbox_mail_thread_by_id(thread_id=thread_id)
Expand Down Expand Up @@ -133,7 +133,7 @@ def delete_inbox_mail_by_id(request: Request, mail_id: str):

@router.get("/new")
def has_new_inbox_mails(request: Request):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
user = auth_manager.get_user_by_info(request.state.info)

total_new_inbox_mails = inbox_mail_manager.get_new_inbox_mails_info(
Expand All @@ -150,7 +150,7 @@ def has_new_inbox_mails(request: Request):

@router.put("/thread/{thread_id}/unread/project")
def update_inbox_mail_threads_unread_by_project(request: Request, thread_id: str):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
if not user_is_admin:
raise HTTPException(status_code=403, detail="Not authorized")
inbox_mail_thread = inbox_mail_go.get_inbox_mail_thread_by_id(thread_id=thread_id)
Expand All @@ -165,7 +165,7 @@ def update_inbox_mail_threads_unread_by_project(request: Request, thread_id: str

@router.put("/thread/{thread_id}/unread/content")
def update_inbox_mail_threads_unread_by_content(request: Request, thread_id: str):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
if not user_is_admin:
raise HTTPException(status_code=403, detail="Not authorized")
inbox_mail_thread = inbox_mail_go.get_inbox_mail_thread_by_id(thread_id=thread_id)
Expand All @@ -180,7 +180,7 @@ def update_inbox_mail_threads_unread_by_content(request: Request, thread_id: str

@router.put("/thread/{thread_id}/unread-last")
def mark_inbox_mail_thread_as_unread(request: Request, thread_id: str):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
if not user_is_admin:
raise HTTPException(status_code=403, detail="Not authorized")
inbox_mail_thread = inbox_mail_go.get_inbox_mail_thread_by_id(thread_id=thread_id)
Expand All @@ -193,7 +193,7 @@ def mark_inbox_mail_thread_as_unread(request: Request, thread_id: str):

@router.delete("/thread/{thread_id}/similar")
def delete_similar_system_threads(request: Request, thread_id: str):
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
if not user_is_admin:
raise HTTPException(status_code=403, detail="Not authorized")

Expand Down
2 changes: 1 addition & 1 deletion fast_api/routes/organization.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def get_all_user(
org_id: str = None,
):
relevant_users = []
user_is_admin = auth_manager.check_admin_access(request.state)
user_is_admin = request.state.adm.is_admin
if org_id:
if not user_is_admin:
raise HTTPException(status_code=403, detail="Not authorized")
Expand Down
2 changes: 1 addition & 1 deletion submodules/model
Loading