auth password forgot and change tested

This commit is contained in:
2024-12-01 15:08:59 +03:00
parent 288a393719
commit a4fd52c28a
17 changed files with 289 additions and 199 deletions

View File

@@ -16,6 +16,8 @@ from api_services.redis.functions import (
get_object_via_user_uu_id,
get_object_via_access_key,
)
from databases.sql_models.building.build import Build
from databases.sql_models.identity.identity import Addresses, OccupantTypes
def save_object_to_redis(
@@ -55,13 +57,11 @@ def save_access_token_to_redis(
raise HTTPException(
status_code=400,
detail=dict(message="User is not found."),
# headers=json.loads(json.dumps(request.headers)),
)
# Check user is already logged in or has a previous session
already_tokens = get_object_via_user_uu_id(user_id=found_user.uu_id)
for key in already_tokens or []:
token_user = json.loads(redis_cli.get(key).decode() or {})
for key, token_user in already_tokens.items():
if token_user.get("domain", "") == domain:
redis_cli.delete(key)
@@ -79,7 +79,6 @@ def save_access_token_to_redis(
detail=dict(
message="NO Living Space is found. This user has no proper account set please contact the admin."
),
# headers=json.loads(json.dumps(request.headers)),
)
occupants_selection_dict = {}
for living_space in living_spaces:
@@ -92,19 +91,38 @@ def save_access_token_to_redis(
detail=dict(
message="No build Part is found for the living space. Please contact the admin."
),
# headers=json.loads(json.dumps(request.headers)),
)
build_part = build_parts_selection.get(1)
occupant_dict = {
"uu_id": str(living_space.occupant_type_uu_id),
"id": living_space.occupant_type,
}
if not str(build_part.uu_id) in occupants_selection_dict:
occupants_selection_dict[str(build_part.uu_id)] = [occupant_dict]
elif str(build_part.uu_id) in occupants_selection_dict:
occupants_selection_dict[str(build_part.uu_id)].append(occupant_dict)
build = build_part.buildings
occupant_type = OccupantTypes.filter_by_one(
id=living_space.occupant_type,
system=True,
).data
if not str(build.uu_id) in occupants_selection_dict:
occupants_selection_dict[str(build.uu_id)] = dict(
build_uu_id=str(build.uu_id),
build_name=build.build_name,
build_no=build.build_no,
occupants=[
dict(
part_uu_id=str(build_part.uu_id),
part_name=build_part.part_name,
part_level=build_part.part_level,
uu_id=str(occupant_type.uu_id),
description=occupant_type.occupant_description,
code=occupant_type.occupant_code
)
]
)
elif str(build.uu_id) in occupants_selection_dict:
occupants_selection_dict[str(build.uu_id)]["occupants"].append(dict(
part_uu_id=str(build_part.uu_id),
part_name=build_part.part_name,
part_level=build_part.part_level,
uu_id=str(occupant_type.uu_id),
description=occupant_type.occupant_description,
code=occupant_type.occupant_code
))
save_object_to_redis(
access_token=access_token,
model_object=OccupantTokenObject(
@@ -119,21 +137,15 @@ def save_access_token_to_redis(
available_occupants=occupants_selection_dict,
),
)
new_occupants_selection_dict = {}
for key, value in occupants_selection_dict.items():
new_occupants_selection_dict[key] = [
occupant.get("uu_id") for occupant in value
]
return dict(
user_type=UserType.occupant.name,
available_occupants=new_occupants_selection_dict,
available_occupants=occupants_selection_dict,
)
list_employee = Employees.filter_all(
Employees.people_id == found_user.person_id,
).data
companies_uu_id_list, companies_id_list = [], []
companies_uu_id_list, companies_id_list, companies_list = [], [], []
duty_uu_id_list, duty_id_list = [], []
for employee in list_employee:
staff = Staff.filter_one(Staff.id == employee.staff_id).data
@@ -150,6 +162,13 @@ def save_access_token_to_redis(
).data:
companies_uu_id_list.append(str(company.uu_id))
companies_id_list.append(company.id)
company_address = Addresses.filter_by_one(id=company.official_address_id).data
companies_list.append(dict(
uu_id=str(company.uu_id),
public_name=company.public_name,
company_type=company.company_type,
company_address=company_address,
))
save_object_to_redis(
access_token=access_token,
@@ -170,7 +189,7 @@ def save_access_token_to_redis(
)
return dict(
user_type=UserType.employee.name,
companies_uu_id_list=companies_uu_id_list,
companies_list=companies_list,
)