fix: sign up with usergroups issue

This commit is contained in:
swve 2024-11-28 22:09:17 +01:00
parent f4794ebaf2
commit db46c94896
2 changed files with 15 additions and 9 deletions

View file

@ -16,7 +16,7 @@ from src.db.usergroup_resources import UserGroupResource
from src.db.usergroup_user import UserGroupUser from src.db.usergroup_user import UserGroupUser
from src.db.organizations import Organization from src.db.organizations import Organization
from src.db.usergroups import UserGroup, UserGroupCreate, UserGroupRead, UserGroupUpdate from src.db.usergroups import UserGroup, UserGroupCreate, UserGroupRead, UserGroupUpdate
from src.db.users import AnonymousUser, PublicUser, User, UserRead from src.db.users import AnonymousUser, InternalUser, PublicUser, User, UserRead
async def create_usergroup( async def create_usergroup(
@ -275,7 +275,7 @@ async def delete_usergroup_by_id(
async def add_users_to_usergroup( async def add_users_to_usergroup(
request: Request, request: Request,
db_session: Session, db_session: Session,
current_user: PublicUser | AnonymousUser, current_user: PublicUser | AnonymousUser | InternalUser,
usergroup_id: int, usergroup_id: int,
user_ids: str, user_ids: str,
) -> str: ) -> str:
@ -486,10 +486,13 @@ async def remove_resources_from_usergroup(
async def rbac_check( async def rbac_check(
request: Request, request: Request,
usergroup_uuid: str, usergroup_uuid: str,
current_user: PublicUser | AnonymousUser, current_user: PublicUser | AnonymousUser | InternalUser,
action: Literal["create", "read", "update", "delete"], action: Literal["create", "read", "update", "delete"],
db_session: Session, db_session: Session,
): ):
if isinstance(current_user, InternalUser):
return True
await authorization_verify_if_user_is_anon(current_user.id) await authorization_verify_if_user_is_anon(current_user.id)
await authorization_verify_based_on_roles_and_authorship( await authorization_verify_based_on_roles_and_authorship(

View file

@ -21,6 +21,7 @@ from src.security.rbac.rbac import (
from src.db.organizations import Organization, OrganizationRead from src.db.organizations import Organization, OrganizationRead
from src.db.users import ( from src.db.users import (
AnonymousUser, AnonymousUser,
InternalUser,
PublicUser, PublicUser,
User, User,
UserCreate, UserCreate,
@ -147,19 +148,21 @@ async def create_user_with_invite(
# Usage check # Usage check
check_limits_with_usage("members", org_id, db_session) check_limits_with_usage("members", org_id, db_session)
user = await create_user(request, db_session, current_user, user_object, org_id)
# Check if invite code contains UserGroup # Check if invite code contains UserGroup
if inviteCode.usergroup_id: if inviteCode.get("usergroup_id"):
# Add user to UserGroup # Add user to UserGroup
await add_users_to_usergroup( await add_users_to_usergroup(
request, request,
db_session, db_session,
current_user, InternalUser(id=0),
inviteCode.usergroup_id, int(inviteCode.get("usergroup_id")), # Convert to int since usergroup_id is expected to be int
user_object.username, str(user.id),
) )
user = await create_user(request, db_session, current_user, user_object, org_id)
increase_feature_usage("members", org_id, db_session) increase_feature_usage("members", org_id, db_session)
return user return user