mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: re-eng roles
This commit is contained in:
parent
4e5f6cf966
commit
a134316f7a
4 changed files with 16 additions and 5 deletions
|
|
@ -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.chapters import CourseChapter, create_coursechapter
|
||||||
from src.services.courses.activities.activities import Activity, create_activity
|
from src.services.courses.activities.activities import Activity, create_activity
|
||||||
from src.services.courses.thumbnails import upload_thumbnail
|
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.users.users import PublicUser, User, UserInDB, UserWithPassword
|
||||||
|
|
||||||
from src.services.orgs import OrganizationInDB, Organization, create_org
|
from src.services.orgs import OrganizationInDB, Organization, create_org
|
||||||
|
|
@ -36,7 +37,7 @@ async def create_initial_data(request: Request):
|
||||||
user_id="user_admin",
|
user_id="user_admin",
|
||||||
creation_date=str(datetime.now()),
|
creation_date=str(datetime.now()),
|
||||||
update_date=str(datetime.now()),
|
update_date=str(datetime.now()),
|
||||||
roles=["role_admin"],
|
roles= [],
|
||||||
orgs=[],
|
orgs=[],
|
||||||
username=f"admin",
|
username=f"admin",
|
||||||
email=f"admin@admin.admin",
|
email=f"admin@admin.admin",
|
||||||
|
|
|
||||||
|
|
@ -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}, {
|
await user.update_one({"user_id": current_user.user_id}, {
|
||||||
"$addToSet": {"orgs": user_organization.dict()}})
|
"$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:
|
if not org_in_db:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Unavailable database")
|
status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Unavailable database")
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,12 @@ class UserOrganization(BaseModel):
|
||||||
def __getitem__(self, item):
|
def __getitem__(self, item):
|
||||||
return getattr(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
|
verified: bool | None = False
|
||||||
disabled: bool | None = False
|
disabled: bool | None = False
|
||||||
orgs: list[UserOrganization] = []
|
orgs: list[UserOrganization] = []
|
||||||
roles: list[str] = []
|
roles: list[UserRolesInOrganization] = []
|
||||||
creation_date: str
|
creation_date: str
|
||||||
update_date: str
|
update_date: str
|
||||||
|
|
||||||
|
|
@ -41,7 +47,7 @@ class UserInDB(User):
|
||||||
class PublicUser(User):
|
class PublicUser(User):
|
||||||
user_id: str
|
user_id: str
|
||||||
orgs: list[UserOrganization] = []
|
orgs: list[UserOrganization] = []
|
||||||
roles: list[str] = []
|
roles: list[UserRolesInOrganization] = []
|
||||||
creation_date: str
|
creation_date: str
|
||||||
update_date: str
|
update_date: str
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from uuid import uuid4
|
||||||
from fastapi import HTTPException, Request, status
|
from fastapi import HTTPException, Request, status
|
||||||
from src.services.roles.schemas.roles import Role
|
from src.services.roles.schemas.roles import Role
|
||||||
from src.security.security import security_hash_password, security_verify_password
|
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):
|
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")]
|
orgs = [UserOrganization(org_id=org_id, org_role="member")]
|
||||||
|
|
||||||
# Give role
|
# Give role
|
||||||
roles = ["role_member"]
|
roles = [UserRolesInOrganization(role_id="role_member", org_id=org_id)]
|
||||||
|
|
||||||
# Create the user
|
# Create the user
|
||||||
user = UserInDB(user_id=user_id, creation_date=str(datetime.now()),
|
user = UserInDB(user_id=user_id, creation_date=str(datetime.now()),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue