feat: re-eng roles

This commit is contained in:
swve 2023-05-07 18:19:36 +00:00
parent 4e5f6cf966
commit a134316f7a
4 changed files with 16 additions and 5 deletions

View file

@ -9,6 +9,7 @@ from src.security.security import security_hash_password
from src.services.courses.chapters import CourseChapter, create_coursechapter
from src.services.courses.activities.activities import Activity, create_activity
from src.services.courses.thumbnails import upload_thumbnail
from src.services.users.schemas.users import UserRolesInOrganization
from src.services.users.users import PublicUser, User, UserInDB, UserWithPassword
from src.services.orgs import OrganizationInDB, Organization, create_org
@ -36,7 +37,7 @@ async def create_initial_data(request: Request):
user_id="user_admin",
creation_date=str(datetime.now()),
update_date=str(datetime.now()),
roles=["role_admin"],
roles= [],
orgs=[],
username=f"admin",
email=f"admin@admin.admin",

View file

@ -88,6 +88,10 @@ async def create_org(request: Request, org_object: Organization, current_user: P
await user.update_one({"user_id": current_user.user_id}, {
"$addToSet": {"orgs": user_organization.dict()}})
# add role admin to org
await user.update_one({"user_id": current_user.user_id}, {
"$addToSet": {"roles": {"org_id": org_id, "role_id": "role_admin"}}})
if not org_in_db:
raise HTTPException(
status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Unavailable database")

View file

@ -9,6 +9,12 @@ class UserOrganization(BaseModel):
def __getitem__(self, item):
return getattr(self, item)
class UserRolesInOrganization(BaseModel):
org_id: str
role_id: str
def __getitem__(self, item):
return getattr(self, item)
@ -31,7 +37,7 @@ class UserInDB(User):
verified: bool | None = False
disabled: bool | None = False
orgs: list[UserOrganization] = []
roles: list[str] = []
roles: list[UserRolesInOrganization] = []
creation_date: str
update_date: str
@ -41,7 +47,7 @@ class UserInDB(User):
class PublicUser(User):
user_id: str
orgs: list[UserOrganization] = []
roles: list[str] = []
roles: list[UserRolesInOrganization] = []
creation_date: str
update_date: str

View file

@ -4,7 +4,7 @@ from uuid import uuid4
from fastapi import HTTPException, Request, status
from src.services.roles.schemas.roles import Role
from src.security.security import security_hash_password, security_verify_password
from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserOrganization, UserWithPassword, UserInDB
from src.services.users.schemas.users import PasswordChangeForm, PublicUser, User, UserOrganization, UserRolesInOrganization, UserWithPassword, UserInDB
async def create_user(request: Request, current_user: PublicUser | None, user_object: UserWithPassword, org_slug: str):
@ -52,7 +52,7 @@ async def create_user(request: Request, current_user: PublicUser | None, user_o
orgs = [UserOrganization(org_id=org_id, org_role="member")]
# Give role
roles = ["role_member"]
roles = [UserRolesInOrganization(role_id="role_member", org_id=org_id)]
# Create the user
user = UserInDB(user_id=user_id, creation_date=str(datetime.now()),