From 0a0ffa9fdafc36bcf04da8dd154188ce60a3e5a3 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Sun, 22 Sep 2024 20:01:36 -0400 Subject: [PATCH 01/11] Created skeleton of first three endpoints --- api-v2/app/modules/access/auth_controller.py | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index 8e261d78..d7a690fb 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -301,3 +301,28 @@ def confirm_forgot_password(body: ConfirmForgotPasswordRequest, }) return {"message": "Password reset successful"} + + +@router.post("/confirmInvite", + description="", + response_model=None) + +def confirm_invite(): + pass + + +@router.post("/invite", + description="", + response_model=None) +def invite(): + pass + + +@router.post("/new_password", + description="", + response_model=None) +def new_password(): + pass + + + From 52fad0036d1e288f38085fc2ac5a5d3005a6c8e1 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Tue, 24 Sep 2024 15:54:52 -0400 Subject: [PATCH 02/11] Created /invite endpoint --- api-v2/app/modules/access/auth_controller.py | 72 ++++++++++++++++++-- api-v2/app/modules/access/schemas.py | 8 +++ 2 files changed, 73 insertions(+), 7 deletions(-) diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index d7a690fb..9c66a5f2 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -1,4 +1,5 @@ import logging +import random import jwt import boto3 @@ -10,7 +11,7 @@ from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, - ConfirmForgotPasswordRequest, RefreshTokenResponse) + ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse) from app.modules.access.crud import create_user, delete_user, get_user from app.modules.deps import (SettingsDep, DbSessionDep, CognitoIdpDep, @@ -250,7 +251,7 @@ def refresh(request: Request, @router.post( "/forgot-password", - description="Handles forgot password requests by hashing credentialsand sending to AWS Cognito", + description="Handles forgot password requests by hashing credentials and sending to AWS Cognito", ) def forgot_password(body: ForgotPasswordRequest, settings: SettingsDep, @@ -303,6 +304,68 @@ def confirm_forgot_password(body: ConfirmForgotPasswordRequest, return {"message": "Password reset successful"} + + +@router.post("/invite", + description="Invites a new user to application after creating account with email and temporary password in AWS Cognito", + response_model=InviteResponse) +def invite(request: InviteRequest, + settings: SettingsDep, + db: DbSessionDep, + cognito_client: CognitoIdpDep): + # create temporary password for user + numbers = '0123456789' + lowercase_chars = 'abcdefghijklmnopqrstuvwxyz' + uppercase_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + symbols = '.-_~' + temporary_password = ''.join(random.choices(numbers, k=3)) + ''.join(random.choices(lowercase_chars, k=3)) + ''.join(random.choices(symbols, k=1)) + ''.join(random.choices(uppercase_chars, k=3)) + # create the new user in cognito + try: + cognito_client.admin_create_user( + UserPoolId=settings.COGNITO_USER_POOL_ID, + Username=request.email, + TemporaryPassword=temporary_password, + ClientMetadata={ + 'url': settings.ROOT_URL + }, + DesiredDeliveryMediums=["EMAIL"] + ) + # handle errors + except ClientError as error: + if error.response['Error']['Code'] == 'UserNotFoundException': + raise HTTPException(status_code=400, detail="User not found. Confirmation not sent.") + else: + raise HTTPException(status_code=500, detail=error.response['Error']['Message']) + # if there are no errors create the user in the database + try: + # get the cooridinator email from somewhere + coordinator_email = request.id_token + + # create the user in the database + user = create_user(db, UserCreate( + email=request.email, + role=UserRole.GUEST, + firstName=request.firstName, + middleName=request.middleName, + lastName=request.lastName + )) + # get the guest id, cooridinator id from database + guest_id = user.id + coordinator = get_user(db, coordinator_email) + if not coordinator: + raise HTTPException(status_code=400, detail="Coordinator not found") + coordinator_id = coordinator.id + # Assuming you have a create_unmatched_case function in your crud module + create_unmatched_case(db, guest_id=guest_id, coordinator_id=coordinator_id) + except Exception as error: + raise HTTPException(status_code=400, detail=str(error)) + + return {"message": "Invitation sent successfully"} + + + + + @router.post("/confirmInvite", description="", response_model=None) @@ -311,11 +374,6 @@ def confirm_invite(): pass -@router.post("/invite", - description="", - response_model=None) -def invite(): - pass @router.post("/new_password", diff --git a/api-v2/app/modules/access/schemas.py b/api-v2/app/modules/access/schemas.py index 49202f78..81383fbb 100644 --- a/api-v2/app/modules/access/schemas.py +++ b/api-v2/app/modules/access/schemas.py @@ -60,6 +60,14 @@ class ConfirmForgotPasswordRequest(BaseModel): class ConfirmForgotPasswordResponse(BaseModel): message: str +class InviteResponse(BaseModel): + code: int + type: str + message: str + +class InviteRequest(BaseModel): + email: EmailStr + # class SmartNested(Nested): # ''' From 042c5ab1e8944f1db9d3d1159271ba965917c333 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Tue, 24 Sep 2024 20:59:20 -0400 Subject: [PATCH 03/11] Finished /invite endpoint --- api-v2/app/core/config.py | 3 ++ api-v2/app/modules/access/auth_controller.py | 36 +++++++++++++------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/api-v2/app/core/config.py b/api-v2/app/core/config.py index 38e3b937..a538898b 100644 --- a/api-v2/app/core/config.py +++ b/api-v2/app/core/config.py @@ -12,7 +12,10 @@ class Settings(BaseSettings): COGNITO_USER_POOL_ID: str COGNITO_ACCESS_ID: str COGNITO_ACCESS_KEY: str + SECRET_KEY: str + CONFIG_PROFILE: str ROOT_URL: str + ENV: str DATABASE_URL: str diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index 9c66a5f2..9c3ddc8a 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -11,7 +11,8 @@ from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, - ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse) + ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum) +from app.modules.access.models import ( UnmatchedGuestCase ) from app.modules.access.crud import create_user, delete_user, get_user from app.modules.deps import (SettingsDep, DbSessionDep, CognitoIdpDep, @@ -313,13 +314,26 @@ def invite(request: InviteRequest, settings: SettingsDep, db: DbSessionDep, cognito_client: CognitoIdpDep): - # create temporary password for user + + id_token = request.cookies.get('id_token') + refresh_token = request.cookies.get('refresh_token') + + if None in (refresh_token, id_token): + raise HTTPException(status_code=401, + detail="Missing refresh token or id token") + + decoded_id_token = jwt.decode(id_token, + algorithms=["RS256"], + options={"verify_signature": False}) + + coordinator_email = decoded_id_token['email'] + numbers = '0123456789' lowercase_chars = 'abcdefghijklmnopqrstuvwxyz' uppercase_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' symbols = '.-_~' temporary_password = ''.join(random.choices(numbers, k=3)) + ''.join(random.choices(lowercase_chars, k=3)) + ''.join(random.choices(symbols, k=1)) + ''.join(random.choices(uppercase_chars, k=3)) - # create the new user in cognito + try: cognito_client.admin_create_user( UserPoolId=settings.COGNITO_USER_POOL_ID, @@ -330,33 +344,29 @@ def invite(request: InviteRequest, }, DesiredDeliveryMediums=["EMAIL"] ) - # handle errors + except ClientError as error: if error.response['Error']['Code'] == 'UserNotFoundException': raise HTTPException(status_code=400, detail="User not found. Confirmation not sent.") else: raise HTTPException(status_code=500, detail=error.response['Error']['Message']) - # if there are no errors create the user in the database + try: - # get the cooridinator email from somewhere - coordinator_email = request.id_token - - # create the user in the database + user = create_user(db, UserCreate( email=request.email, - role=UserRole.GUEST, + role=UserRoleEnum.GUEST, firstName=request.firstName, middleName=request.middleName, lastName=request.lastName )) - # get the guest id, cooridinator id from database guest_id = user.id coordinator = get_user(db, coordinator_email) if not coordinator: raise HTTPException(status_code=400, detail="Coordinator not found") coordinator_id = coordinator.id - # Assuming you have a create_unmatched_case function in your crud module - create_unmatched_case(db, guest_id=guest_id, coordinator_id=coordinator_id) + + UnmatchedGuestCase(db, guest_id=guest_id, coordinator_id=coordinator_id) except Exception as error: raise HTTPException(status_code=400, detail=str(error)) From 43a4aba7868951c7f1a5dfa0504302a539ad406e Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Wed, 25 Sep 2024 18:00:54 -0400 Subject: [PATCH 04/11] Saving changes in invite --- api-v2/app/modules/access/auth_controller.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index 9c3ddc8a..31007cc1 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -310,7 +310,8 @@ def confirm_forgot_password(body: ConfirmForgotPasswordRequest, @router.post("/invite", description="Invites a new user to application after creating account with email and temporary password in AWS Cognito", response_model=InviteResponse) -def invite(request: InviteRequest, +def invite(body: InviteRequest, + request: Request, settings: SettingsDep, db: DbSessionDep, cognito_client: CognitoIdpDep): From 3912d3e0045f319835ba4f3de722c1a133af6407 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Mon, 30 Sep 2024 16:05:47 -0400 Subject: [PATCH 05/11] Updated /confirm-invite --- api-v2/app/modules/access/auth_controller.py | 66 +++++++++++++++----- api-v2/app/modules/access/schemas.py | 11 ++++ 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index 31007cc1..f5b88e05 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -4,14 +4,14 @@ import boto3 -from fastapi import Depends, APIRouter, HTTPException, Response, Request +from fastapi import Depends, APIRouter, HTTPException, Response, Request, Cookie from fastapi.security import HTTPBearer from fastapi.responses import RedirectResponse, JSONResponse -from botocore.exceptions import ClientError +from botocore.exceptions import ClientError, ParamValidationError from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, - ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum) + ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum, ConfirmInviteRequest) from app.modules.access.models import ( UnmatchedGuestCase ) from app.modules.access.crud import create_user, delete_user, get_user @@ -308,7 +308,7 @@ def confirm_forgot_password(body: ConfirmForgotPasswordRequest, @router.post("/invite", - description="Invites a new user to application after creating account with email and temporary password in AWS Cognito", + description="Invites a new user to application after creating a new account with user email and a temporary password in AWS Cognito.", response_model=InviteResponse) def invite(body: InviteRequest, request: Request, @@ -327,7 +327,10 @@ def invite(body: InviteRequest, algorithms=["RS256"], options={"verify_signature": False}) - coordinator_email = decoded_id_token['email'] + coordinator_email = decoded_id_token.get('email') + if not coordinator_email: + raise HTTPException(status_code=401, + detail="Missing 'email' field in the decoded ID token.") numbers = '0123456789' lowercase_chars = 'abcdefghijklmnopqrstuvwxyz' @@ -355,11 +358,11 @@ def invite(body: InviteRequest, try: user = create_user(db, UserCreate( - email=request.email, role=UserRoleEnum.GUEST, - firstName=request.firstName, - middleName=request.middleName, - lastName=request.lastName + email=body.email, + firstName=body.firstName, + middleName=body.middleName, + lastName=body.lastName )) guest_id = user.id coordinator = get_user(db, coordinator_email) @@ -376,14 +379,45 @@ def invite(body: InviteRequest, +@router.post("/confirmInvite", description="Confirms user invite by signing them in using the link sent to their email") +def confirm_invite( + body: ConfirmInviteRequest, + settings: SettingsDep, + cognito_client: CognitoIdpDep, + calc_secret_hash: SecretHashFuncDep +): + secret_hash = calc_secret_hash(body.email) + + try: + auth_response = cognito_client.initiate_auth( + ClientId=settings.COGNITO_CLIENT_ID, + AuthFlow='USER_PASSWORD_AUTH', + AuthParameters={ + 'USERNAME': body.email, + 'PASSWORD': body.password, + 'SECRET_HASH': secret_hash + } + ) + + if auth_response.get('ChallengeName') == 'NEW_PASSWORD_REQUIRED': + userId = auth_response['ChallengeParameters']['USER_ID_FOR_SRP'] + sessionId = auth_response['Session'] + return RedirectResponse(f"{settings.ROOT_URL}/create-password?userId={userId}&sessionId={sessionId}") + else: + return RedirectResponse(f"{settings.ROOT_URL}/create-password?error=There was an unexpected error. Please try again.") -@router.post("/confirmInvite", - description="", - response_model=None) - -def confirm_invite(): - pass - + except ClientError as e: + error_code = e.response['Error']['Code'] + error_messages = { + 'NotAuthorizedException': "Incorrect username or password. Your invitation link may be invalid.", + 'UserNotFoundException': "User not found. Confirmation not sent.", + 'TooManyRequestsException': "Too many attempts to use invite in a short amount of time." + } + msg = error_messages.get(error_code, e.response['Error']['Message']) + raise HTTPException(status_code=400, detail={"code": error_code, "message": msg}) + except ParamValidationError as e: + msg = f"The parameters you provided are incorrect: {e}" + raise HTTPException(status_code=400, detail={"code": "ParamValidationError", "message": msg}) diff --git a/api-v2/app/modules/access/schemas.py b/api-v2/app/modules/access/schemas.py index 81383fbb..ad60eac1 100644 --- a/api-v2/app/modules/access/schemas.py +++ b/api-v2/app/modules/access/schemas.py @@ -67,6 +67,17 @@ class InviteResponse(BaseModel): class InviteRequest(BaseModel): email: EmailStr + firstName: str + middleName: str + lastName: str + +class Cookies(BaseModel): + refresh_token: str + id_token: str + +class ConfirmInviteRequest(BaseModel): + email: str + password: str # class SmartNested(Nested): From 99d265ab22e05daf3a090880623176bb7fb06219 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Mon, 30 Sep 2024 16:14:47 -0400 Subject: [PATCH 06/11] Created new_password endpoint --- api-v2/app/modules/access/auth_controller.py | 58 ++++++++++++++++++-- api-v2/app/modules/access/schemas.py | 5 ++ 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/api-v2/app/modules/access/auth_controller.py b/api-v2/app/modules/access/auth_controller.py index f5b88e05..20671e5f 100644 --- a/api-v2/app/modules/access/auth_controller.py +++ b/api-v2/app/modules/access/auth_controller.py @@ -11,7 +11,7 @@ from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, - ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum, ConfirmInviteRequest) + ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum, ConfirmInviteRequest, NewPasswordRequest) from app.modules.access.models import ( UnmatchedGuestCase ) from app.modules.access.crud import create_user, delete_user, get_user @@ -422,10 +422,58 @@ def confirm_invite( @router.post("/new_password", - description="", - response_model=None) -def new_password(): - pass + description="Removes auto generated password and replaces with user assigned password. Used for account setup.", + response_model=UserSignInResponse) +def new_password( + body: NewPasswordRequest, + response: Response, + settings: SettingsDep, + db: DbSessionDep, + cognito_client: CognitoIdpDep, + calc_secret_hash: SecretHashFuncDep +): + + secret_hash = calc_secret_hash(body.userId) + + try: + auth_response = cognito_client.respond_to_auth_challenge( + ClientId=settings.COGNITO_CLIENT_ID, + ChallengeName='NEW_PASSWORD_REQUIRED', + Session=body.sessionId, + ChallengeResponses={ + 'NEW_PASSWORD': body.password, + 'USERNAME': body.userId, + 'SECRET_HASH': secret_hash + }, + ) + except ClientError as e: + raise HTTPException(status_code=500, detail={ + "code": e.response['Error']['Code'], + "message": e.response['Error']['Message'] + }) + + access_token = auth_response['AuthenticationResult']['AccessToken'] + refresh_token = auth_response['AuthenticationResult']['RefreshToken'] + id_token = auth_response['AuthenticationResult']['IdToken'] + + decoded_id_token = jwt.decode(id_token, + algorithms=["RS256"], + options={"verify_signature": False}) + + try: + user = get_user(db, decoded_id_token['email']) + if user is None: + raise HTTPException(status_code=404, detail="User not found") + except Exception as e: + raise HTTPException(status_code=500, detail=f"Database error: {str(e)}") + + response.set_cookie("refresh_token", refresh_token, httponly=True) + response.set_cookie("id_token", id_token, httponly=True) + + return { + "user": user, + "token": access_token + } diff --git a/api-v2/app/modules/access/schemas.py b/api-v2/app/modules/access/schemas.py index ad60eac1..779ebf5f 100644 --- a/api-v2/app/modules/access/schemas.py +++ b/api-v2/app/modules/access/schemas.py @@ -79,6 +79,11 @@ class ConfirmInviteRequest(BaseModel): email: str password: str +class NewPasswordRequest(BaseModel): + userId: str + password: str + sessionId: str + # class SmartNested(Nested): # ''' From d78d1109899bfeca3d2c600db67d838913061480 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Mon, 30 Sep 2024 17:11:55 -0400 Subject: [PATCH 07/11] Updated import from /workflow --- api-v2/.coverage | Bin 0 -> 53248 bytes api-v2/app/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 148 bytes api-v2/app/__pycache__/main.cpython-312.pyc | Bin 0 -> 950 bytes api-v2/app/__pycache__/seed.cpython-312.pyc | Bin 0 -> 873 bytes .../app/core/__pycache__/config.cpython-312.pyc | Bin 0 -> 1088 bytes api-v2/app/core/__pycache__/db.cpython-312.pyc | Bin 0 -> 1294 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 156 bytes .../modules/__pycache__/deps.cpython-312.pyc | Bin 0 -> 5005 bytes .../modules/__pycache__/router.cpython-312.pyc | Bin 0 -> 981 bytes .../access/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 163 bytes .../__pycache__/auth_controller.cpython-312.pyc | Bin 0 -> 17667 bytes .../access/__pycache__/crud.cpython-312.pyc | Bin 0 -> 2888 bytes .../access/__pycache__/models.cpython-312.pyc | Bin 0 -> 2993 bytes .../access/__pycache__/schemas.cpython-312.pyc | Bin 0 -> 3561 bytes .../__pycache__/user_repo.cpython-312.pyc | Bin 0 -> 6275 bytes .../__pycache__/user_roles.cpython-312.pyc | Bin 0 -> 704 bytes .../users_controller.cpython-312.pyc | Bin 0 -> 2954 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes .../__pycache__/controller.cpython-312.pyc | Bin 0 -> 331 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../__pycache__/controller.cpython-312.pyc | Bin 0 -> 5154 bytes .../__pycache__/crud.cpython-312.pyc | Bin 0 -> 3171 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 1964 bytes .../__pycache__/schemas.cpython-312.pyc | Bin 0 -> 648 bytes api-v2/homeuniteus.db | Bin 0 -> 61440 bytes .../tests/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 150 bytes .../__pycache__/cognito_setup.cpython-312.pyc | Bin 0 -> 3415 bytes .../conftest.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 4151 bytes ...embic_migration.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 3213 bytes ..._authentication.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 38902 bytes .../test_forms.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 6601 bytes ...st_forms_schema.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 25140 bytes ...host_controller.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 13242 bytes ...orgs_controller.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 33189 bytes .../test_user_repo.cpython-312-pytest-8.3.3.pyc | Bin 0 -> 9685 bytes backend/app/modules/access/auth_controller.py | 2 +- backend/app/modules/access/models.py | 2 +- 37 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 api-v2/.coverage create mode 100644 api-v2/app/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/app/__pycache__/main.cpython-312.pyc create mode 100644 api-v2/app/__pycache__/seed.cpython-312.pyc create mode 100644 api-v2/app/core/__pycache__/config.cpython-312.pyc create mode 100644 api-v2/app/core/__pycache__/db.cpython-312.pyc create mode 100644 api-v2/app/modules/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/app/modules/__pycache__/deps.cpython-312.pyc create mode 100644 api-v2/app/modules/__pycache__/router.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/auth_controller.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/models.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/schemas.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/user_roles.cpython-312.pyc create mode 100644 api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc create mode 100644 api-v2/app/modules/intake_profile/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc create mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/controller.cpython-312.pyc create mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc create mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc create mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc create mode 100644 api-v2/homeuniteus.db create mode 100644 api-v2/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc create mode 100644 api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_authentication.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc create mode 100644 api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc diff --git a/api-v2/.coverage b/api-v2/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..f6c9494c005a8192fb8cfefaa6d4a8a017bdfee9 GIT binary patch literal 53248 zcmeI5Ym6J!701V(@r=jz_3Q}oN)s}v!3P=T{wyHo-38 zn_X&qEdl8n#pjO4bN_Sh@1A?_Tzlu{@S%O#lCDk}W?n0)8@U7*2yoj~mE$-WUJAUt zO@bZ4djn~}x4+n~%x(DOX@wo*V&c6V`-F0Ujm92ShN92K^73b*4@sJwfe&aS0z`la z5P|=10`{SplG!o9a|Hr>oh*WHzIfvW022G^2ZGmo0q~2Rb+gLmi&D!O4$%>FgxrD(TZ8Q8cr8 z&74zD>2vFy6Wptn^s}YP0T9u%(*-<3z0%D-qMG`YZt8`MZdJUvGCMgE8M*6RL`rsb z1up1LnKUy4|DtuJfdjRo?3n_gjA2fq_Y0dR42IFk^t9XG@jRnnpfVGSpnQ z;1si9WlLG3pz3G!Ou3{_E?B_z2+i97p1(Apbpi`?qLS0SmXA&?^8z{D)7{Kd;9SA* zu+}o-r6IH9bD^A{0OTjj`65;hDW}O`ZnaW55Y7HJ zlk#9_CN?zHa8CqJ-_vMAXTb+`B4V1^g zHLGlT9m%_Ol3tElFX^=r_Y)}2s3azL^ezjAmgkWDTnmhLO{?LS<}#9D6LdX4X<2A1)o0uB~ZUbEq*r zJM8%64KCQtAAv^awJ+Go=e5G5J6_>1Tv3I-9~&oLr_zZ)Ms*k(r3FoNo~9@2eu_Po zr@x^HOi(qiO;(yaR*FyY%#41CTxB%6UMuOPY+hIK6vr7Su+C_fnlW|w5XRDxVgB91 z0Bb8fh8AbZVZ4>I2Ln=a-MWBXb{k`*pGjLVsOL4$ZTD@kE=cBmSc{hf(BZ<}jz3P2 zoeu}Tty}>+w@M98R4907x%WDe5uD%$*gG8jqm2j<0U|&IhyW2F0z`la5CI}U1c(3; zxcmt4fnY$w`G1hT$gzKdp^XR-0U|&IhyW2F0z`la5CI}U1c(3;_+S!<1^EHy{fWob zEWr0C-9G}@ykXOZu?UnZ$X?~xtL)7WW&z1-B0vO)01+SpM1Tko0U|&IhyW2F0z|+g z5aR~|-nRh32;VQeUjpFo|3kumIQA>{MRu6=#D5*XBfeRAO?g6@Rkp@1#=aFx$CT*z zqFOW&c`}lX49b6yAC`~FvG6a#p9-g>7o^Wi+r>A;N5vCjDD+t97>LnE1c(3;c;6E^ zHY9NNSn8++PnxAp8Z(76rZKIjb{l#9XaSznJ!+-2Vs>=)8c2$%yfInM=~l|rbMSCE zJUcp*EvDglHh6M0uNO+G$}?9MJcV{-E$EK6OBb%I=Ro!N8c^NXF4c583q?$)LHOgV zL3ne!gz@oB)5zs?6QuX70_kM4(nevz(40r$eNcC;1gWkiNO>G@R6(e32|_+}`vyU4 zUEXLcR9%QFHz2` zhh6<3)^vr!Iz^coSRBC@8RN@9h&Ag~Rmk&acOS^~v@GL`iW{#0rKTgS>QG%wT$ALv zQ;j+WkGW4mt?%k>g{+o=wJWR?tdn7;F^E8DcTX!w>V)8tV(b!c?gpiiM#}+J;&ino zy`U9J=^3MJL6xTsbK3IN`=Kt-9BzlE69VYwfliQI-44l&S;ne3+5v*8wg~$B)x!yp zUDpm-U)UaGAiC7U0&uA{}W`J(J20?(amR>p)S8k}36 zYkBa3Z#KK{^4A2L=<)MfwgA<-DZq19qu2CZ3xEF~5-xJ=X@ygM!0u;9;?Ks zdjz|ubs1k&^tBXWRfpG|Su-uz$L%Fi|IUj6((wvE57;jCUfyYv6(b%HH7o!Kph8(5J| z{ON`zYV&`2T(Fgf^Lc)|m##LGa7#U|t5WN@rItn~SLV|Bzqm`VJ6bK9FUmq6<?*d3F~-H;i2p7A5}ZsM5g-CYfCvx) zB0vO)01+SpM1Tkof%lj|qE`sWt9l=aZ9jkT&Ot7)r&H>IBZ;2Zw@BT%)BSQV(gi!c zU2ot2h?Z2k^)Wx^r61-a>J@d-zTOP2!^WDvxMR;EnA9~;hLFDdmz*g4Q zOK}|d$8j(4XjX9NuLW=6lzPUgrc-~2ZK>@x1aDM;i5(~Oa z2Z;a?AOb{y2oM1xKm>>Y5g-CYfCvzQ%Y*>_{!jD&%cL@?7({>w5CI}U1c(3;AOb{y z2oM1xKm-;cfY1LAv7Pw$|NmmIvA@F_058ER0ME1Ev1i%S?C0!9>W$xh;i{bF|e5osZc zpq}i>7EfNK?alwfOG_(-v893vdW-g=Jvp-9yefDKjcw>~0( zZ+wvrDFtWm7}x|0EaZTT41_oq9KjV0F~*`Jxj7>jW66BJ`s56n^%NFM>btk_qBpiaSq-($ULPu1YF~ey3 z(E|oY&9Lh=o4yy})yOqHvyBO(H8Zg5#9xXqnWv%|1kE&De4WUw$Zn1ceh7#a9S!z7 zX~_6wYO?g#QIyO0j+~*3c@1S{tqT^iz>(JBl1JQvi_;vf37H3%a94VZHks^Q*cDfh zF3c02j4o4|RoJrIbf}G^dWfUQ_Szv8tOm_njXL()wuh<8>a2zsTU4<N3O6d^6U%mF!K}s_TYPI?5H%kUz$89-RR987fWvzUoURmJSbl8&3utYk0tr# z+_Sk?%ZJj{6Dj{M=3#=#S*hHbCuELk{xJs;qV z?E@KM=3Kp(M7mF|u_b>o;bUg{B0}f{CQjhi5719xd=JJ?p|S^+z6`=xU&tYCOZfwA mIukSE_XsG%8>@$Mr6+y`@d(QMP~N!vzO@JC&oD*!FYzCngx+QV literal 0 HcmV?d00001 diff --git a/api-v2/app/__pycache__/seed.cpython-312.pyc b/api-v2/app/__pycache__/seed.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0fb9f185b34586c492ff64b9ece4cd704f4389a6 GIT binary patch literal 873 zcmYjO&ubGw6rRb>rrS*-ZLJ4ekwpZF*aSUzvK6I*fl{Hi3V}9kcVCl9_eY$Wwx(35 zAXq{0*op_QO8*ou@lY%Sf*>Be1$z*B@@;F?a zewaOSvW;Y)_{66H32B+qgr|a3Xp{})hR--fG&`8?;1H)(R%X8Sij>V10b0-YZO?Wv z>gUc>pZUXJ9vWRmNz=|}ekUSNwF#RLDI{zm4nQ;2Y=AahKje`%s~aGdX0;eGov}4WMA#4#r}QOD6G-a~qS#S2SM~i8yZOAKbEWyxV(H#oW#Q4>gU5OZo`bicK&QJu=b26` zS5!f1`^;UZ*0(ehc$t#nFp1Y`vABfYWU(ICqAd|uq4+QkVF{;!C0TSEd}{L+ZjGV@ z@C%Km9^r#YE1e0%dGyNRlGhM+$zPj{UfyHJ*4Q^|;;S`raQox*`{@sNKg}LlH`@j# ze=z$5ONq|9YYIfg6W}VC&s*A-&jL5_Y7jO>@-X@$wl0LRzkz2ixSj`6CK3WEk`YAm zx}5{)bik#8NDo)K$Es956EU8o#}H1fJ6)F3?>x6>q@-Fw<% z7mm%$V1LqLGb>u DKXTmH literal 0 HcmV?d00001 diff --git a/api-v2/app/core/__pycache__/config.cpython-312.pyc b/api-v2/app/core/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42fc7e1cb65c4c216ed8289f96ea7f0acbb47ca2 GIT binary patch literal 1088 zcmZ9L%Wl&^6ozMP=h`&Aq!(ytD^+3Dm*MnWLLhFwv*V#Q4CxGG+p`OX>7|Ic`iKTl650e$joqt zfS)XxJdprKdlb%q4s>XO4pbmy%$Zz=SNM*g2oP|f40Qe!=mO@?d4HV}!BCH!g7ZK| ziT0zp*l(8QAW4``4{54)h;tlC?W!)WW6v|JwoB$GRJ5&@(JmR9rv)10AOffsU3_ENg~v-^`6N%h0u$hYWgz{Yb27Q zlh{Ps_)ZD$dJdUENVP26Q$54BT!cP?5xcm*TluDo9XJ2nKD1ssb{psS?GA2QhKHMO zUhNw9j~>vWo7Zdy)4;l9v)gxKbn!SaL-z>{Z@|~g-490>nXTi>kL8tturkc94TQDf z!ty{^9JSoXEi|>A91~!$j(2e>lH*AuKv~CLT9hlKwh?wdH7u zhBM#=4G6;KuhX8d=AggDEYlbZtx_VXHujJkbicDsOH9ROKjty`HI;ey@JnFKK6s+l zvoz1PP1j+LWUkxSRm(H9YYBnY#~)xZ`l7|p}1MAg6vs;F@fQiD;58V!nQqHqv;>18tA9q8izz?lV8;{g*A z{SUZuC3^5r@b0A^jCF(Ypcik%_TX=ckuyTneY?@Q7Er5=A@o*TX;rk(&I8o)(P6^m#W}|O(An_N&NKFOgL|DXd!&VteovLkN=Q{&3v0nM8Lo=bgU}b{z>P#%mH4`Q zX>$s;^^zS*QF5x2>vfp{$3!953TfRYO~aI!QgUzivV;p_z(U$u^PqM}1iB+@TF>h5 zYrP`%ugD81&0FnF_cbMTV(E*^h_~tnPMouA!hW*iN)=gp^848IMZ~cL@Ug=+_q;tC zr#qA@Os^;hLB|;vpfaZ_N8vOCOO1irBKwBt_GH5PTdg#d&#q~RaI?sMr|y$6jSB4>$M#$r62U}Fl48Px!aGY<`vx5FS1 zcEq?`RZ#96A_k3-QDlvX~@Fy@3d zj+A=paSsaP*E?(v^)Dtv>334WwvgCLvWO}f8Ei3$TuV$s4xmbA20QV$d9yRAx8!*^ zVv8!I@j$1Pej#VRl5^k4%t4wAjcnzb$4@rMa63(D_Vw*Hf$f(`>5X4zik@g4P1Ert F?jLcuBnbcj literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2f54607c902d36fb78208bc7174f7914124afad GIT binary patch literal 156 zcmX@j%ge<81RNY6(m?cM5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!vepkRPAw|d&&top zD=*4VPu2Ix&rJ=@%PdI^E!Iyg$kZ(}0#XI~x%nxjIjP0^@$s2J$@qA^g34bUHV{#} WB37VTj6hrrVtiy~WMnL22C@KJKP7Jf literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/__pycache__/deps.cpython-312.pyc b/api-v2/app/modules/__pycache__/deps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2a35ac97eaf1737d18675515d3f3d153df63718 GIT binary patch literal 5005 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 literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/__pycache__/router.cpython-312.pyc b/api-v2/app/modules/__pycache__/router.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17a355d550df9ec543a497fd6de5373ba30500c6 GIT binary patch literal 981 zcma)4zl#$=6n?Wi*(4j2$erXaIYh7!QX~t?ot(;{hv{ra$UA@9Z#`rC2XahjQte%(+DIW=rm4KSBcu)nkAoG zB6qjvXyzH%NVL&cWpz|S$&)>=YESe%7~>O zJb&`S4Ff{U63gph&}lSXC!nrn5y~!yKB4|Xge%nfc`u;}1;b+Jdc~upWxi!N(A$1b z(WYvan3`T*Go3(xMJgV3Tc$-=F2ao%_p(~Y4SmyTS6tfm*=9f--3c0Tupxra%2}3d z>3*PlCKW%yHgwOc+O82=#INejCh>iW`2iKv!b*#$%jKvdSQ){(w#Zshm1P$0z*Jtl zL8nh9T4-9KL1tKq;$Ps5=Y{iqttQ@2>$)B14RzZ@J9KSQbIgF$e2wR+yuQher^O9u zk-X|1pQr9cu>&fGkq5kh0Q`U~!l;o%q_{ZSyd_2K1vb)o>ujG#D#;t#wz z!lfZDo!su<=x|G2-uhO;rk#UU;ZuHPEmJsRA3x`vh? Y;ldCXKEE669SwFP)<02@7Wke21Aa;OlK=n! literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..824a68a77802754744796628f050d2b2ee80d1d2 GIT binary patch literal 163 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 F{|C>xy=?#h literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c87c0330f8173620dd320d5a16211c45caec0a98 GIT binary patch literal 2888 zcmds3O-vg{6rR~#?-~XSfg~hRi4bXv9i;1U_{5NvErW|tr$ zM=}vo-~>pOoSw>|haw`SM{??=w_dPZ32T(9hgPb3vqaQGPJM6I2HQn#)Kl9h`OUmH z@6FDJi->NZHr(~1YgKUA!l-bod>92P{j{Bu*<6N2J$N66g&z3GVuFJz8iio@M8%@ry|66(_qcl(11_3jLkx~{ z9ax4GSmQ?Ddf(>*+3;34&pHlRSB`Z(GoP~^b`b2#1^f1He>?JGBo`dWv%v#)C&%vO z+4#OOehB_V`gk%DOPrj>Z@}Q+k;bZ&F+6xR9j8oSY(l2MY7lk6q=Ata=pzt6alV!dUfY|@1^e^t)&U#NvEe)m?;Bxp3OBWI!@Dv2 ze;j3T8ZN4WEVYlTkxeJLnT6q>nvp7@h~ni`gBBNgJ!9hejvWv*h0h4;fwxtWj~wQlx5HNLF-qAt%m zGq(#C%cNfh&ON=D4+Qu9!CwNWH|Eyo3W1i5_<9%ii3&SvYkj+rHIa zXlmV9T3>p_%qBB4SZpRf>&d{%z}nT-@q%GK8D1G)4dY~FWn^vX2cxaPS~6p*cB`ru z&#bEUcbNRQ02um)#7}rr(^^#(BG%SWMHOlj#Dj7FF^nGrjH&~LFw%qvnZqmG344Wf zuLclq1QvpWAw15!XX<4h{s54-(PRwRKR_HP4lkW+c4cN+Q^rI5P_qm;_Y;vsbe1QV zyHg@5@G$Z`yzt$n7rxtj;ZekY6;??tO;7K=T^CMpaB$NIc$6o4Y~EE3C3VO39xjEc zvVIcq@Rq80RqO)qy+c&NseX9vzwUkZhWG%M5FMSzz=}Gh^heV9E4iE}mwzHx^5ja< zr1TTI*;XVtZtI6?Ecz)OEon#Tb}MQ}DcXkV<`UY5>DNjd25mEK-5e|u7`Cq-TODlE_^v^laRG+y=qnu58UFya|NglE literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/access/__pycache__/models.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac73dba9bfbfa2c097e7fcded67cbd70ffd39a81 GIT binary patch literal 2993 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 literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42df62dbf9843a67a7571b266bc5bdc786a31b4e GIT binary patch literal 6275 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 b4IQm(8g72f*9gM;iGq(m9sWWP%7cCbp%|!R literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c142772dbe497754d32a630e30b23af3380fb24 GIT binary patch literal 2954 zcmb7GO>7&-6`tAUa+h5GN|yDL%Gs#4Wy&elIC6g+!H8rlvfR`%^m8aL1jQXuOYe^| zyR7YY(!Vd@|$nxe?5tgJ&}U;1XrmFfNf z?E;+l=Dj!Xy_xym8~!04k0SUKrLp+)I6{Bsli-WAm}lR{2;DgHe*&i7q=3*gq6%CeVJ^gtaL7I zb>up%&Ri!(0wTg@D}3$W(!+h~Dbk^*N#~-XceMHLUB#Ksues@!Oo&Cs zu1?K36^~FRUnI-K)?F6AG&gs3;zp4ydxm2(d4_yYA+DFfEXpI9_@mxShB(1=Va5ief>o+SbLi&FiTt)!a#5qzu=T?!*ize zWjBlg#y0&v$-KQ!Q$ z?2=~i)gXQ-FxB-6Ud7E9;nZ1JCtkrYnKUzd=InP^>N=su;%eSCN;Vi#@*Z4Uv|yGT zfXkBQGTHILJSLA# zd6&q9X$KJ6$%ig(A~&@V_Wi(~ZI3#pNoaO?m8CeyTPNuwo1TO~(6W%b3PTMw zVkp&p=cC&nJxLC1CkO7I+ev0?m-duYUFmt6cmFch4&b#9q(vEtp zcJWI!S^L2=2#(gG!$0OpL-nm^FinAo$t?j(6q^;7FPa9_7E|0-$rVFNw_<&J@nu1&h$5;C=1P|Kx9xI+oS~Tz0LOyU?1?fv&j~zq}SJrn#DlP>vxMIedfs zqNlv0GKH7jLZNt#r3<=c*!i{xg&nytJ$YqnZaP0dJ28{LIz9b_My98L zG@C?*b3=SM4g>TdejW@Hm$z`gM`#*7!By$D5Y1}>V<dLtnPu1Ri6q3|EC3;7_ zt^Tap3ie`M_3q0JQ8*htKtfV&AR(eQB(QsN(9?2M#;vZgw3{&Mit(Z$Vo3GHK@7$E z_K^VDyy~<*Qrb-{)s>}&#Ffw8@57#N#>QlHXK*}*ej6JfLXYIgctm`ZijVb+kNV#P z{&6faJ}5r!ijNP7j|U{q4-H;Oi|ig zKNyr>3QM>jm<6-AM6A^;xlwEaq7RyMw$-Gw%_g07xlO^PysTOGe=sQ0itfJ~KGJ+} zuvEJp{KIf5@8FcTD4OJs!v3>Lsm3KIeMu7;Omsc!W8xvAgIvpT^IREirgfga3sc@Q z-Cw}~=Z*0nQS`6q{0=(*IU4*NW&VOre}Sg9(bN}cVjE5TDbn%N*J|M}vHVHj$9=ah z|DyD;ylL*7e5Zb5^!IbMz8yT%5IS&bqtrk^9*pjD@=Qd+EcO+RQ%F!g>HoO@R`ua` ye|_#ZqdTYHtq+aW`gibnL--yZ*>D>O$b*b m@tHui@$q^EmA^P_Ad2jYSb;_}0&y{j@sXL4k+Fyw$N~T{SSxt| literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc b/api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61b6a05bd05d1728cfded5c0e266426116b8e1d5 GIT binary patch literal 331 zcmXwzze)o^5XNWkzmWq$JD=bRvtTWPppbw_h`Ht(IdXG)di#gnjhfQh2goysk78}J zt%cY{(xq}wnfc@>*VOqcC1ntPF(9fhow&l V`Gny+48M1vxBI;R6sc`@_yNPESqT6D literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b7cf817afce45f0c36d3a798aa7774ce6afb40d GIT binary patch literal 176 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 G-Twef6@;+> literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cba1d3039e6f12cb7599d8420d6182b9ac59b87d GIT binary patch literal 3171 zcmaJ@O>7fK6rT02f8x!r6A~c&ELI9J6dM{6H6-FU;zw=+0<2b%khSrSgWdHy%&bWh z1u00C3MW9S6p%P@=z)qJIQH06d*~%AgEn2YYN`sU+_nlQPJJ_LJC5aKWbd2V`S!h; z@4b0%erszBBWR(JoBc9~&_8TYZGlQ>y;neJ8EI$=X@cg{g@SL&C$PS#iv?*)g1)5r zb$=l+6@Y#K`?MeqhSR zZM$FrV7VQT?Ht+B90yi9vH`6VaGl%XKvx%Fy5=LX?uD_l3e6Q}b*!AfmYPs_w}1^( zHFHHn$rg!X-onbIVu|LAnJZ*Q(Nt4a3Pla;@pp`wnBWAjV@d%I-2lZp&Y16jayAp- zKBv=`bp9Xc3PN07DG#DO_IM&-b+5} zcq1w6@CG^Ubrhs?niC+{ED>W98xjCH8|R?26&q%azdXY?G~lW-e;vHBu=5&LwGEz_ zH>c;7%M4iOO^;=F)&%-`QH%xMHKXjIm8$hky z562#ieRs$18?^ccU&PDu=!!H-+L)FQ1VGwQ3%L2de*w%gGHWrg{a&k4k!S91Xxo38 zXR*=H7KN_{5vuCE>w{Qi8*gZfzA7TmHq_8wR>qwB-A%b?n~%qWg!zuMPa@EB0@<8y zVnTY@AV@Q+t`h3VMFYc`NgE(zq8HX2;lEwNWS+8MQ541V(9UKaV&=$hfU(c$=kQoU z?*pi<`;Sn&9ol7ucCCv-TmN7E2cC|6f6$H&Sv}aaK*UqUJ8BpX0)?}n=cpNv`AHurYIK9B>UvDzL{qk_3bkF0)Kan+ zX7|9KegqFV@E$?WY9yBXPn6|hTOPIK(Xu?YB8_<`K(5OJn+^e^gcJ8Kbf9<%JOt~h zh4-v&AKEplnjDHnp;_SnxDnD#0=`P`U2#z)-JpSGx`wtWrfbey^j&9ZyrTgE!}>I? ziLg6B#-xS+QnQenO=U1O3xx(NP=78P>`e@OwULZ_K9=iVy?pTc;wWA|ebmV^f>(G8T zj9U9vq+U0OS~?%f59CM5*CA!KclUjHP40yWFLBgL8LWUUn8*JDbhbM8%_Q7!n&Ae$LrsEaC*y zX|0$^r=50sTUYhWEnJw77fFFI{+#f}OP=1G`ZcrD>xenS0(jm;X&9+e?Z(Y52O#Faqot7iX4Y2mYwLY@Nh*z5PnBz-=gTBXzyFp;|6@ff#*RN zf%xg5eKKjCOs=zm8y1C=&o86AWY7b3VLlf(4EK!Scx<1Y~*(Ogz+bHO!@eW6R!gHv9lKZj+|o_#@%p_(8o-JSRFWQ4-8ua!>-6i cCr_<2>BdDtVF(bfvi8VDYvkg4HsBlmA9fL;6951J literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f229594b0f7eee7be8d6f2552b27f91ce60d4897 GIT binary patch literal 1964 zcma)7OKjX!6n*x1Jf44kG$jpX`b%Px&XiBff|k-xN<}-s_w)R7 zHk%^wNYeAU&jdpLK&A7W=N;1F+z$qmaV97|E870FJ%F`@QXi`tEr5#BTeId1H`sjf zFWgGz{Nx48vOUeCIw->Rn(N8DpSof*TAR17(S|Qhc?>>+Rk5r&PQc5W0aB~BQ8z7E z$}nnZUd^`Lg_?sKUDRAU4Iu5XnyImdx=0(NmUtj zn5r)I@5fi{7ze?ndkjRAJnbD{z5MIM`HhM5?eUMEq}MP1QvRvDe!i{TYUgjarQ5qe zBNaK1TVe@R)laEv7zN;rs@|(>MzoSuRSzo{sw@GY`th3OIg5T?Rkd&iuzw*E2^N`% z0@LBgT#vCNsu&%EdxEe-ARZDnjCcq|wj(f&ZW+YatYwFv@O`)<~`rzr{@x2&#Y9z2uw};-^cx`+mH?d2&_{grv#qV&T zCv@`PL$m@b|96Pighx^5DBU9zk47i~!?&JgLbE`Bgj(I_P%eomLxk{z~^r-I%Y z$}}=?%-8_{eov<(I<4>by<)*RlR4Id>`cT8O1pHZ!^GJvb}8^l*ttP%2H?xE6#alI zau0h0Er(IOiK2i4i_earIErGw++(O>_c0vAU|&B5O%hfgw`9jr?3W!67MuNZ3X|JMOWRUkyZ_Xt^!DRPDE_fa zT(i=;vhwcoH7xrj?)S0xo_w-3cB6T%bzmj4(R*S`xDh%=pB1^+PpGPHSE18Iui?NA z&G6<3+S5 z{dWRhNN2-=`;e7@j5kKm{LfwvH`-`QyOW l;F)&cnGNavW_(Xfa(B4az#hT(-oXTSlWR@?P4FEY`yaFV>yH2c literal 0 HcmV?d00001 diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..feee4fab12eccdcea3d5883a7b8176aef82e3fb6 GIT binary patch literal 648 zcmYjOJ#Q2-5ViN?Zga|q!bu^AQcZ{bIsgTbQ(O}Q?zP-RnAr7D~V8R{tu zcg0*4JP#kreE8FHBFC)UNfp}@l$EBpBlx7q?-rTPnu?8W%cJEs#7Bss1cM}J45AX3 zc@!UX5n?`dwjj?sfLx0l#Jbe`=pW;zOcE?`)G@tQ1&A1#^=TuC2$_?Dn!tLVR_t+v z&BjEEilkc0;>lby6|I zR!K~e=w5zBaXlifTu;%muodsKsux)uBLOXVK0nDk3G5(6K Te?!-Pbv%6g@ZxU-t|tBgo0+fb literal 0 HcmV?d00001 diff --git a/api-v2/homeuniteus.db b/api-v2/homeuniteus.db new file mode 100644 index 0000000000000000000000000000000000000000..d91c70c00819c7f973d426e240970a1ec3347011 GIT binary patch literal 61440 zcmeI(!Ef7C9KdlqPLnum>PjfGCL}PerY6!lsi24h($o;VQLUs~)=unzqR@D)Q4?>m zBRV96+QE%~fIo#3e*y>g2Y}!-f#3ujCc%479O5>PxYqqfievjdKl^=tzvuNO-u-*q zZs1styg{!MSZ^uIimED`mZd0)F@B4W@KqGc?08*%s8j1ntA=vpvnM6vZ)GX}wPM^g zzBiUjKP`P*YAm)&#o|AU)#7*hH-(ZYPgw{cb#MRxIOHP zf0XwRoo@SJ==ecxXM(P-KAUEA7fzGr`EB_C_;G_6_3TNSrkeWsW4X04`v zRSP;FA33w?&Dys#KKE|@-EBLe^`h=}#l`K~x9yhI+}X97d)wRBt)f2aSwi8y=MB1U zzY}-^(eIhZ`#~od`bnjCTU#I0TMw-}_QSA;@{G53TK3lMrrcMF&R(@z_AR?*HyieS zYv?}eQ_LvQH2{e$-7fp;+I^!&5i zrC1EkmRgmfer8{i*!TqPey8VH59+PP`}KIhqISH&K~ftr^{9T-u*kEsQHZLHnv6kB z75P?WYD=8ETCCo@k~7~Zt9z3XBSI%iWCRz_jfhcMI0B*wpRVb7vs_lc+!$rN*e{PQ z#xzIykeIl5XbhsXNKZ zUN&zw8tUmd!;>4Fb6pFuV9lv0V>kas9XQ89@?eO??M$r3cT(Aa2-n_1&U70|;hJ-a zB2AMGayPa34MmOsAuT_$XM-~?lTnxql+V@hesc0rnEZ0Ld}m^Qqsoa;!PCdH@4WMH zw$z>*^X}T_-{}=!1pBDlMAbwd400IagfB*srAb~98+AKcjYdUB)p>A*X1qTm0G-_s*NPY^%=0R#|0009ILKmY**5V*_&uW0Mb z+FJaZfXV#-| literal 0 HcmV?d00001 diff --git a/api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc b/api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42ca75fbfb1ba89716dfc3de68a7bed750e4e026 GIT binary patch literal 3415 zcmbtWO=uiP7Ow93>ybt?vTPx1#*$m>tgUurDTz&D99xN;$g&ehHu}LZEHv$|lGO4{ z_oTW<_81v*$U%X?9=#A2_G%Q%jZU%h(s>Z|^yudjzdQ@r?+oQm;J0KLhb4U00>P`%i$)?tB)E7TQ-tCVf9ic_mH+fxmj z!aCQp>{Yc^2NajNlRZ5uw52ts)>zYSl6CpeIh+#_b9Nur+3@ z=9*!zGFSB+fdq3MfV)o=1*e-$^*VJm=^$^@NDk2z1<*e##Fah7rhd>fJp@wIuE8MB7kWckJXVtbm2R8Na zNSv8Y6|zL}SPq^*z?hEhv3s6cHEd&*@$iI>YHTDEJUjlIxv(9Y1F@=TYPQ?MZ%&XTXYmGqBbqf~i`u&k^RXiD+3%K8( zKzu@4qZ3=nZ+y9)_o!{heYE}y@^|?G{0ZynctxjQ&vx`!+mxuhD($oh;DNj;)8sIiX$s|o#BX5r z#t5B$GeOfdLlv4`m3Ml!qi7!_HvvO$$FrHFy#han5-fOj(b|^2$fC3@-OqD4ws(4( z-%RWjVmgxmziTGCdG`Nq&qKf4bKrT;2GI`B2e~DvL@d~wQ1n5HRSl~GWv$?F-l(!* z0F5?iGoHt-+jXeiKxsS3*Jv>C5pZ2R^Pad%OTp2Z>(_7G(w7%!7xbGmi;K5zEWEGJ zEH7P+Eeo?(7G@W(>Pt61oShdIxRO0F48Zn;P$G!@9J3iWJhmwAU2tgj9`d2(&D6cM zD;4Li8{}ix&@E8H9)NP87P+QpXw|Y^IAeB>JM|jkbF6_Nb=84O8Kmdxcsaq%aX7VX z!*jT+^#lnZA6r*O@@VtOt2~NyJd+%&i5v&KM#om?Gc8C5t?^7dc;tzFn1e|xuhajVc89%&9w_`?&;;YlbHRLnm58 zueM6ZANQYb^`G8LC64F!vZQoH+9#P(VXLq=KvY3xKw%TRXD<08(_i2BM?Q$y?6uw3 zXZ*3t|C;v47I13xv65>lC0{8um2qDg|LT0}+`D@TlGUCPDSKIZ(froS&Hu-HI`;li zfb%@$>^V|J0urS9Ur-(*6+r)DTW`~A#{w(6P;GZA*^!q@&_ci54)BN~@p z`dW&&6RS!zAdSSlCW{NhM`22ngs!E-+b~2~g&n*NzpDM9|HUQZHawC<{ks@bRJ)nz zg{coYkOOvwd;- zO!&&g*U9Gj>;C!cyUN73%16KTnEv{IZ-0}Vgb>949%U7V?G`_r_(Uucj?WY1Z3;Sm z7R13rXLTLEMHq)qfYGkUZrk5R&wdc%;D7D?toQT2R^jkgZy4mkqWS|to`VgvWXMel zyJzZNqsD?PY8ytS4ywlulifDVJ1%b7p&s~_fiKmUeanRAcb-2-?z7zI`OZ1!wJd%W zAr1QN8C|E2sq4HC;KI~m==@C-n5sua|R2Wr0+=fJJS18`l58?2>~J8egU0*I>Z0~ literal 0 HcmV?d00001 diff --git a/api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e92e06d6995f7c2e8976b335cd2649328d1a887b GIT binary patch literal 4151 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 KKV^V2P3C{Pb*T>k literal 0 HcmV?d00001 diff --git a/api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4704a1da5b6dee1d97fa0cc289e7d9921f0e2bf GIT binary patch literal 3213 zcmcJR&2Jk;6u@WfwY_#enuLBNZJ{fbh;C7wq)pSNC5Vbv6oh&}?ZpyWt-a%9&3-Yn zPU^6hD%3*{J@kOo3kR-M{u0Ec6`-P(q8^ZtxS&EnNImi1?5@2*5$%DF>^E=Ty!qHS zGryVd#>Q#{lBzyyn!?6FsWee#Hq~*J-TY z6pVl3I}G%3sk6WrcIfjSSY|>dLPOZzn!}8BW?BYk8@8~04=P7xWj9#kriINlS$2Jk zIfljBwr7XnC=AyOTkD2pIp8y$wlOS!(=%F7ZHth3tzL_!A;GKy|04W%e*xzelaRU#m`Pbof0YH+YrK^q)s{0hPhRUls2_wn|5JaNop)5 ztY$tPxsX{Y$+Ph`h?vRsKf2coOT*c3r{Bo)EyiD_g-2mN!>`z<4MZUA{RMu7m-H)U zepcygWeeigFIi=)5|wN!OXYAfn|W@;smwOaqjJ_$mVZet^%m_@_!r=>^ou=JuWmi6 zX^?Kfj?=<*69v{nY zbzlTbYun7RlAdJqCiJvn+K$)#FiGD%PZE|hxB=2bycTZAI+W$dP};f zeUU2Ks)pK`%mhkmTF^y3J8_0>)%vIOT3=gD{LkwmK5zx%ak6Lhbxk1=7tfnF0qrf{J!7-B$Sj-pB<_pXD!nvf7^nW3lbW&Jc z5C|9CXpo-2Kaa>0^BsTP+vNTlo4@9}>?V+l-4yd?V9#xwna3R{q%_iPWem1eJ?O

_n)Q_BDcTjl zdbwY^Pw$;ph=lvS8XmYI+yN|_-vz(u#5N_vUWLRGbkyWf#CHG)9Hd& zT!GWiVOp_*QdcVLG$E}LIUETxX3kifTT-V1qzBo9ZQ=sJ<3)7AyK1*@{j*G|- zp*V~JSBK+r@EH_GQ5*xISNU+E@Y#cF zB@;i1&dD<{=@q_D7=w$BFG4+zExrPAoBUZLlP4aXnE!ra;r545C#LVKca@)}jy;*0 zeLOY$jrIN1+jlEZRsG4U|NWrqzn94544;LG>65XV-C8n+@r;q&bM@q6!IuGNn;gI& zR|lrJlG@}7#N%cV)Q3?>*6b)6G1l_YY%`I1VDxciaN4yM?vD~&c$+H6;<+!Ob7w{^Owr`{%Mv!_ifR#Au`Zt0w6oBEHQQlfX= zqd(gIzB^BXLjbg>TJ6aY{N~Qgy?18r<9mO1{%t7a7qEG~3!_i&5`_Ok2l^J)5{qw$ zg7CV)1SY10Ga}zR#+@S$Q5cubxJ31e`;41k@tpDSz4we4dq>JQ?my$_d7P=hc<@Y+ zr=?VAyyi>|(ylXMhmi1$MfKa7`x{#FOl`tD)@7d8Q_P+4k2;v=70Jk1?-S^cbu(|m z&wPmn=Er{k|3UnR@b6~gXbr1*#dW5UU#DYx{DXDBHZGes`i_ z)XN%BM@#8>Tyfx9Bd)cwrdNbBZLAq^9cuwx&sqUDur|PUwhnM3TMrmz8vr-4cEAp{ z5wMd*0lU~Hz|E`!a0}}M>}FknTiIs77~2B)$dnk{`W`jWP)scPPbHM>;Z!n_&f=)< zTp~L>k~x=7W;4Sh`dR6;l8~o;z43`;Z+tR)zUY<{*-1G);?Nr!d#ColcpQl@iLVQ< zilZVEU-9OIF-tZ*Ic6=Zoy=sbFTgi&lh-JdICLGL zShMuO70Ntw@0nhDdZl+Pb3T1h&YVm19?y&?PU8&|rxkjoZ7=opX3+>rZ!(=toRj0( zWG2ne4AaY^VUi>KT+hVRJ@5WheEcknADnJco2O@gDl-yKDF=~IuhinUiVNU>&IsR4 zFCrntoJD7RVxri<5)+9uOQc7phBGfEWI4$aicD`Ea}?cbg)+@Ig<2>2Svi269MM4y zUD*PFnit)|#(@Q=;0k={=`TDzCw0zBo$q+t?l?u)`USTTtebgO4(SDpuEcmenJRiG z;)-%HBeSA^G$||D;dFdFQ4EYH8A~P9179kxogZ6R+INI zZ{C~p zOa0XFC0ovYLwi%%nv?pfWHWQ7Mcm(fYP-B1z19l(ym~$syyBcjPv!lV5_KhyfJ3xv z!}7C6Eg|X`R+IB5MP6GV+pOod)Z3z;GxxcGUWdN_A_&0CV%~#)ANp*i{tRpVxwXpv zjPU-f{cV4$ZU0gA=adku8!GxZ`WPbY;U$E@Q^Gw@uaZ2Mo}4I3=QBz+=9UQ;$}}2f z8cs#OifJgfOk=4i$(dB*x>%IPluY`)OPEnH@t$MTftWbGWAoODslJ%v|D2YH9*9zE zdraw3vhnPs0z$p;9HLZFYpz`cn7AaGzp&hpB3 zp$ty%dhaKAn(Mgrfdki9bL#`ftz)60G=Y~cO3xoUb-Wm`JYv!R+rc$=4?Erq3B^HKANB! zP}^um9*?7D{!Zh{xuTR!yqqo89O5TH$&Si$MlROt851v0q~d8#&tgH9w3wYlq*W#~ zAvY4}04N6N>D1~Uw;uFc4|b>r>ci}`9_&^K%|VcR1eyv>Ew2XNZCd~Og|A=uUe~qO*^a(W((&07#%|C!T@sKyA!<=r95Vh4e zq8Xg}PN022eQl|1PPF5xa*j7dgSt9%PUdJuWz0!1FENQ|cg}TzurO$^^2IE1E_@ra z(tqt7bLHHis%|P{QdLVC8%ms$bjna6pG(ijJXai?3VAFgxEP{6hPKN&jS^l?zkE55 zM!&pSVt)8$sl$$r81MPU3V1y#6>=z$)rxOqLZE&mcbn0K8I1`0MeQ64lT~e@sEmz(0=@=r6%dJ5}7Y zGv+Ne#@To>4Sbgd-W?yNsWS{L+i>`~V?!rSJvV&%0(5$UPqqR3BFw>mfU)#&pOKotOvUkAMzSA zUY+kjy>>p~Pay+6r}7nm8KKa;d9HciZ1cWC{l>Za{@MEew7? z5?wn!5CHy?!2G7Z*-d>PfZ0_~&d2($xAMa~{IYTQS9ZC1J@Xs;W;a@@SfHFL%S^ON zUQd9C)QELVQ<~4jgGjtCWHla;q!pE;&AD@)8`{hfg{(1)!SRY1uiCLFKnQb8$4{as zw@pq&<7pPv8Ymi%rV|&V)J#2oKegf@SobIdktorSXmXUNRrDFn$VR!$L_(EaqN6CF z^zgDnF$c%4GPQWjt0Md%r1>x?q0i~0++#v3ks2l8R7jF z!4GwH-TQsh$m)%DjVZ%YGZFj^fr^OZ1~MQ#vvxq&&ZINoqt zF`BKsupG1f(89-BdlWA~n>}V@o;8yf3|v)FUNCY(Uhr6++D=|DacgEhX&w zyVfXC$NRfJ=hbLwFk5YZ2lYDiJ!mQQw-5gT{JYST&M{&=N;bWxS%@w|rPDC|X+Pl~ zLXgQca3bMDjwV&r6UTv1fAUn1J$B?}2}Po;End__m1O$5!-53cadVSm%a7r(=+()g z+=;_`A?=9>$0nHEO(nJh3>973%!Nc6!i)p8iqnU6Vvk3lBt#8WltDrhWgxMrr;yN2 z?SOPcvXDQ&HRjJ>m*nI04B!rS$XoPV-P@u)gEBcXl1Q)wi=Lg#M$?%ne}d?QoOua~ zC04>u>{0oNJ+Y9yjjHM)&`ZGN82adN2Z4S9HVlNk5f@Me4LVE9ouR|M1ojaiW1&^R z?Q>W9uf}HAJ^Jp}ZG}g7+;KTKZ2%%39YN$SirY_i&pvtBMucqHjy!GPGq``LrO_yG}JbCr}tw8Th zsaI`bgQr6wqlL$CP?=8|v-S>3(8izz&l<9novu>vi5uFTx!zkQOc-+&eOWo4R#ITS zicTdf7k%UL3kiO%=*BVl_hMjTGCh)=RE2s`=8PFt6;)?YEoGY+wq%kgaP_nJSGoYe ze+R-}JNVkcE1loj_RVeA9M_)uWB1(lr)IZ5b*t_0t-z6+(vdPP^9)8{<(6TbgJaMV zGYK4=%i!Qd$gMW5rc;DG_+~pvH1A|?=$oNM=CZ2`n&=;9N$%j=n2of^JdjyM=A|+w zXTW@>q&Q|HAL`G+HNs~7g#JploT&F7I6O0_4XrhEg2VGw$ZK$e74jLJAoFV+p4(D_ zlsY9_&Y?dq3vh}b%(*p+@3Clq%{Q^((;(|;V^-g5(zBCOdnxBoDLSj6(VX|PF!T*x zP2WIT{4ZLb(Z0_}iyxsfW}jKg*tM>~bymn{@KUT+(>M4nCCay$&Li3B%geXeO8Rmy z@kw0Y&@d#wh}N2}A7^R&U0{hPx%s9C3d4KB;faaP!51_8&UYn0FMkU8WX`ojDMfk) z&b7##9uw9xIh3NCK}i8CkVJaZV&iFWR708UU}iGSj=nsSm>|2CJV<4T#L7<-_!z(v zhJncc>bVA8)ku$3l+I?@RC#8B^9S+^bgz>DE9ek6aiywCPlhihv*(9Lfg6WG3}9l* zCSjG6FQPP~8h!)-L>F#c!Y&*rJi2EYyRZQDV}nY1XO7HEkIk*=@3!>Vy!6!Ehx*M* zPnAK$uiif*me5KiTiyXg>m-96N3;@5egDWJO4x~D9w1mkv?yavS|GZBUiE#N-mHk0 z2sGcu%A#bBXv^m{(4pn+?CLZSvVmw_EWm;}mxesuSyH3(%~F#cIx$R$7UUTM8gSrW z0)eZ^dqDhb1Z(t%C+CDf?9F*W_RROP>y0oBpoBtE!t4!88M}8h(E3B)Yi4iMYGlu4 zc{e+fWsDxCBJs8CIWl^B^UkSItbV%l6shY{nR5^TCl&B%(Rg$`o+5b%5}S(AIifEH z(-~NB(!>0mEMw@Hi2c2P00L`=*zeUWwPUGL=yWUU!i`>vr;^%DqH)F`!z%KpQ85J5 z$4Ug#6{JuyBS8XnatTz9(?f9yv>T}<6rl#FIJ_7 z4O?)E9lkV}?+W=$mNQbF8rH(3*K#JkZjIEi^+aRv4-*$_SXm7VHL44A#-H<7q%)0B zxQeWaN>oi}OvUTN-os|kH9rJBM+#Mc-gQa*>Mtc>sy@~-J;13=Jey67Ph=Hn0=b@r zY)cwujKb|8DkpwtG70uLI+{$Rn9?)dl1!h?yu7Dx_mgl77)hMZq+qk`$;jvK)eeG} zCV#QbpV_i&Q(R%AoG6ih0bDzr7Tq5aS^Y#a(%fo>6C|5)zYo>d!*yqRRY&67`$q7|l8BZ$27!0euA^$E)(fcS}p!v{l zx`n#O3Ju*5P}aK_yy`)rq3w=G^17k=#Kp#SmgB~)%Z?+>D2&W*!RuexT(>T8Q)+&H zs}SjY)mf--eSP28_g%?eP0nuYeRJf}zFYNsU-iy=d*{~lciY=L?;V(1)8Eg%19v=l zi{+${SYb{I|1&%atJO;B>^G4?TQWvIj;j-aNXG=CTOtCv){Kl9Ol(CmX5@qjWMz%* z$k^&dAg~nNy5wT;&|D)Ch>)8u0{OWJL|CO{)Ae#Jz%@$}#2ZNyh*B0JY$p%}xj+=6 z5>*o_Lm;x$ZP$VZBfx4josy4*A$<8X;m}{TaA;WY^w9~;8nuinVn|cISnc%TWk?@Z z60Vk)6Qkhy&qv{HJduH4vq=S_3SCK2^fZ(i)Q(Pn+w+{Es%#sxUGA+VqvKt8KGwkKPJDHgkM_jid&M z9`n)@bF2K_mYyhs5C7{b@F9s0N%0NIVDDGPi>_7TMR<+@FM3MwqW2@li&opX-K<_c zUi2Aw(a!>Fgcr$@uH(f}MZBnL+*gAaO-0dz#EZJF-N))!{Tks#Y8f3b2H`t!%!(I@ z7uM0Dj{7R3ML)4`z>QjoV(1WJK{9f3np@fKwLO)9>#ht}D=3`DE@p>08XP_kw_JDt zc+Mx{;G-4!RiFx6w$_4Cn{|w;Kb(qh6ceY)uTeF}2z;5q#|V6dz~2H;%Ahi>%2HJJ z4HWwh6@3GMGnz1?1DUuoL6MsIc;ycv07!6ii676nJ-kO(un`=iy2*y=tE zhObZt!KoUNWhf0LN;hb`m!mYpJZWc$BxhJ#lxCWNYz$jBv>S7?qFKL9NQ!AJ1gmG} zv@unhIl=0AE95m%TKPH+eF=0$I;*!7rIGtM-z;~uGt1d&yO*Oh!_`QyRS@*H(u{~p zQJVSmhKb!Q2{$lZ_iaUKW*NIyG+Dj!`Ak-CC6rce%h<7cr6}!y6{T_co^V<`9ZjZ3 zGP0Z)$wuK0#o0X00OG1_aDP4b)ZjfjDSsX9BmZpzzfYhV6cy1?6m-fZ{GJ_df*k!- zs(MwLVQyGl8K14^teNq$!+2R(`;sXhqbCzzb{+r9-vcmsvx2w&a^`05$8K(ThTMUG z$i&DH5ZQ0ml26+^C#~*xTiUDgX%e1Q-wYLQKd?DGdGzzb7)i4w8=*6uH~SWR`TxM7 zdGb5#JSpIr%p>h`@Y}y4mBiZFOd3n9-BzfB)mXc-$ZW+}J96pb+kJXg7^tJ7XN8dy zC@^5L=G!48bE2DXXP3|LC$PlYnI&uudv-=UU5;bRW9>+U<(uV+NjFxqRS|1PYPFKh zK%ZeQDF<^w&6FF;g_Ivy?r1}%(6b>Bw+NN7$jav1+qIYB18^b4Ho;@cjFAoJ zoR>uTzvses?8utU-sUyyyRbg;EB2j{6Mffg=`p)e_TXl3_@kM8s3uySDHd`$|Fud&bC(``oh}|RC4{ts)C9F8J+n2>mo0!zRHe>r6F9D5&c~gtXoi2)GPdpem?(4ym0A4^x72MnZ%p%Sr$$HX zEG1SyZ@T!r*_^A>=1qOo^QK;(FZ$j(Z}L7wX>J*M@4tape(xqU0{8r;$D}-i)}8jN z4lxw88IvrwOKz{E&QZ;fF-ko`fMP#*05lK#FwKy~&}j%!ht){T1iQXGsuLj`#YTi# zLnPxt3wqclGCNFXnv&oQIN_-7H80YAKLw!1vcr?zh(G!3bcuBA@-TtV5*Q)C2t)~R zHGCGSVkxf#W%Y?LZ9|sY00JCROg?vs6pZ zmHV*F2U7NfW9=KVv^UblF z!9z1g3*nBL;{`P={c5isk^V%Xr|*u>WyGSpc`SP5LB*mkI7HW=IDhEqj~gfmc2J}U zSDffSI@^DA$(j8}e{e!QaaYaq#L*wTwB*FLqqEzzGFle1j9M*4%IcLb@Y~_ef41b# z6n2X&eMe{ew7Mv4cTj{Ox_QI02!7b8jh2$ArS1j=?}mBrvAGBEoA(aRJ;>kByo0}a z0FRBPKrj1Fi1SB||M&=c3`ukc;QJiT?>aua>$vs&{1eB2Fr}VAP&Ab^PoRJ31TTXw zr1X*Ff3~DrEz7|1*?}e1qW6(~xuuCT38br7>;bUGB3T^Av>1>abQb!GJcxvrVy@|L z`)O7JXL02ftscVtSKz*)BMT^=cplONAyYgXwanLOd}IWE>~MS;iKoc}@@#^1{-mwa zJTQ@<5b8tEpHKs%pUsS1z;$Gjl_*sCQLOcp!Acrf>nW9*(j%Y}OwFx&s;tAC4Pr3> zjvY8syDoB%5x&%v7Hy*{s>msQDM}fpmy${0{vYtK5aCfHl3K1vm#1c1wqD!v=9afM z-$d&FC2b4qf()!q82;gF;$pz^c!NXoKSV3ZB=}fcxRa{_ZCcn;R{lN;6{w(1 zLvMSl>Fvhb(lNE6Y0&DMVNK}6aQ+Z#I0QH4B~uR$)!VW#Ja|{qT}rkrDFFG#TwLsj z0}0f1R$hV94PQA3{ASK3{SD1MLcHN}KpR)rmCtLa_A1nAh!2Lk&Kly?qTbI6SxA2hR>K)o z1dkhv9-8xfv)t82M91zMe{${b(s;*WyO_(L>+gMn6_~BU9bjpb7VWO9{LFZZ!J4iT8K2vFuq* zw%Y!#(d*Fn5J;%MDa@S&c@KKhHAY5_l1=YvR?7uGcXpGW!CWW~fpVk_^5%jUj$nj@ zb7AGrE$?JE7Fu&*%;`2NV~z#3uIf46YN_95PG_U~Q|j+4TT9rCwB;o*$JbfzVpGO! zfeQId#ZP&hVUCUU`q*F_*jn~CpWo>3a6UK{iM3Cwb~?_V7}CTN?xZYhBL7`9v-~Xr zR|w1yc#!~!gtjs&mwGyJb-M8+XF8&q6EI%}X2}u-vYiBZmMR`0z{N-hQt)6955~ml zUWycf_m;Xy0TSjCY+LCPR%gQ^1<`~0`UXX3Dv^eG-9@!+CUAlPtVqJNHChEL5yWcc z@6okCB=89W+XxWvSdH0mC*|8sU=IOqJNzd|#Ud-ljH}||Udq0YzNiGui<@BA)movvak`iVLpWo4PvITV0pw1k!-$M?%JlGGxxR&A1#l#vEd`p zcV@)RPc3(`@eE@25jW=B*|o8$(tX%_*z7qo;>LV8o1VjruxU}9Utw$Cn_3hOkH7i$ zDMK%z(O-)Aw1nZ9>!+wrI`OE!7_*VNP?tu6Iztctq@_PK1;$dwqUgPth+mk94-9b4M$tW){+;Ax zq9~DqTqYj)y33-Dx~ZnQGiY=W9f~qs(Zt#!?MAo%XL^EO6%42|IYZZw71{V;vKV_LSNkpD4;+Z*c=WflS#2Ow-mK7n22MwKsv6Bv zi8eo`_s@f)%@y$UHjby^3Z=O%6J`FUjhw*dy==RVrP@!+h{V2fdTHCtvhe=<`xAu-TYi&bgP_ea* zoM`PGA7N|vtF6rju)<0x=jRq&YVnk1tgbx1cT$M_D z*#7A+A66ACrZUP{n>U)ws_Xq)S1g0ejGweq{JTB~=hvNa)SPgh;Z8NG-U%8Uia>+P z3(h!LV}KWgmP^iLxgx|UY^#yF7oqiL`Zqn<+0{3&d(YtDp!@|8H!K%pDxY4&iIoju zXXq+14f0CA4+@!+;OUio`MGuFR{q&R@VmKEx%5ezYcKE zqeVFLD8cD4@L`Ug+EaPrjf z(4l9Ks$ZL+Np4wm^viVkF#;r%6n)Pe(sIY@Ec(AsP=@bj|luR0dh#Sek^4V_fzFwN;J`IHr2@3 zz>SP&<4SUbhdd6CrZN}hKSynD5xPa@tgKty1l?k7^UTwQNYe~H&jEX5A+o*@X)i^J`%wUar6v_e%2IEKnVZ$k(;rqd@m zgf&fPOv5lapqFye;4JA=%4D=%y8esy@h>u_F1-*{;JOVvG1azY5iVQ4TK*RpC>31D zR^*(EA$=_@&KOTOpIowb7;(FtW1T*>Y=+W+_@_{vWe4zYqs0GV2e*ccL82p_=BKuNKPG#bjELg8~ zJPgHrAvJXcA^G2<=r-c$@JaNF)?#pUrG8_jE8N?E5a)q#ZiTwGxw?+ox{jHT&9Ajf zS{b_g*^ij+>T@5iJ1aTpyGtDOe`>*TcIqAaW;HFKztlnBw`Q2xprI8pvyl^++3H4r zKbYC1w)&S!tTo%vD70%ErbWr7x4ZH664Pm);tKg@X=fYPdt0Y{G9c7)zY1Xk2qncAo8R{!ZF75XZH9s<1twi9@qKp%k}1o{aK5ZFmz7lGXb_7EVQNG$we zDWHx2v_c-FOUa-XBd2;y>x55lFL@UEpCsDn{feBn66?IwKldPiKa={)5WVyRB6=WVmHeZ4d>Z*A=Ukc{)@#^d z@d;^LA1M#>EnB+6v=7;#Nqq7XBoH4R1u1mgz}wQsf@?+s4biY72{dwo1X?{??9f`Z z=+6*NSV*(ORziR7vLsNCTQfgLRW156L@x{aBN2v{(?p*^sDyvGt-!f-QJN4Ipa{Wl zswP*1MQO_SZ5{ljL@fS^5@z38%GkB6NiZJvF<|sLK*KwzWDL-vG&T75=0gx=o2wv!x}>V3bbAtb2~$~JhVWle>h}r62$=4~ zrbt>XMU-!%hUM`;KcsrO1jiNe<;6HVA{IdfB}8lq71LgMSbt^t779E^RBS_4RLmc} z+H`IGo1cGsval((=oABw&KxeKV-=LWJ8cQneV+WkM&C5tj#jfo*1W{&8^bqBK#$Ol zrJH3@0mn2h!dn-LROTYOgg6VG+IcfNnY-UbQk;>;as8@xB>kZ0fP$VC#q0eY*R{#53xZYHXSw1ak z_u+3Wif1G0m5b{b5a848u=Di9#~h+1O^3sr^hT}DuZRMR(4Tn>Utp)+X9N6$<92>% z*)F|a9b=Al>u1b8?qn!e#|XcbZ2EojK^B2`GN|FCkOv0^?Rg6S~)`B-OpTuq?8aXi%E9Eum9hNiXAC0JC&8)>(RMA)Urx6S6&Bo2+R`jpw z=utVEiuPz)nZyDjBm<^0SUx0rd%$g)lu#g3;rsU*CS4>i7`>a!iOd zuFeE+NSa0W#1y@F(JjZ5AfH8lLjU}zB2S{`Vr`s_W92Kgoz#0jOXpp`GntU5WQv=l z)<|X1aA&8AF5WQ9WLK;=rK+p3Q1A$J=2OKQy?M1y?UjxCDN0ma{snHPevb5ykXl)$ zZC$Z1|d(+;TA#KqpBhKeQp>J1V$H7A1{*~fjn_%yRKut zqx-v?|9&@4_*#DB-7@!Ke?RkX`M`r4^1FTzz;jS)^SuxJ`pJ6=`IG#pq5XKL^T*=h z*5kd-pLDv8Kj!&Kuj}}3Ps}+qG!%QZ=si1$!IMlYTscx~9aaZqkNQPLd>o}mPF$3e z_~f?FIECfV)N`t8C5`(OJ=&USa*>YeMlmVl6UiPL2_vZ_;Q%LHh{Pu*dd4$sGL=wz zSYkqvi6betT2HG!Q4M#8w4&BxJKX&0^cX_Cj=;FjXRfcdjwa^aK4rg zW!XnpNyOt;jeFkx>bo73{|C+yv!?u0K&&ezit~c-itsl=zZ7bIDTMw)i2a4o`=5kI z-u2YYNQL_DOS|UkyJzdWZ`H?c3K1+0=J0;0{R{024oR%LI(ApUZqbRa5AYKU4MJyk z0l!U~?*y8~BjRQMfBYMqn{ z(mg|zs-de?5UEFc7I`Wf6uYP%?5^$LySF;|?(NP+I=Rs95w~C6yC7g!=-9mAr2XUl z>VEHmx0JWq7U|sG22ngJ-u3##!{Xf*pZFADtGM&-Zb^Jnyj$a;6AdnL-`&VM@q~DH yzgs*c-mPX3iTf2}P5+mX<@$QzOIB>T;Bn~V_Tg7hPum1-PqJBL9 literal 0 HcmV?d00001 diff --git a/api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e7c0b2e44ead105aab335df4ddffdba6f846146d GIT binary patch literal 6601 zcmd@YOKcm*b(UO;OL9p`l&Jq_E&oJYk|o)47BoRPdTf1O>~ zCc6TRzy}?CP=FROPzMlta^N0v%(16l3KUZ5fW*Rp6*N8MCdEY!_|*4yxg@O^bpoWP zjKsGyZ{C}EGxOe?_vUZGpr1gIq^%R=)aRqly%^>o)gGS@)+05;}?=~mPyBx$~4pCYEsMZzL;cjjVUaxGp^(^OI*o1G}NXUG9^nU zHIvS_UPS4jrl@H}zrmD5CY6n+bEZUjCQCE7(^0qSy%0~w7Z^8v)9e;YW?(>5nr521 zkY*hE1C(hAu4Zu@(?74WB#r5?38pu3Bcp=oSH3}&fDMp1`|Xm-88!W>_?=jir5E%Y zFoK)2dDEYTDH+#QrkR0T@uUiCgb_6}1iN+%#wpY1o3F7r*LF%=mtIO;XZ#Ed=h0O? z$v94G)>-msdHFI+WYSbQ%QH*ad}LD5?6%ddEFgC1rC-zITvuRXmiJ$-)J@UGjEoG9 zjt-6v506FNycI^br;zO>TVsIe@r1qkfg`?%a#b{Q@zOb~#scEC-O4%4yCs+-$NeGOowKLX+U%(A7jG-UaenLi4>?>%-N1tks(VoZOav#BSgQ#r4Cr zjWG=^1J4o5%c(=?;C0DQXJ#*5h+R58 zIUSpwdH)*6)tO!m?rXdar8u=+zZqO$x_yF+aAR8s81`LzB^lr z^b{il8WHr5}ekl&~aTxEF1IOdA4ty96@J%<}7=c4aYOB;7o2y0@ zUOmj$s09`D$_=&nnj46^9+&43;AUK`9Jezsfta9Tgqr!ua-~yMp&t@X{-IUj^?+{DON~f;k};*jYevC5IN) z=w8HlWk&%Tk3+NU(=mjwis7rs3pd_!!0;OZD|V0#S^JNUw}Vv{(Od2)6lfrJ2qI5S z>=4p>9l}M$sa3y@8AI&QUNb(r-yKEA3&|>ujJ%d(kJDTIewPDoa>yFKw?vWuEm3v1 zAeyP}&1)p7Qi25aZ=m%%>w5!Tz@dX|N3^1mAZ?^!BUp}2Li&DZFKR}DNN{H{Le5Ce z7h)4~M_Bg5PhJk_2OSPWf|Zn=;xt(mKKuhAzk>F1{c?j*Pn%GYmK%+RaxH8$8evO+ z{Dxmk)=2Ss{qckTG$T({e`zs9SKJ5oh#91lJA&QWxg+-5d7&oUm#d+elTkX_jc+#iyG$UP>=#M(hNd1v_#>fp zpH{-BkA$dq#!4ZqHyKNmDXUI070Z<6Q!9mz3IftqnbCA6fO3y8G6~AI4Tsms-0XT>aQs(+aHzp7!>wjXmnv*nOnX zJNBe)4C3aV!7VrG82z_Inz|q8Yg21u>-{I!yH6Fulk4)N6%BEWPIGR?KVn9rTGYSnBxFZ1#e#Phv#}Z{+EZ##k%L|k%)mwv97b^Tl>}|vPSD2r1$%BQ z-Gd37(IJ70x;X9}#|z~ZUYMC*!5$1UO%YdZy2{J8PB7ZSk7GYZtajLJMaxLYQI*ZW z)a>k~>2ouaS7tAn0X#@&>n4!p9Rw$kFpN>Q)mJ%bGhCss;P^%4IDi1JGCqJ{5Wx_F zLkNZui~um*c{Lkt<|h$>a+<#K4A~5yL?o_@zl&fB!Fd2?xbogpo%QF~QIkB5);7j! z8%Jt0$+v17$4to?*{ri4m}(h^Ya5687|f_O13>%OS!{c0dA)&f6}Ub?b_MQpFb7{> z(RX0Occ9=K*dm8KXNAwbPn-MJ-YPU7T=6|^-o19V&^)l>+msrMQpbkWvEF&`&%Z1V zPHqfN{^gw~(rhW*Sq$&r2=8C-A1{QDt$0fvyNewI8yy2r22T|_CRgf9?R~}e;f?m; z&wC5)lPjTbMUU@YVJl36&0opw4~8BcD9B@*a?5tm+v~5Q*AKj1kl)#q>j5v<;2#YX zY|L^~&%I@_&N7u*C6_uZD$XzS%tb8y(U+bpSyV=yc*?X|mv!~R# zzrwU*WD-E8MyYP=*kHuF9XQR literal 0 HcmV?d00001 diff --git a/api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..917e379541ba1c10a3e9a63cb860902191bb4041 GIT binary patch literal 25140 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 b1^xj4BmTi5hnL^~pvlD_<-ZCcWli+|_0hh8 literal 0 HcmV?d00001 diff --git a/api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46e49a40c790fb22027e7a24f3624603a3225d48 GIT binary patch literal 13242 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 U-t}K;t+?;@{te=@A~k^Ie>p8&g8%>k literal 0 HcmV?d00001 diff --git a/api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b1ec8306e24f6c6cf746bc3fa7f2496cf852910 GIT binary patch literal 33189 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 ZJvdE85xxJsnQoW1kDvOJ2Pghg{}1=DC)EG| literal 0 HcmV?d00001 diff --git a/api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc new file mode 100644 index 0000000000000000000000000000000000000000..813a43a7d4305cbda95afff3fe59b489952d7ac4 GIT binary patch literal 9685 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 I&`V(NKl_r>xc~qF literal 0 HcmV?d00001 diff --git a/backend/app/modules/access/auth_controller.py b/backend/app/modules/access/auth_controller.py index 20671e5f..3ad13af9 100644 --- a/backend/app/modules/access/auth_controller.py +++ b/backend/app/modules/access/auth_controller.py @@ -12,7 +12,7 @@ from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum, ConfirmInviteRequest, NewPasswordRequest) -from app.modules.access.models import ( UnmatchedGuestCase ) +from app.modules.workflow.models import ( UnmatchedGuestCase ) from app.modules.access.crud import create_user, delete_user, get_user from app.modules.deps import (SettingsDep, DbSessionDep, CognitoIdpDep, diff --git a/backend/app/modules/access/models.py b/backend/app/modules/access/models.py index f2b1cf31..226ed6af 100644 --- a/backend/app/modules/access/models.py +++ b/backend/app/modules/access/models.py @@ -34,4 +34,4 @@ class Role(Base): id = Column(Integer, primary_key=True, index=True) type = Column(String, nullable=False, unique=True) - users = relationship("User", back_populates="role") + users = relationship("User", back_populates="role") \ No newline at end of file From 79d93249c6ccdb0bd09d053e9bdac3231878f767 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Mon, 30 Sep 2024 20:25:47 -0400 Subject: [PATCH 08/11] Updated endpoints, removed schemas, env, config, and responses --- backend/app/core/config.py | 3 --- backend/app/modules/access/auth_controller.py | 17 ++++++++++------- backend/app/modules/access/schemas.py | 4 ---- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index a538898b..38e3b937 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -12,10 +12,7 @@ class Settings(BaseSettings): COGNITO_USER_POOL_ID: str COGNITO_ACCESS_ID: str COGNITO_ACCESS_KEY: str - SECRET_KEY: str - CONFIG_PROFILE: str ROOT_URL: str - ENV: str DATABASE_URL: str diff --git a/backend/app/modules/access/auth_controller.py b/backend/app/modules/access/auth_controller.py index 3ad13af9..d56553bc 100644 --- a/backend/app/modules/access/auth_controller.py +++ b/backend/app/modules/access/auth_controller.py @@ -11,7 +11,7 @@ from app.modules.access.schemas import ( UserCreate, UserSignInRequest, UserSignInResponse, ForgotPasswordRequest, ConfirmForgotPasswordResponse, - ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, InviteResponse, UserRoleEnum, ConfirmInviteRequest, NewPasswordRequest) + ConfirmForgotPasswordRequest, RefreshTokenResponse, InviteRequest, UserRoleEnum, ConfirmInviteRequest, NewPasswordRequest) from app.modules.workflow.models import ( UnmatchedGuestCase ) from app.modules.access.crud import create_user, delete_user, get_user @@ -309,7 +309,7 @@ def confirm_forgot_password(body: ConfirmForgotPasswordRequest, @router.post("/invite", description="Invites a new user to application after creating a new account with user email and a temporary password in AWS Cognito.", - response_model=InviteResponse) + ) def invite(body: InviteRequest, request: Request, settings: SettingsDep, @@ -341,7 +341,7 @@ def invite(body: InviteRequest, try: cognito_client.admin_create_user( UserPoolId=settings.COGNITO_USER_POOL_ID, - Username=request.email, + Username=body.email, TemporaryPassword=temporary_password, ClientMetadata={ 'url': settings.ROOT_URL @@ -370,16 +370,19 @@ def invite(body: InviteRequest, raise HTTPException(status_code=400, detail="Coordinator not found") coordinator_id = coordinator.id - UnmatchedGuestCase(db, guest_id=guest_id, coordinator_id=coordinator_id) + unmatched_case_repo = UnmatchedGuestCase(db) + unmatched_case_repo.add_case( + guest_id=guest_id, + coordinator_id=coordinator_id + ) except Exception as error: raise HTTPException(status_code=400, detail=str(error)) - return {"message": "Invitation sent successfully"} -@router.post("/confirmInvite", description="Confirms user invite by signing them in using the link sent to their email") +@router.post("/confirm-invite", description="Confirms user invite by signing them in using the link sent to their email") def confirm_invite( body: ConfirmInviteRequest, settings: SettingsDep, @@ -421,7 +424,7 @@ def confirm_invite( -@router.post("/new_password", +@router.post("/new-password", description="Removes auto generated password and replaces with user assigned password. Used for account setup.", response_model=UserSignInResponse) def new_password( diff --git a/backend/app/modules/access/schemas.py b/backend/app/modules/access/schemas.py index fc670bbb..609b1b85 100644 --- a/backend/app/modules/access/schemas.py +++ b/backend/app/modules/access/schemas.py @@ -63,10 +63,6 @@ class ConfirmForgotPasswordRequest(BaseModel): class ConfirmForgotPasswordResponse(BaseModel): message: str -class InviteResponse(BaseModel): - code: int - type: str - message: str class InviteRequest(BaseModel): email: EmailStr From b421c0662bdde1d77468309342bcf06da4c6d7e6 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Mon, 30 Sep 2024 20:30:21 -0400 Subject: [PATCH 09/11] Deleted cached files --- api-v2/.coverage | Bin 53248 -> 0 bytes api-v2/app/__pycache__/__init__.cpython-312.pyc | Bin 148 -> 0 bytes api-v2/app/__pycache__/main.cpython-312.pyc | Bin 950 -> 0 bytes api-v2/app/__pycache__/seed.cpython-312.pyc | Bin 873 -> 0 bytes .../app/core/__pycache__/config.cpython-312.pyc | Bin 1088 -> 0 bytes api-v2/app/core/__pycache__/db.cpython-312.pyc | Bin 1294 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 156 -> 0 bytes .../modules/__pycache__/deps.cpython-312.pyc | Bin 5005 -> 0 bytes .../modules/__pycache__/router.cpython-312.pyc | Bin 981 -> 0 bytes .../access/__pycache__/__init__.cpython-312.pyc | Bin 163 -> 0 bytes .../__pycache__/auth_controller.cpython-312.pyc | Bin 17667 -> 0 bytes .../access/__pycache__/crud.cpython-312.pyc | Bin 2888 -> 0 bytes .../access/__pycache__/models.cpython-312.pyc | Bin 2993 -> 0 bytes .../access/__pycache__/schemas.cpython-312.pyc | Bin 3561 -> 0 bytes .../__pycache__/user_repo.cpython-312.pyc | Bin 6275 -> 0 bytes .../__pycache__/user_roles.cpython-312.pyc | Bin 704 -> 0 bytes .../users_controller.cpython-312.pyc | Bin 2954 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 171 -> 0 bytes .../__pycache__/controller.cpython-312.pyc | Bin 331 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 176 -> 0 bytes .../__pycache__/controller.cpython-312.pyc | Bin 5154 -> 0 bytes .../__pycache__/crud.cpython-312.pyc | Bin 3171 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 1964 -> 0 bytes .../__pycache__/schemas.cpython-312.pyc | Bin 648 -> 0 bytes api-v2/homeuniteus.db | Bin 61440 -> 0 bytes .../tests/__pycache__/__init__.cpython-312.pyc | Bin 150 -> 0 bytes .../__pycache__/cognito_setup.cpython-312.pyc | Bin 3415 -> 0 bytes .../conftest.cpython-312-pytest-8.3.3.pyc | Bin 4151 -> 0 bytes ...embic_migration.cpython-312-pytest-8.3.3.pyc | Bin 3213 -> 0 bytes ..._authentication.cpython-312-pytest-8.3.3.pyc | Bin 38902 -> 0 bytes .../test_forms.cpython-312-pytest-8.3.3.pyc | Bin 6601 -> 0 bytes ...st_forms_schema.cpython-312-pytest-8.3.3.pyc | Bin 25140 -> 0 bytes ...host_controller.cpython-312-pytest-8.3.3.pyc | Bin 13242 -> 0 bytes ...orgs_controller.cpython-312-pytest-8.3.3.pyc | Bin 33189 -> 0 bytes .../test_user_repo.cpython-312-pytest-8.3.3.pyc | Bin 9685 -> 0 bytes 35 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 api-v2/.coverage delete mode 100644 api-v2/app/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/app/__pycache__/main.cpython-312.pyc delete mode 100644 api-v2/app/__pycache__/seed.cpython-312.pyc delete mode 100644 api-v2/app/core/__pycache__/config.cpython-312.pyc delete mode 100644 api-v2/app/core/__pycache__/db.cpython-312.pyc delete mode 100644 api-v2/app/modules/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/app/modules/__pycache__/deps.cpython-312.pyc delete mode 100644 api-v2/app/modules/__pycache__/router.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/auth_controller.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/models.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/schemas.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/user_roles.cpython-312.pyc delete mode 100644 api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc delete mode 100644 api-v2/app/modules/intake_profile/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc delete mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/controller.cpython-312.pyc delete mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc delete mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc delete mode 100644 api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc delete mode 100644 api-v2/homeuniteus.db delete mode 100644 api-v2/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc delete mode 100644 api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_authentication.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc delete mode 100644 api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc diff --git a/api-v2/.coverage b/api-v2/.coverage deleted file mode 100644 index f6c9494c005a8192fb8cfefaa6d4a8a017bdfee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 diff --git a/api-v2/app/__pycache__/seed.cpython-312.pyc b/api-v2/app/__pycache__/seed.cpython-312.pyc deleted file mode 100644 index 0fb9f185b34586c492ff64b9ece4cd704f4389a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmYjO&ubGw6rRb>rrS*-ZLJ4ekwpZF*aSUzvK6I*fl{Hi3V}9kcVCl9_eY$Wwx(35 zAXq{0*op_QO8*ou@lY%Sf*>Be1$z*B@@;F?a zewaOSvW;Y)_{66H32B+qgr|a3Xp{})hR--fG&`8?;1H)(R%X8Sij>V10b0-YZO?Wv z>gUc>pZUXJ9vWRmNz=|}ekUSNwF#RLDI{zm4nQ;2Y=AahKje`%s~aGdX0;eGov}4WMA#4#r}QOD6G-a~qS#S2SM~i8yZOAKbEWyxV(H#oW#Q4>gU5OZo`bicK&QJu=b26` zS5!f1`^;UZ*0(ehc$t#nFp1Y`vABfYWU(ICqAd|uq4+QkVF{;!C0TSEd}{L+ZjGV@ z@C%Km9^r#YE1e0%dGyNRlGhM+$zPj{UfyHJ*4Q^|;;S`raQox*`{@sNKg}LlH`@j# ze=z$5ONq|9YYIfg6W}VC&s*A-&jL5_Y7jO>@-X@$wl0LRzkz2ixSj`6CK3WEk`YAm zx}5{)bik#8NDo)K$Es956EU8o#}H1fJ6)F3?>x6>q@-Fw<% z7mm%$V1LqLGb>u DKXTmH diff --git a/api-v2/app/core/__pycache__/config.cpython-312.pyc b/api-v2/app/core/__pycache__/config.cpython-312.pyc deleted file mode 100644 index 42fc7e1cb65c4c216ed8289f96ea7f0acbb47ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmZ9L%Wl&^6ozMP=h`&Aq!(ytD^+3Dm*MnWLLhFwv*V#Q4CxGG+p`OX>7|Ic`iKTl650e$joqt zfS)XxJdprKdlb%q4s>XO4pbmy%$Zz=SNM*g2oP|f40Qe!=mO@?d4HV}!BCH!g7ZK| ziT0zp*l(8QAW4``4{54)h;tlC?W!)WW6v|JwoB$GRJ5&@(JmR9rv)10AOffsU3_ENg~v-^`6N%h0u$hYWgz{Yb27Q zlh{Ps_)ZD$dJdUENVP26Q$54BT!cP?5xcm*TluDo9XJ2nKD1ssb{psS?GA2QhKHMO zUhNw9j~>vWo7Zdy)4;l9v)gxKbn!SaL-z>{Z@|~g-490>nXTi>kL8tturkc94TQDf z!ty{^9JSoXEi|>A91~!$j(2e>lH*AuKv~CLT9hlKwh?wdH7u zhBM#=4G6;KuhX8d=AggDEYlbZtx_VXHujJkbicDsOH9ROKjty`HI;ey@JnFKK6s+l zvoz1PP1j+LWUkxSRm(H9YYBnY#~)xZ`l7|p}1MAg6vs;F@fQiD;58V!nQqHqv;>18tA9q8izz?lV8;{g*A z{SUZuC3^5r@b0A^jCF(Ypcik%_TX=ckuyTneY?@Q7Er5=A@o*TX;rk(&I8o)(P6^m#W}|O(An_N&NKFOgL|DXd!&VteovLkN=Q{&3v0nM8Lo=bgU}b{z>P#%mH4`Q zX>$s;^^zS*QF5x2>vfp{$3!953TfRYO~aI!QgUzivV;p_z(U$u^PqM}1iB+@TF>h5 zYrP`%ugD81&0FnF_cbMTV(E*^h_~tnPMouA!hW*iN)=gp^848IMZ~cL@Ug=+_q;tC zr#qA@Os^;hLB|;vpfaZ_N8vOCOO1irBKwBt_GH5PTdg#d&#q~RaI?sMr|y$6jSB4>$M#$r62U}Fl48Px!aGY<`vx5FS1 zcEq?`RZ#96A_k3-QDlvX~@Fy@3d zj+A=paSsaP*E?(v^)Dtv>334WwvgCLvWO}f8Ei3$TuV$s4xmbA20QV$d9yRAx8!*^ zVv8!I@j$1Pej#VRl5^k4%t4wAjcnzb$4@rMa63(D_Vw*Hf$f(`>5X4zik@g4P1Ert F?jLcuBnbcj diff --git a/api-v2/app/modules/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index c2f54607c902d36fb78208bc7174f7914124afad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmX@j%ge<81RNY6(m?cM5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!vepkRPAw|d&&top zD=*4VPu2Ix&rJ=@%PdI^E!Iyg$kZ(}0#XI~x%nxjIjP0^@$s2J$@qA^g34bUHV{#} WB37VTj6hrrVtiy~WMnL22C@KJKP7Jf diff --git a/api-v2/app/modules/__pycache__/deps.cpython-312.pyc b/api-v2/app/modules/__pycache__/deps.cpython-312.pyc deleted file mode 100644 index a2a35ac97eaf1737d18675515d3f3d153df63718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5005 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 diff --git a/api-v2/app/modules/__pycache__/router.cpython-312.pyc b/api-v2/app/modules/__pycache__/router.cpython-312.pyc deleted file mode 100644 index 17a355d550df9ec543a497fd6de5373ba30500c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcma)4zl#$=6n?Wi*(4j2$erXaIYh7!QX~t?ot(;{hv{ra$UA@9Z#`rC2XahjQte%(+DIW=rm4KSBcu)nkAoG zB6qjvXyzH%NVL&cWpz|S$&)>=YESe%7~>O zJb&`S4Ff{U63gph&}lSXC!nrn5y~!yKB4|Xge%nfc`u;}1;b+Jdc~upWxi!N(A$1b z(WYvan3`T*Go3(xMJgV3Tc$-=F2ao%_p(~Y4SmyTS6tfm*=9f--3c0Tupxra%2}3d z>3*PlCKW%yHgwOc+O82=#INejCh>iW`2iKv!b*#$%jKvdSQ){(w#Zshm1P$0z*Jtl zL8nh9T4-9KL1tKq;$Ps5=Y{iqttQ@2>$)B14RzZ@J9KSQbIgF$e2wR+yuQher^O9u zk-X|1pQr9cu>&fGkq5kh0Q`U~!l;o%q_{ZSyd_2K1vb)o>ujG#D#;t#wz z!lfZDo!su<=x|G2-uhO;rk#UU;ZuHPEmJsRA3x`vh? Y;ldCXKEE669SwFP)<02@7Wke21Aa;OlK=n! diff --git a/api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 824a68a77802754744796628f050d2b2ee80d1d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 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 F{|C>xy=?#h diff --git a/api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/crud.cpython-312.pyc deleted file mode 100644 index c87c0330f8173620dd320d5a16211c45caec0a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2888 zcmds3O-vg{6rR~#?-~XSfg~hRi4bXv9i;1U_{5NvErW|tr$ zM=}vo-~>pOoSw>|haw`SM{??=w_dPZ32T(9hgPb3vqaQGPJM6I2HQn#)Kl9h`OUmH z@6FDJi->NZHr(~1YgKUA!l-bod>92P{j{Bu*<6N2J$N66g&z3GVuFJz8iio@M8%@ry|66(_qcl(11_3jLkx~{ z9ax4GSmQ?Ddf(>*+3;34&pHlRSB`Z(GoP~^b`b2#1^f1He>?JGBo`dWv%v#)C&%vO z+4#OOehB_V`gk%DOPrj>Z@}Q+k;bZ&F+6xR9j8oSY(l2MY7lk6q=Ata=pzt6alV!dUfY|@1^e^t)&U#NvEe)m?;Bxp3OBWI!@Dv2 ze;j3T8ZN4WEVYlTkxeJLnT6q>nvp7@h~ni`gBBNgJ!9hejvWv*h0h4;fwxtWj~wQlx5HNLF-qAt%m zGq(#C%cNfh&ON=D4+Qu9!CwNWH|Eyo3W1i5_<9%ii3&SvYkj+rHIa zXlmV9T3>p_%qBB4SZpRf>&d{%z}nT-@q%GK8D1G)4dY~FWn^vX2cxaPS~6p*cB`ru z&#bEUcbNRQ02um)#7}rr(^^#(BG%SWMHOlj#Dj7FF^nGrjH&~LFw%qvnZqmG344Wf zuLclq1QvpWAw15!XX<4h{s54-(PRwRKR_HP4lkW+c4cN+Q^rI5P_qm;_Y;vsbe1QV zyHg@5@G$Z`yzt$n7rxtj;ZekY6;??tO;7K=T^CMpaB$NIc$6o4Y~EE3C3VO39xjEc zvVIcq@Rq80RqO)qy+c&NseX9vzwUkZhWG%M5FMSzz=}Gh^heV9E4iE}mwzHx^5ja< zr1TTI*;XVtZtI6?Ecz)OEon#Tb}MQ}DcXkV<`UY5>DNjd25mEK-5e|u7`Cq-TODlE_^v^laRG+y=qnu58UFya|NglE diff --git a/api-v2/app/modules/access/__pycache__/models.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/models.cpython-312.pyc deleted file mode 100644 index ac73dba9bfbfa2c097e7fcded67cbd70ffd39a81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2993 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 diff --git a/api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/user_repo.cpython-312.pyc deleted file mode 100644 index 42df62dbf9843a67a7571b266bc5bdc786a31b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6275 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 b4IQm(8g72f*9gM;iGq(m9sWWP%7cCbp%|!R diff --git a/api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc b/api-v2/app/modules/access/__pycache__/users_controller.cpython-312.pyc deleted file mode 100644 index 7c142772dbe497754d32a630e30b23af3380fb24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2954 zcmb7GO>7&-6`tAUa+h5GN|yDL%Gs#4Wy&elIC6g+!H8rlvfR`%^m8aL1jQXuOYe^| zyR7YY(!Vd@|$nxe?5tgJ&}U;1XrmFfNf z?E;+l=Dj!Xy_xym8~!04k0SUKrLp+)I6{Bsli-WAm}lR{2;DgHe*&i7q=3*gq6%CeVJ^gtaL7I zb>up%&Ri!(0wTg@D}3$W(!+h~Dbk^*N#~-XceMHLUB#Ksues@!Oo&Cs zu1?K36^~FRUnI-K)?F6AG&gs3;zp4ydxm2(d4_yYA+DFfEXpI9_@mxShB(1=Va5ief>o+SbLi&FiTt)!a#5qzu=T?!*ize zWjBlg#y0&v$-KQ!Q$ z?2=~i)gXQ-FxB-6Ud7E9;nZ1JCtkrYnKUzd=InP^>N=su;%eSCN;Vi#@*Z4Uv|yGT zfXkBQGTHILJSLA# zd6&q9X$KJ6$%ig(A~&@V_Wi(~ZI3#pNoaO?m8CeyTPNuwo1TO~(6W%b3PTMw zVkp&p=cC&nJxLC1CkO7I+ev0?m-duYUFmt6cmFch4&b#9q(vEtp zcJWI!S^L2=2#(gG!$0OpL-nm^FinAo$t?j(6q^;7FPa9_7E|0-$rVFNw_<&J@nu1&h$5;C=1P|Kx9xI+oS~Tz0LOyU?1?fv&j~zq}SJrn#DlP>vxMIedfs zqNlv0GKH7jLZNt#r3<=c*!i{xg&nytJ$YqnZaP0dJ28{LIz9b_My98L zG@C?*b3=SM4g>TdejW@Hm$z`gM`#*7!By$D5Y1}>V<dLtnPu1Ri6q3|EC3;7_ zt^Tap3ie`M_3q0JQ8*htKtfV&AR(eQB(QsN(9?2M#;vZgw3{&Mit(Z$Vo3GHK@7$E z_K^VDyy~<*Qrb-{)s>}&#Ffw8@57#N#>QlHXK*}*ej6JfLXYIgctm`ZijVb+kNV#P z{&6faJ}5r!ijNP7j|U{q4-H;Oi|ig zKNyr>3QM>jm<6-AM6A^;xlwEaq7RyMw$-Gw%_g07xlO^PysTOGe=sQ0itfJ~KGJ+} zuvEJp{KIf5@8FcTD4OJs!v3>Lsm3KIeMu7;Omsc!W8xvAgIvpT^IREirgfga3sc@Q z-Cw}~=Z*0nQS`6q{0=(*IU4*NW&VOre}Sg9(bN}cVjE5TDbn%N*J|M}vHVHj$9=ah z|DyD;ylL*7e5Zb5^!IbMz8yT%5IS&bqtrk^9*pjD@=Qd+EcO+RQ%F!g>HoO@R`ua` ye|_#ZqdTYHtq+aW`gibnL--yZ*>D>O$b*b m@tHui@$q^EmA^P_Ad2jYSb;_}0&y{j@sXL4k+Fyw$N~T{SSxt| diff --git a/api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc b/api-v2/app/modules/intake_profile/__pycache__/controller.cpython-312.pyc deleted file mode 100644 index 61b6a05bd05d1728cfded5c0e266426116b8e1d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmXwzze)o^5XNWkzmWq$JD=bRvtTWPppbw_h`Ht(IdXG)di#gnjhfQh2goysk78}J zt%cY{(xq}wnfc@>*VOqcC1ntPF(9fhow&l V`Gny+48M1vxBI;R6sc`@_yNPESqT6D diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 8b7cf817afce45f0c36d3a798aa7774ce6afb40d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 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 G-Twef6@;+> diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/crud.cpython-312.pyc deleted file mode 100644 index cba1d3039e6f12cb7599d8420d6182b9ac59b87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3171 zcmaJ@O>7fK6rT02f8x!r6A~c&ELI9J6dM{6H6-FU;zw=+0<2b%khSrSgWdHy%&bWh z1u00C3MW9S6p%P@=z)qJIQH06d*~%AgEn2YYN`sU+_nlQPJJ_LJC5aKWbd2V`S!h; z@4b0%erszBBWR(JoBc9~&_8TYZGlQ>y;neJ8EI$=X@cg{g@SL&C$PS#iv?*)g1)5r zb$=l+6@Y#K`?MeqhSR zZM$FrV7VQT?Ht+B90yi9vH`6VaGl%XKvx%Fy5=LX?uD_l3e6Q}b*!AfmYPs_w}1^( zHFHHn$rg!X-onbIVu|LAnJZ*Q(Nt4a3Pla;@pp`wnBWAjV@d%I-2lZp&Y16jayAp- zKBv=`bp9Xc3PN07DG#DO_IM&-b+5} zcq1w6@CG^Ubrhs?niC+{ED>W98xjCH8|R?26&q%azdXY?G~lW-e;vHBu=5&LwGEz_ zH>c;7%M4iOO^;=F)&%-`QH%xMHKXjIm8$hky z562#ieRs$18?^ccU&PDu=!!H-+L)FQ1VGwQ3%L2de*w%gGHWrg{a&k4k!S91Xxo38 zXR*=H7KN_{5vuCE>w{Qi8*gZfzA7TmHq_8wR>qwB-A%b?n~%qWg!zuMPa@EB0@<8y zVnTY@AV@Q+t`h3VMFYc`NgE(zq8HX2;lEwNWS+8MQ541V(9UKaV&=$hfU(c$=kQoU z?*pi<`;Sn&9ol7ucCCv-TmN7E2cC|6f6$H&Sv}aaK*UqUJ8BpX0)?}n=cpNv`AHurYIK9B>UvDzL{qk_3bkF0)Kan+ zX7|9KegqFV@E$?WY9yBXPn6|hTOPIK(Xu?YB8_<`K(5OJn+^e^gcJ8Kbf9<%JOt~h zh4-v&AKEplnjDHnp;_SnxDnD#0=`P`U2#z)-JpSGx`wtWrfbey^j&9ZyrTgE!}>I? ziLg6B#-xS+QnQenO=U1O3xx(NP=78P>`e@OwULZ_K9=iVy?pTc;wWA|ebmV^f>(G8T zj9U9vq+U0OS~?%f59CM5*CA!KclUjHP40yWFLBgL8LWUUn8*JDbhbM8%_Q7!n&Ae$LrsEaC*y zX|0$^r=50sTUYhWEnJw77fFFI{+#f}OP=1G`ZcrD>xenS0(jm;X&9+e?Z(Y52O#Faqot7iX4Y2mYwLY@Nh*z5PnBz-=gTBXzyFp;|6@ff#*RN zf%xg5eKKjCOs=zm8y1C=&o86AWY7b3VLlf(4EK!Scx<1Y~*(Ogz+bHO!@eW6R!gHv9lKZj+|o_#@%p_(8o-JSRFWQ4-8ua!>-6i cCr_<2>BdDtVF(bfvi8VDYvkg4HsBlmA9fL;6951J diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/models.cpython-312.pyc deleted file mode 100644 index f229594b0f7eee7be8d6f2552b27f91ce60d4897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1964 zcma)7OKjX!6n*x1Jf44kG$jpX`b%Px&XiBff|k-xN<}-s_w)R7 zHk%^wNYeAU&jdpLK&A7W=N;1F+z$qmaV97|E870FJ%F`@QXi`tEr5#BTeId1H`sjf zFWgGz{Nx48vOUeCIw->Rn(N8DpSof*TAR17(S|Qhc?>>+Rk5r&PQc5W0aB~BQ8z7E z$}nnZUd^`Lg_?sKUDRAU4Iu5XnyImdx=0(NmUtj zn5r)I@5fi{7ze?ndkjRAJnbD{z5MIM`HhM5?eUMEq}MP1QvRvDe!i{TYUgjarQ5qe zBNaK1TVe@R)laEv7zN;rs@|(>MzoSuRSzo{sw@GY`th3OIg5T?Rkd&iuzw*E2^N`% z0@LBgT#vCNsu&%EdxEe-ARZDnjCcq|wj(f&ZW+YatYwFv@O`)<~`rzr{@x2&#Y9z2uw};-^cx`+mH?d2&_{grv#qV&T zCv@`PL$m@b|96Pighx^5DBU9zk47i~!?&JgLbE`Bgj(I_P%eomLxk{z~^r-I%Y z$}}=?%-8_{eov<(I<4>by<)*RlR4Id>`cT8O1pHZ!^GJvb}8^l*ttP%2H?xE6#alI zau0h0Er(IOiK2i4i_earIErGw++(O>_c0vAU|&B5O%hfgw`9jr?3W!67MuNZ3X|JMOWRUkyZ_Xt^!DRPDE_fa zT(i=;vhwcoH7xrj?)S0xo_w-3cB6T%bzmj4(R*S`xDh%=pB1^+PpGPHSE18Iui?NA z&G6<3+S5 z{dWRhNN2-=`;e7@j5kKm{LfwvH`-`QyOW l;F)&cnGNavW_(Xfa(B4az#hT(-oXTSlWR@?P4FEY`yaFV>yH2c diff --git a/api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc b/api-v2/app/modules/tenant_housing_orgs/__pycache__/schemas.cpython-312.pyc deleted file mode 100644 index feee4fab12eccdcea3d5883a7b8176aef82e3fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 648 zcmYjOJ#Q2-5ViN?Zga|q!bu^AQcZ{bIsgTbQ(O}Q?zP-RnAr7D~V8R{tu zcg0*4JP#kreE8FHBFC)UNfp}@l$EBpBlx7q?-rTPnu?8W%cJEs#7Bss1cM}J45AX3 zc@!UX5n?`dwjj?sfLx0l#Jbe`=pW;zOcE?`)G@tQ1&A1#^=TuC2$_?Dn!tLVR_t+v z&BjEEilkc0;>lby6|I zR!K~e=w5zBaXlifTu;%muodsKsux)uBLOXVK0nDk3G5(6K Te?!-Pbv%6g@ZxU-t|tBgo0+fb diff --git a/api-v2/homeuniteus.db b/api-v2/homeuniteus.db deleted file mode 100644 index d91c70c00819c7f973d426e240970a1ec3347011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61440 zcmeI(!Ef7C9KdlqPLnum>PjfGCL}PerY6!lsi24h($o;VQLUs~)=unzqR@D)Q4?>m zBRV96+QE%~fIo#3e*y>g2Y}!-f#3ujCc%479O5>PxYqqfievjdKl^=tzvuNO-u-*q zZs1styg{!MSZ^uIimED`mZd0)F@B4W@KqGc?08*%s8j1ntA=vpvnM6vZ)GX}wPM^g zzBiUjKP`P*YAm)&#o|AU)#7*hH-(ZYPgw{cb#MRxIOHP zf0XwRoo@SJ==ecxXM(P-KAUEA7fzGr`EB_C_;G_6_3TNSrkeWsW4X04`v zRSP;FA33w?&Dys#KKE|@-EBLe^`h=}#l`K~x9yhI+}X97d)wRBt)f2aSwi8y=MB1U zzY}-^(eIhZ`#~od`bnjCTU#I0TMw-}_QSA;@{G53TK3lMrrcMF&R(@z_AR?*HyieS zYv?}eQ_LvQH2{e$-7fp;+I^!&5i zrC1EkmRgmfer8{i*!TqPey8VH59+PP`}KIhqISH&K~ftr^{9T-u*kEsQHZLHnv6kB z75P?WYD=8ETCCo@k~7~Zt9z3XBSI%iWCRz_jfhcMI0B*wpRVb7vs_lc+!$rN*e{PQ z#xzIykeIl5XbhsXNKZ zUN&zw8tUmd!;>4Fb6pFuV9lv0V>kas9XQ89@?eO??M$r3cT(Aa2-n_1&U70|;hJ-a zB2AMGayPa34MmOsAuT_$XM-~?lTnxql+V@hesc0rnEZ0Ld}m^Qqsoa;!PCdH@4WMH zw$z>*^X}T_-{}=!1pBDlMAbwd400IagfB*srAb~98+AKcjYdUB)p>A*X1qTm0G-_s*NPY^%=0R#|0009ILKmY**5V*_&uW0Mb z+FJaZfXV#-| diff --git a/api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc b/api-v2/tests/__pycache__/cognito_setup.cpython-312.pyc deleted file mode 100644 index 42ca75fbfb1ba89716dfc3de68a7bed750e4e026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3415 zcmbtWO=uiP7Ow93>ybt?vTPx1#*$m>tgUurDTz&D99xN;$g&ehHu}LZEHv$|lGO4{ z_oTW<_81v*$U%X?9=#A2_G%Q%jZU%h(s>Z|^yudjzdQ@r?+oQm;J0KLhb4U00>P`%i$)?tB)E7TQ-tCVf9ic_mH+fxmj z!aCQp>{Yc^2NajNlRZ5uw52ts)>zYSl6CpeIh+#_b9Nur+3@ z=9*!zGFSB+fdq3MfV)o=1*e-$^*VJm=^$^@NDk2z1<*e##Fah7rhd>fJp@wIuE8MB7kWckJXVtbm2R8Na zNSv8Y6|zL}SPq^*z?hEhv3s6cHEd&*@$iI>YHTDEJUjlIxv(9Y1F@=TYPQ?MZ%&XTXYmGqBbqf~i`u&k^RXiD+3%K8( zKzu@4qZ3=nZ+y9)_o!{heYE}y@^|?G{0ZynctxjQ&vx`!+mxuhD($oh;DNj;)8sIiX$s|o#BX5r z#t5B$GeOfdLlv4`m3Ml!qi7!_HvvO$$FrHFy#han5-fOj(b|^2$fC3@-OqD4ws(4( z-%RWjVmgxmziTGCdG`Nq&qKf4bKrT;2GI`B2e~DvL@d~wQ1n5HRSl~GWv$?F-l(!* z0F5?iGoHt-+jXeiKxsS3*Jv>C5pZ2R^Pad%OTp2Z>(_7G(w7%!7xbGmi;K5zEWEGJ zEH7P+Eeo?(7G@W(>Pt61oShdIxRO0F48Zn;P$G!@9J3iWJhmwAU2tgj9`d2(&D6cM zD;4Li8{}ix&@E8H9)NP87P+QpXw|Y^IAeB>JM|jkbF6_Nb=84O8Kmdxcsaq%aX7VX z!*jT+^#lnZA6r*O@@VtOt2~NyJd+%&i5v&KM#om?Gc8C5t?^7dc;tzFn1e|xuhajVc89%&9w_`?&;;YlbHRLnm58 zueM6ZANQYb^`G8LC64F!vZQoH+9#P(VXLq=KvY3xKw%TRXD<08(_i2BM?Q$y?6uw3 zXZ*3t|C;v47I13xv65>lC0{8um2qDg|LT0}+`D@TlGUCPDSKIZ(froS&Hu-HI`;li zfb%@$>^V|J0urS9Ur-(*6+r)DTW`~A#{w(6P;GZA*^!q@&_ci54)BN~@p z`dW&&6RS!zAdSSlCW{NhM`22ngs!E-+b~2~g&n*NzpDM9|HUQZHawC<{ks@bRJ)nz zg{coYkOOvwd;- zO!&&g*U9Gj>;C!cyUN73%16KTnEv{IZ-0}Vgb>949%U7V?G`_r_(Uucj?WY1Z3;Sm z7R13rXLTLEMHq)qfYGkUZrk5R&wdc%;D7D?toQT2R^jkgZy4mkqWS|to`VgvWXMel zyJzZNqsD?PY8ytS4ywlulifDVJ1%b7p&s~_fiKmUeanRAcb-2-?z7zI`OZ1!wJd%W zAr1QN8C|E2sq4HC;KI~m==@C-n5sua|R2Wr0+=fJJS18`l58?2>~J8egU0*I>Z0~ diff --git a/api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/__pycache__/conftest.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index e92e06d6995f7c2e8976b335cd2649328d1a887b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4151 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 KKV^V2P3C{Pb*T>k diff --git a/api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/__pycache__/test_alembic_migration.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index a4704a1da5b6dee1d97fa0cc289e7d9921f0e2bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3213 zcmcJR&2Jk;6u@WfwY_#enuLBNZJ{fbh;C7wq)pSNC5Vbv6oh&}?ZpyWt-a%9&3-Yn zPU^6hD%3*{J@kOo3kR-M{u0Ec6`-P(q8^ZtxS&EnNImi1?5@2*5$%DF>^E=Ty!qHS zGryVd#>Q#{lBzyyn!?6FsWee#Hq~*J-TY z6pVl3I}G%3sk6WrcIfjSSY|>dLPOZzn!}8BW?BYk8@8~04=P7xWj9#kriINlS$2Jk zIfljBwr7XnC=AyOTkD2pIp8y$wlOS!(=%F7ZHth3tzL_!A;GKy|04W%e*xzelaRU#m`Pbof0YH+YrK^q)s{0hPhRUls2_wn|5JaNop)5 ztY$tPxsX{Y$+Ph`h?vRsKf2coOT*c3r{Bo)EyiD_g-2mN!>`z<4MZUA{RMu7m-H)U zepcygWeeigFIi=)5|wN!OXYAfn|W@;smwOaqjJ_$mVZet^%m_@_!r=>^ou=JuWmi6 zX^?Kfj?=<*69v{nY zbzlTbYun7RlAdJqCiJvn+K$)#FiGD%PZE|hxB=2bycTZAI+W$dP};f zeUU2Ks)pK`%mhkmTF^y3J8_0>)%vIOT3=gD{LkwmK5zx%ak6Lhbxk1=7tfnF0qrf{J!7-B$Sj-pB<_pXD!nvf7^nW3lbW&Jc z5C|9CXpo-2Kaa>0^BsTP+vNTlo4@9}>?V+l-4yd?V9#xwna3R{q%_iPWem1eJ?O

_n)Q_BDcTjl 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 diff --git a/api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_forms.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index e7c0b2e44ead105aab335df4ddffdba6f846146d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6601 zcmd@YOKcm*b(UO;OL9p`l&Jq_E&oJYk|o)47BoRPdTf1O>~ zCc6TRzy}?CP=FROPzMlta^N0v%(16l3KUZ5fW*Rp6*N8MCdEY!_|*4yxg@O^bpoWP zjKsGyZ{C}EGxOe?_vUZGpr1gIq^%R=)aRqly%^>o)gGS@)+05;}?=~mPyBx$~4pCYEsMZzL;cjjVUaxGp^(^OI*o1G}NXUG9^nU zHIvS_UPS4jrl@H}zrmD5CY6n+bEZUjCQCE7(^0qSy%0~w7Z^8v)9e;YW?(>5nr521 zkY*hE1C(hAu4Zu@(?74WB#r5?38pu3Bcp=oSH3}&fDMp1`|Xm-88!W>_?=jir5E%Y zFoK)2dDEYTDH+#QrkR0T@uUiCgb_6}1iN+%#wpY1o3F7r*LF%=mtIO;XZ#Ed=h0O? z$v94G)>-msdHFI+WYSbQ%QH*ad}LD5?6%ddEFgC1rC-zITvuRXmiJ$-)J@UGjEoG9 zjt-6v506FNycI^br;zO>TVsIe@r1qkfg`?%a#b{Q@zOb~#scEC-O4%4yCs+-$NeGOowKLX+U%(A7jG-UaenLi4>?>%-N1tks(VoZOav#BSgQ#r4Cr zjWG=^1J4o5%c(=?;C0DQXJ#*5h+R58 zIUSpwdH)*6)tO!m?rXdar8u=+zZqO$x_yF+aAR8s81`LzB^lr z^b{il8WHr5}ekl&~aTxEF1IOdA4ty96@J%<}7=c4aYOB;7o2y0@ zUOmj$s09`D$_=&nnj46^9+&43;AUK`9Jezsfta9Tgqr!ua-~yMp&t@X{-IUj^?+{DON~f;k};*jYevC5IN) z=w8HlWk&%Tk3+NU(=mjwis7rs3pd_!!0;OZD|V0#S^JNUw}Vv{(Od2)6lfrJ2qI5S z>=4p>9l}M$sa3y@8AI&QUNb(r-yKEA3&|>ujJ%d(kJDTIewPDoa>yFKw?vWuEm3v1 zAeyP}&1)p7Qi25aZ=m%%>w5!Tz@dX|N3^1mAZ?^!BUp}2Li&DZFKR}DNN{H{Le5Ce z7h)4~M_Bg5PhJk_2OSPWf|Zn=;xt(mKKuhAzk>F1{c?j*Pn%GYmK%+RaxH8$8evO+ z{Dxmk)=2Ss{qckTG$T({e`zs9SKJ5oh#91lJA&QWxg+-5d7&oUm#d+elTkX_jc+#iyG$UP>=#M(hNd1v_#>fp zpH{-BkA$dq#!4ZqHyKNmDXUI070Z<6Q!9mz3IftqnbCA6fO3y8G6~AI4Tsms-0XT>aQs(+aHzp7!>wjXmnv*nOnX zJNBe)4C3aV!7VrG82z_Inz|q8Yg21u>-{I!yH6Fulk4)N6%BEWPIGR?KVn9rTGYSnBxFZ1#e#Phv#}Z{+EZ##k%L|k%)mwv97b^Tl>}|vPSD2r1$%BQ z-Gd37(IJ70x;X9}#|z~ZUYMC*!5$1UO%YdZy2{J8PB7ZSk7GYZtajLJMaxLYQI*ZW z)a>k~>2ouaS7tAn0X#@&>n4!p9Rw$kFpN>Q)mJ%bGhCss;P^%4IDi1JGCqJ{5Wx_F zLkNZui~um*c{Lkt<|h$>a+<#K4A~5yL?o_@zl&fB!Fd2?xbogpo%QF~QIkB5);7j! z8%Jt0$+v17$4to?*{ri4m}(h^Ya5687|f_O13>%OS!{c0dA)&f6}Ub?b_MQpFb7{> z(RX0Occ9=K*dm8KXNAwbPn-MJ-YPU7T=6|^-o19V&^)l>+msrMQpbkWvEF&`&%Z1V zPHqfN{^gw~(rhW*Sq$&r2=8C-A1{QDt$0fvyNewI8yy2r22T|_CRgf9?R~}e;f?m; z&wC5)lPjTbMUU@YVJl36&0opw4~8BcD9B@*a?5tm+v~5Q*AKj1kl)#q>j5v<;2#YX zY|L^~&%I@_&N7u*C6_uZD$XzS%tb8y(U+bpSyV=yc*?X|mv!~R# zzrwU*WD-E8MyYP=*kHuF9XQR diff --git a/api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_forms_schema.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index 917e379541ba1c10a3e9a63cb860902191bb4041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25140 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 b1^xj4BmTi5hnL^~pvlD_<-ZCcWli+|_0hh8 diff --git a/api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_host_controller.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index 46e49a40c790fb22027e7a24f3624603a3225d48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13242 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 U-t}K;t+?;@{te=@A~k^Ie>p8&g8%>k diff --git a/api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_housing_orgs_controller.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index 0b1ec8306e24f6c6cf746bc3fa7f2496cf852910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33189 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 ZJvdE85xxJsnQoW1kDvOJ2Pghg{}1=DC)EG| diff --git a/api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc b/api-v2/tests/integration/__pycache__/test_user_repo.cpython-312-pytest-8.3.3.pyc deleted file mode 100644 index 813a43a7d4305cbda95afff3fe59b489952d7ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9685 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 I&`V(NKl_r>xc~qF From 83eec352fed987d85b91e0b75cc205fd10d51f5f Mon Sep 17 00:00:00 2001 From: "Mr. Paul" Date: Tue, 1 Oct 2024 10:00:15 -0700 Subject: [PATCH 10/11] Update run tests v1 github action frontend cache path Updates the npm cache dependency path using the updated directory name. --- .github/workflows/run-tests-v1.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run-tests-v1.yml b/.github/workflows/run-tests-v1.yml index df888b36..8b6f128e 100644 --- a/.github/workflows/run-tests-v1.yml +++ b/.github/workflows/run-tests-v1.yml @@ -52,10 +52,10 @@ jobs: with: node-version: 20 cache: "npm" - cache-dependency-path: app/package-lock.json + cache-dependency-path: frontend/package-lock.json - name: Run npm CI run: npm ci - - name: Test app + - name: Test frontend run: npm run test -- --no-color --run - name: Run E2E tests uses: cypress-io/github-action@v5 From 6373312ba84ece5b72efa8ae1e4b439344f83f95 Mon Sep 17 00:00:00 2001 From: John Wroge <72668920+johnwroge@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:28:09 -0400 Subject: [PATCH 11/11] Updated api endpoints in frontend --- .../cypress/e2e/create-new-password.cy.ts | 2 +- frontend/package-lock.json | 621 +----------------- frontend/src/services/auth.ts | 2 +- 3 files changed, 4 insertions(+), 621 deletions(-) diff --git a/frontend/cypress/e2e/create-new-password.cy.ts b/frontend/cypress/e2e/create-new-password.cy.ts index e05bffee..b2597bee 100644 --- a/frontend/cypress/e2e/create-new-password.cy.ts +++ b/frontend/cypress/e2e/create-new-password.cy.ts @@ -6,7 +6,7 @@ describe('Forgot Password', () => { oneHourFromNow.setHours(oneHourFromNow.getHours() + 1); const cookieExpiration = oneHourFromNow.toUTCString(); - cy.intercept('POST', '/api/auth/new_password', { + cy.intercept('POST', '/api/auth/new-password', { statusCode: 200, headers: { 'Set-Cookie': `session=fake_session_value; expires=${cookieExpiration}; path=/`, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 84300cf6..d9a25531 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1503,17 +1503,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", @@ -2705,18 +2694,6 @@ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", "dev": true }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -2784,7 +2761,7 @@ "version": "18.2.25", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", - "devOptional": true, + "dev": true, "dependencies": { "@types/react": "*" } @@ -3203,181 +3180,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true - }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -3407,16 +3209,6 @@ "acorn-walk": "^8.0.2" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -3989,13 +3781,6 @@ "node": "*" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -4133,16 +3918,6 @@ "node": ">= 0.8.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0" - } - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -4640,7 +4415,7 @@ "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "devOptional": true + "dev": true }, "node_modules/debug": { "version": "4.3.4", @@ -4891,20 +4666,6 @@ "once": "^1.4.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -5064,13 +4825,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", - "dev": true, - "peer": true - }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -5704,16 +5458,6 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -6220,13 +5964,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true - }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -7098,47 +6835,6 @@ "set-function-name": "^2.0.1" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7823,16 +7519,6 @@ } } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, "node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", @@ -8420,13 +8106,6 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "peer": true - }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -8763,13 +8442,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "dev": true, - "peer": true - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -9297,16 +8969,6 @@ } ] }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -9850,16 +9512,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -10070,27 +9722,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -10398,130 +10029,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.30.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "peer": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -11267,20 +10774,6 @@ "node": ">=14" } }, - "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -11290,116 +10783,6 @@ "node": ">=12" } }, - "node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", diff --git a/frontend/src/services/auth.ts b/frontend/src/services/auth.ts index 7920569c..4a9ad9e6 100644 --- a/frontend/src/services/auth.ts +++ b/frontend/src/services/auth.ts @@ -122,7 +122,7 @@ const authApi = api.injectEndpoints({ }), newPassword: build.mutation({ query: credentials => ({ - url: 'auth/new_password', + url: 'auth/new-password', method: 'POST', withCredentials: true, body: credentials,