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.organizations import Organization
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(
@ -275,7 +275,7 @@ async def delete_usergroup_by_id(
async def add_users_to_usergroup(
request: Request,
db_session: Session,
current_user: PublicUser | AnonymousUser,
current_user: PublicUser | AnonymousUser | InternalUser,
usergroup_id: int,
user_ids: str,
) -> str:
@ -486,10 +486,13 @@ async def remove_resources_from_usergroup(
async def rbac_check(
request: Request,
usergroup_uuid: str,
current_user: PublicUser | AnonymousUser,
current_user: PublicUser | AnonymousUser | InternalUser,
action: Literal["create", "read", "update", "delete"],
db_session: Session,
):
if isinstance(current_user, InternalUser):
return True
await authorization_verify_if_user_is_anon(current_user.id)
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.users import (
AnonymousUser,
InternalUser,
PublicUser,
User,
UserCreate,
@ -147,19 +148,21 @@ async def create_user_with_invite(
# Usage check
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
if inviteCode.usergroup_id:
if inviteCode.get("usergroup_id"):
# Add user to UserGroup
await add_users_to_usergroup(
request,
db_session,
current_user,
inviteCode.usergroup_id,
user_object.username,
InternalUser(id=0),
int(inviteCode.get("usergroup_id")), # Convert to int since usergroup_id is expected to be int
str(user.id),
)
user = await create_user(request, db_session, current_user, user_object, org_id)
increase_feature_usage("members", org_id, db_session)
return user