events updated

This commit is contained in:
berkay 2024-12-02 13:07:22 +03:00
parent aaeb7f4d00
commit a038a1b8ee
7 changed files with 318 additions and 240 deletions

View File

@ -21,6 +21,9 @@ from databases.sql_models.others.enums import ApiEnumDropdown
class AccountRecordsListEventMethods(MethodToEvent): class AccountRecordsListEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "SELECT"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"7192c2aa-5352-4e36-98b3-dafb7d036a3d": "account_records_list", "7192c2aa-5352-4e36-98b3-dafb7d036a3d": "account_records_list",
} }
@ -57,6 +60,9 @@ class AccountRecordsListEventMethods(MethodToEvent):
class AccountRecordsCreateEventMethods(MethodToEvent): class AccountRecordsCreateEventMethods(MethodToEvent):
event_type = "CREATE" event_type = "CREATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"31f4f32f-0cd4-4995-8a6a-f9f56335848a": "account_records_create", "31f4f32f-0cd4-4995-8a6a-f9f56335848a": "account_records_create",
} }
@ -140,6 +146,9 @@ class AccountRecordsCreateEventMethods(MethodToEvent):
class AccountRecordsUpdateEventMethods(MethodToEvent): class AccountRecordsUpdateEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "UPDATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"ec98ef2c-bcd0-432d-a8f4-1822a56c33b2": "account_records_update", "ec98ef2c-bcd0-432d-a8f4-1822a56c33b2": "account_records_update",
} }
@ -166,6 +175,9 @@ class AccountRecordsUpdateEventMethods(MethodToEvent):
class AccountRecordsPatchEventMethods(MethodToEvent): class AccountRecordsPatchEventMethods(MethodToEvent):
event_type = "PATCH" event_type = "PATCH"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"34c38937-42a2-45f1-b2ef-a23978650aee": "account_records_patch", "34c38937-42a2-45f1-b2ef-a23978650aee": "account_records_patch",
} }

View File

@ -28,6 +28,7 @@ class AddressListEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "SELECT"
event_description = "List Address records" event_description = "List Address records"
event_category = "Address" event_category = "Address"
__event_keys__ = { __event_keys__ = {
"9c251d7d-da70-4d63-a72c-e69c26270442": "address_list_super_user", "9c251d7d-da70-4d63-a72c-e69c26270442": "address_list_super_user",
"52afe375-dd95-4f4b-aaa2-4ec61bc6de52": "address_list_employee", "52afe375-dd95-4f4b-aaa2-4ec61bc6de52": "address_list_employee",
@ -93,6 +94,9 @@ class AddressListEventMethods(MethodToEvent):
class AddressCreateEventMethods(MethodToEvent): class AddressCreateEventMethods(MethodToEvent):
event_type = "CREATE" event_type = "CREATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"ffdc445f-da10-4ce4-9531-d2bdb9a198ae": "create_address", "ffdc445f-da10-4ce4-9531-d2bdb9a198ae": "create_address",
} }
@ -133,6 +137,9 @@ class AddressCreateEventMethods(MethodToEvent):
class AddressSearchEventMethods(MethodToEvent): class AddressSearchEventMethods(MethodToEvent):
event_type = "SEARCH" event_type = "SEARCH"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"e0ac1269-e9a7-4806-9962-219ac224b0d0": "search_address", "e0ac1269-e9a7-4806-9962-219ac224b0d0": "search_address",
} }
@ -205,6 +212,9 @@ class AddressSearchEventMethods(MethodToEvent):
class AddressUpdateEventMethods(MethodToEvent): class AddressUpdateEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "UPDATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"1f9c3a9c-e5bd-4dcd-9b9a-3742d7e03a27": "update_address", "1f9c3a9c-e5bd-4dcd-9b9a-3742d7e03a27": "update_address",
} }
@ -247,6 +257,9 @@ class AddressUpdateEventMethods(MethodToEvent):
class AddressPatchEventMethods(MethodToEvent): class AddressPatchEventMethods(MethodToEvent):
event_type = "PATCH" event_type = "PATCH"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"b0e55a7e-af81-468c-b46c-a6b3a6b68d5d": "patch_address", "b0e55a7e-af81-468c-b46c-a6b3a6b68d5d": "patch_address",
} }
@ -288,6 +301,9 @@ class AddressPatchEventMethods(MethodToEvent):
class AddressPostCodeCreateEventMethods(MethodToEvent): class AddressPostCodeCreateEventMethods(MethodToEvent):
event_type = "CREATE" event_type = "CREATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"6f1406ac-577d-4f2c-8077-71fff2252c5f": "create_post_code_address", "6f1406ac-577d-4f2c-8077-71fff2252c5f": "create_post_code_address",
} }
@ -335,6 +351,9 @@ class AddressPostCodeCreateEventMethods(MethodToEvent):
class AddressPostCodeUpdateEventMethods(MethodToEvent): class AddressPostCodeUpdateEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "UPDATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"df18e489-a63c-477f-984c-aa52d30640ad": "update_post_code_address", "df18e489-a63c-477f-984c-aa52d30640ad": "update_post_code_address",
} }
@ -388,6 +407,9 @@ class AddressPostCodeUpdateEventMethods(MethodToEvent):
class AddressPostCodeListEventMethods(MethodToEvent): class AddressPostCodeListEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "SELECT"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"88d37b78-1ac4-4513-9d25-090ac3a24f31": "list_post_code_address", "88d37b78-1ac4-4513-9d25-090ac3a24f31": "list_post_code_address",
} }

View File

@ -1,12 +1,12 @@
import json import json
import typing import typing
from typing import Union
from fastapi import status from fastapi import status
from fastapi.requests import Request from fastapi.requests import Request
from fastapi.exceptions import HTTPException from fastapi.exceptions import HTTPException
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from api_objects import UserType
from databases import ( from databases import (
Companies, Companies,
Staff, Staff,
@ -22,6 +22,7 @@ from databases import (
Users, Users,
UsersTokens, UsersTokens,
OccupantTypes, OccupantTypes,
RelationshipEmployee2Build,
) )
from api_services import ( from api_services import (
@ -35,10 +36,11 @@ from api_services import (
change_your_password_template, change_your_password_template,
) )
from api_configs import ApiStatic, Auth
from api_events.events.abstract_class import MethodToEvent, ActionsSchema from api_events.events.abstract_class import MethodToEvent, ActionsSchema
from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObject
from api_library.date_time_actions.date_functions import system_arrow from api_library.date_time_actions.date_functions import system_arrow
from api_configs import ApiStatic, Auth
from databases.no_sql_models.login_handlers import load_user_with_erp_details from databases.no_sql_models.login_handlers import load_user_with_erp_details
from api_validations.validations_request import ( from api_validations.validations_request import (
@ -51,12 +53,14 @@ from api_validations.validations_request import (
OccupantSelection, OccupantSelection,
EmployeeSelection, EmployeeSelection,
) )
from databases.sql_models.building.build import RelationshipEmployee2Build
class AuthenticationLoginEventMethods(MethodToEvent): class AuthenticationLoginEventMethods(MethodToEvent):
event_type = "LOGIN" event_type = "LOGIN"
event_description = "Login via domain and access key : [email] | [phone]"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"e672846d-cc45-4d97-85d5-6f96747fac67": "authentication_login_with_domain_and_creds", "e672846d-cc45-4d97-85d5-6f96747fac67": "authentication_login_with_domain_and_creds",
} }
@ -66,7 +70,6 @@ class AuthenticationLoginEventMethods(MethodToEvent):
cls, cls,
data: Login, data: Login,
request, request,
token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
): ):
access_dict = Users.login_user_with_credentials(data=data, request=request) access_dict = Users.login_user_with_credentials(data=data, request=request)
found_user = access_dict.get("user", None) found_user = access_dict.get("user", None)
@ -90,7 +93,10 @@ class AuthenticationLoginEventMethods(MethodToEvent):
class AuthenticationSelectEventMethods(MethodToEvent): class AuthenticationSelectEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "LOGIN"
event_description = "Select Employee Duty or Occupant Type"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"cee96b9b-8487-4e9f-aaed-2e8c79687bf9": "authentication_select_company_or_occupant_type", "cee96b9b-8487-4e9f-aaed-2e8c79687bf9": "authentication_select_company_or_occupant_type",
} }
@ -100,13 +106,12 @@ class AuthenticationSelectEventMethods(MethodToEvent):
cls, cls,
request: Request, request: Request,
data, data,
token_dict: typing.Union[EmployeeSelection, OccupantSelection], token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
): ):
from api_objects import OccupantToken, CompanyToken from api_objects import OccupantToken, CompanyToken
token_user = get_object_via_access_key(request=request) if isinstance(token_dict, EmployeeTokenObject):
if token_user.user_type == 1: if data.company_uu_id not in token_dict.companies_uu_id_list:
if data.company_uu_id not in token_user.companies_uu_id_list:
return JSONResponse( return JSONResponse(
content={ content={
"completed": False, "completed": False,
@ -137,7 +142,7 @@ class AuthenticationSelectEventMethods(MethodToEvent):
).data ).data
] ]
employee = Employees.filter_one( employee = Employees.filter_one(
Employees.people_id == token_user.person_id, Employees.people_id == token_dict.person_id,
Employees.staff_id.in_(staff_ids), Employees.staff_id.in_(staff_ids),
).data ).data
@ -185,7 +190,7 @@ class AuthenticationSelectEventMethods(MethodToEvent):
}, },
status_code=status.HTTP_200_OK, status_code=status.HTTP_200_OK,
) )
elif token_user.user_type == 2: elif isinstance(token_dict, OccupantTokenObject):
occupant_type = OccupantTypes.filter_one( occupant_type = OccupantTypes.filter_one(
OccupantTypes.uu_id == data.occupant_uu_id OccupantTypes.uu_id == data.occupant_uu_id
).data ).data
@ -214,7 +219,7 @@ class AuthenticationSelectEventMethods(MethodToEvent):
).data ).data
if selected_occupant_type := BuildLivingSpace.filter_one( if selected_occupant_type := BuildLivingSpace.filter_one(
BuildLivingSpace.occupant_type == occupant_type.id, BuildLivingSpace.occupant_type == occupant_type.id,
BuildLivingSpace.person_id == token_user.person_id, BuildLivingSpace.person_id == token_dict.person_id,
BuildLivingSpace.build_parts_id == build_part.id, BuildLivingSpace.build_parts_id == build_part.id,
).data: ).data:
reachable_event_list_id, reachable_event_list_uu_id = ( reachable_event_list_id, reachable_event_list_uu_id = (
@ -258,7 +263,10 @@ class AuthenticationSelectEventMethods(MethodToEvent):
class AuthenticationCheckTokenEventMethods(MethodToEvent): class AuthenticationCheckTokenEventMethods(MethodToEvent):
event_type = "CHECK" event_type = "LOGIN"
event_description = "Check Token is valid for user"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"73d77e45-a33f-4f12-909e-3b56f00d8a12": "authentication_check_token_is_valid", "73d77e45-a33f-4f12-909e-3b56f00d8a12": "authentication_check_token_is_valid",
} }
@ -282,7 +290,12 @@ class AuthenticationCheckTokenEventMethods(MethodToEvent):
class AuthenticationRefreshEventMethods(MethodToEvent): class AuthenticationRefreshEventMethods(MethodToEvent):
event_type = "REFRESH" event_type = "LOGIN"
event_description = (
"Refresher Token for refreshing access token without credentials"
)
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"48379bb2-ba81-4d8e-a9dd-58837cfcbf67": "authentication_refresh_user_info", "48379bb2-ba81-4d8e-a9dd-58837cfcbf67": "authentication_refresh_user_info",
} }
@ -323,7 +336,10 @@ class AuthenticationRefreshEventMethods(MethodToEvent):
class AuthenticationChangePasswordEventMethods(MethodToEvent): class AuthenticationChangePasswordEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "LOGIN"
event_description = "Change password with access token implemented on request headers without password reset token"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"f09f7c1a-bee6-4e32-8444-962ec8f39091": "authentication_change_password", "f09f7c1a-bee6-4e32-8444-962ec8f39091": "authentication_change_password",
} }
@ -331,13 +347,11 @@ class AuthenticationChangePasswordEventMethods(MethodToEvent):
@classmethod @classmethod
def authentication_change_password( def authentication_change_password(
cls, cls,
request,
data: ChangePassword, data: ChangePassword,
token_dict: typing.Union[EmployeeSelection, OccupantSelection], token_dict: typing.Union[EmployeeTokenObject, OccupantTokenObject],
): ):
token_user = get_object_via_access_key(request=request) if isinstance(token_dict, EmployeeTokenObject):
if token_user.user_type == 1: if found_user := Users.filter_one(Users.uu_id == token_dict.uu_id).data:
if found_user := Users.filter_one(Users.uu_id == token_user.uu_id).data:
if found_user.check_password(data.old_password): if found_user.check_password(data.old_password):
found_user.set_password(data.new_password) found_user.set_password(data.new_password)
return JSONResponse( return JSONResponse(
@ -362,15 +376,16 @@ class AuthenticationChangePasswordEventMethods(MethodToEvent):
class AuthenticationCreatePasswordEventMethods(MethodToEvent): class AuthenticationCreatePasswordEventMethods(MethodToEvent):
event_type = "CREATE" event_type = "LOGIN"
event_description = "Create password with password reset token requested via email"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"c519f9af-92e1-47b2-abf7-5a3316d075f7": "authentication_create_password", "c519f9af-92e1-47b2-abf7-5a3316d075f7": "authentication_create_password",
} }
@classmethod @classmethod
def authentication_create_password( def authentication_create_password(cls, data: CreatePassword):
cls, request, data: CreatePassword, token_dict: dict = None
):
if not data.re_password == data.password: if not data.re_password == data.password:
raise HTTPException( raise HTTPException(
@ -411,56 +426,44 @@ class AuthenticationCreatePasswordEventMethods(MethodToEvent):
class AuthenticationDisconnectUserEventMethods(MethodToEvent): class AuthenticationDisconnectUserEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "LOGIN"
event_description = "Disconnect all sessions of user in access token"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"8b586848-2fb3-4161-abbe-642157eec7ce": "authentication_disconnect_user", "8b586848-2fb3-4161-abbe-642157eec7ce": "authentication_disconnect_user",
} }
@classmethod @classmethod
def authentication_disconnect_user( def authentication_disconnect_user(
cls, request: Request, data: Logout, token_dict: dict = None cls,
data: Logout,
token_dict: Union[EmployeeTokenObject, OccupantTokenObject]
): ):
found_user = Users.filter_one(Users.uu_id == token_dict.user_uu_id).data
if token_user := get_object_via_access_key(request=request): if not found_user:
found_user = Users.filter_one(Users.uu_id == token_user.get("uu_id")).data return JSONResponse(
if not found_user: content={
return JSONResponse( "completed": False,
content={ "message": "Invalid data",
"completed": False, "data": None,
"message": "Invalid data", },
"data": None, status_code=status.HTTP_202_ACCEPTED,
}, )
status_code=status.HTTP_202_ACCEPTED, if already_tokens := get_object_via_user_uu_id(user_id=str(found_user.uu_id)):
for key, token_user in already_tokens.items():
redis_cli.delete(key)
selected_user = Users.filter_one(
Users.uu_id == token_user.get("uu_id"),
).data
selected_user.remove_refresher_token(
domain=data.domain, disconnect=True
) )
if already_tokens := get_object_via_user_uu_id(user_id=found_user.uu_id):
for key, token_user in already_tokens.items():
redis_cli.delete(key)
selected_user = Users.filter_one(
Users.uu_id == token_user.get("uu_id"),
).data
selected_user.remove_refresher_token(
domain=data.domain, disconnect=True
)
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key=token_user.get("access_input"),
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )
return JSONResponse( return JSONResponse(
content={ content={
"completed": True, "completed": True,
"message": "All sessions are disconnected", "message": "All sessions are disconnected",
"data": token_user, "data": selected_user.get_dict(),
}, },
status_code=status.HTTP_200_OK, status_code=status.HTTP_200_OK,
) )
@ -471,7 +474,11 @@ class AuthenticationDisconnectUserEventMethods(MethodToEvent):
class AuthenticationLogoutEventMethods(MethodToEvent): class AuthenticationLogoutEventMethods(MethodToEvent):
event_type = "UPDATE"
event_type = "LOGIN"
event_description = "Logout only single session of user which domain is provided"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"5cc22e4e-a0f7-4077-be41-1871feb3dfd1": "authentication_logout_user", "5cc22e4e-a0f7-4077-be41-1871feb3dfd1": "authentication_logout_user",
} }
@ -490,21 +497,7 @@ class AuthenticationLogoutEventMethods(MethodToEvent):
Users.uu_id == token_user.get("uu_id"), Users.uu_id == token_user.get("uu_id"),
).data ).data
selected_user.remove_refresher_token(domain=data.domain) selected_user.remove_refresher_token(domain=data.domain)
# UserLogger.log_error(
# str(
# dict(
# user_id=selected_user.id,
# domain=data.domain,
# access_key=token_user.get("access_input"),
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )
return JSONResponse( return JSONResponse(
content={ content={
"completed": True, "completed": True,
@ -525,7 +518,10 @@ class AuthenticationLogoutEventMethods(MethodToEvent):
class AuthenticationRefreshTokenEventMethods(MethodToEvent): class AuthenticationRefreshTokenEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "LOGIN"
event_description = "Refresh access token with refresher token"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"c90f3334-10c9-4181-b5ff-90d98a0287b2": "authentication_refresher_token", "c90f3334-10c9-4181-b5ff-90d98a0287b2": "authentication_refresher_token",
} }
@ -557,21 +553,6 @@ class AuthenticationRefreshTokenEventMethods(MethodToEvent):
request, "remote_addr", None request, "remote_addr", None
) or request.headers.get("X-Forwarded-For", None) ) or request.headers.get("X-Forwarded-For", None)
found_user.last_seen = str(system_arrow.now()) found_user.last_seen = str(system_arrow.now())
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key="via_refresher",
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )
return JSONResponse( return JSONResponse(
content={ content={
"completed": True, "completed": True,
@ -594,14 +575,19 @@ class AuthenticationRefreshTokenEventMethods(MethodToEvent):
class AuthenticationForgotPasswordEventMethods(MethodToEvent): class AuthenticationForgotPasswordEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "LOGIN"
event_description = "Send an email to user for a valid password reset token"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"e3ca6e24-b9f8-4127-949c-3bfa364e3513": "authentication_forgot_password", "e3ca6e24-b9f8-4127-949c-3bfa364e3513": "authentication_forgot_password",
} }
@classmethod @classmethod
def authentication_forgot_password( def authentication_forgot_password(
cls, request: Request, data: Forgot, token_dict: dict = None cls,
request: Request,
data: Forgot,
): ):
found_user: Users = Users.check_user_exits( found_user: Users = Users.check_user_exits(
access_key=data.access_key, domain=data.domain access_key=data.access_key, domain=data.domain
@ -609,21 +595,6 @@ class AuthenticationForgotPasswordEventMethods(MethodToEvent):
forgot_key = save_access_token_to_redis( forgot_key = save_access_token_to_redis(
request=request, found_user=found_user, domain=data.domain request=request, found_user=found_user, domain=data.domain
) )
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key=data.access_key,
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=str(DateTimeLocal.now()),
# is_login=False,
# )
# )
# )
forgot_link = ApiStatic.forgot_link(forgot_key=forgot_key) forgot_link = ApiStatic.forgot_link(forgot_key=forgot_key)
send_email_completed = send_email( send_email_completed = send_email(
subject=f"Dear {found_user.user_tag}, your forgot password link has been sent.", subject=f"Dear {found_user.user_tag}, your forgot password link has been sent.",
@ -636,7 +607,6 @@ class AuthenticationForgotPasswordEventMethods(MethodToEvent):
raise HTTPException( raise HTTPException(
status_code=400, detail="Email can not be sent. Try again later" status_code=400, detail="Email can not be sent. Try again later"
) )
found_user.password_token = forgot_key found_user.password_token = forgot_key
found_user.password_token_is_valid = str(system_arrow.shift(days=1)) found_user.password_token_is_valid = str(system_arrow.shift(days=1))
found_user.save() found_user.save()
@ -653,40 +623,41 @@ class AuthenticationForgotPasswordEventMethods(MethodToEvent):
class AuthenticationDownloadAvatarEventMethods(MethodToEvent): class AuthenticationDownloadAvatarEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "LOGIN"
event_description = "Download avatar icon and profile info of user"
event_category = "AUTHENTICATION"
__event_keys__ = { __event_keys__ = {
"c140cd5f-307f-4046-a93e-3ade032a57a7": "authentication_download_avatar", "c140cd5f-307f-4046-a93e-3ade032a57a7": "authentication_download_avatar",
} }
@classmethod @classmethod
def authentication_download_avatar( def authentication_download_avatar(
cls, request: Request, data: Forgot, token_dict: dict = None cls, data: Forgot
): ):
found_user = Users.check_user_exits( if found_user := Users.check_user_exits(
access_key=data.access_key, domain=data.domain access_key=data.access_key, domain=data.domain
) ):
return JSONResponse( expired_starts = str(system_arrow.now() - system_arrow.get(str(found_user.expiry_ends)))
content={ expired_int = int(system_arrow.now() - system_arrow.get(str(found_user.expiry_ends)).days)
"completed": True, return JSONResponse(
"message": "Avatar and profile is shared via user credentials", content={
"data": { "completed": True,
"last_seen": str(found_user.last_seen), "message": "Avatar and profile is shared via user credentials",
"avatar": found_user.avatar, "data": {
"remember_me": found_user.remember_me, "last_seen": str(found_user.last_seen),
"expiry_ends": str(found_user.expiry_ends), "avatar": found_user.avatar,
"expired_str": str( "remember_me": found_user.remember_me,
system_arrow.now() "expiry_ends": str(found_user.expiry_ends),
- system_arrow.get(str(found_user.expiry_ends)) "expired_str": expired_starts,
), "expired_int": expired_int,
"expired_int": int( },
(
system_arrow.now()
- system_arrow.get(str(found_user.expiry_ends))
).days
),
}, },
}, status_code=status.HTTP_200_OK,
status_code=status.HTTP_200_OK, )
return JSONResponse(
content={"completed": False, "message": "Invalid data", "data": {}},
status_code=status.HTTP_202_ACCEPTED,
) )
@ -723,3 +694,65 @@ AuthenticationForgotPasswordEventMethod = AuthenticationForgotPasswordEventMetho
AuthenticationDownloadAvatarEventMethod = AuthenticationDownloadAvatarEventMethods( AuthenticationDownloadAvatarEventMethod = AuthenticationDownloadAvatarEventMethods(
action=ActionsSchema(endpoint="/authentication/avatar") action=ActionsSchema(endpoint="/authentication/avatar")
) )
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key=token_user.get("access_input"),
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key=data.access_key,
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=str(DateTimeLocal.now()),
# is_login=False,
# )
# )
# )
# UserLogger.log_error(
# str(
# dict(
# user_id=found_user.id,
# domain=data.domain,
# access_key="via_refresher",
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )
# UserLogger.log_error(
# str(
# dict(
# user_id=selected_user.id,
# domain=data.domain,
# access_key=token_user.get("access_input"),
# agent=request.headers.get("User-Agent", None),
# ip=getattr(request, "remote_addr", None)
# or request.headers.get("X-Forwarded-For", None),
# platform=request.headers.get("Origin", None),
# login_date=datetime.datetime.utcnow().__str__(),
# is_login=False,
# )
# )
# )

View File

@ -29,6 +29,8 @@ from api_objects.auth.token_objects import EmployeeTokenObject, OccupantTokenObj
class BuildListEventMethods(MethodToEvent): class BuildListEventMethods(MethodToEvent):
event_type = "SELECT" event_type = "SELECT"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"68b3b5ed-b74c-4a27-820f-3959214e94e9": "build_list", "68b3b5ed-b74c-4a27-820f-3959214e94e9": "build_list",
@ -60,6 +62,8 @@ class BuildListEventMethods(MethodToEvent):
class BuildCreateEventMethods(MethodToEvent): class BuildCreateEventMethods(MethodToEvent):
event_type = "CREATE" event_type = "CREATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"a2271854-6b90-43da-a440-a62b70d90528": "build_create", "a2271854-6b90-43da-a440-a62b70d90528": "build_create",
"b67ee709-0992-4604-9f90-fb1da10d5cf9": "create_building_employee", "b67ee709-0992-4604-9f90-fb1da10d5cf9": "create_building_employee",
@ -174,16 +178,19 @@ class BuildCreateEventMethods(MethodToEvent):
class BuildUpdateEventMethods(MethodToEvent): class BuildUpdateEventMethods(MethodToEvent):
event_type = "UPDATE" event_type = "UPDATE"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"5ad38a66-1189-451e-babb-77de2d63d757": "build_update", "5ad38a66-1189-451e-babb-77de2d63d757": "build_update",
} }
@classmethod @classmethod
def build_update( def build_update(
cls, cls,
build_uu_id: str, build_uu_id: str,
data: UpdateBuild, data: UpdateBuild,
token_dict: Union[EmployeeTokenObject, OccupantTokenObject] token_dict: Union[EmployeeTokenObject, OccupantTokenObject],
): ):
Build.pre_query = Build.select_action( Build.pre_query = Build.select_action(
employee_id=token_dict.selected_company.employee_id employee_id=token_dict.selected_company.employee_id
@ -213,6 +220,9 @@ class BuildUpdateEventMethods(MethodToEvent):
class BuildPatchEventMethods(MethodToEvent): class BuildPatchEventMethods(MethodToEvent):
event_type = "PATCH" event_type = "PATCH"
event_description = ""
event_category = ""
__event_keys__ = { __event_keys__ = {
"e3876bfe-8847-4dea-ae36-e709f7431930": "build_patch", "e3876bfe-8847-4dea-ae36-e709f7431930": "build_patch",
} }

View File

@ -42,7 +42,8 @@ class EventsListEventMethods(MethodToEvent):
Events.filter_attr = list_options Events.filter_attr = list_options
if isinstance(token_dict, OccupantTokenObject): if isinstance(token_dict, OccupantTokenObject):
occupant_events = Event2Occupant.filter_all( occupant_events = Event2Occupant.filter_all(
Event2Occupant.build_living_space_id == token_dict.selected_occupant.living_space_id Event2Occupant.build_living_space_id
== token_dict.selected_occupant.living_space_id
).data ).data
records = Events.filter_all( records = Events.filter_all(
Events.id.in_([event.event_id for event in occupant_events]) Events.id.in_([event.event_id for event in occupant_events])
@ -260,4 +261,4 @@ EventsListEventMethod = EventsListEventMethods(
# "status": "success", # "status": "success",
# "message": "Event patched successfully.", # "message": "Event patched successfully.",
# "event": event.uu_id, # "event": event.uu_id,
# } # }

View File

@ -2,8 +2,8 @@ services:
commercial_mongo_service: commercial_mongo_service:
container_name: commercial_mongo_service container_name: commercial_mongo_service
# image: "bitnami/mongodb:latest" image: "bitnami/mongodb:latest"
image: "bitnami/mongodb:4.4.1-debian-10-r3" # image: "bitnami/mongodb:4.4.1-debian-10-r3"
networks: networks:
- network_store_services - network_store_services
environment: environment:
@ -61,100 +61,100 @@ services:
- "41575:41575" - "41575:41575"
networks: networks:
- network_store_services - network_store_services
depends_on: # depends_on:
- wag_management_init_service # - wag_management_init_service
- grafana # - grafana
#
# wag_management_service_second:
# container_name: wag_management_service_second
# restart: on-failure
# build:
# context: .
# dockerfile: service_app/Dockerfile
# ports:
# - "41576:41575"
# networks:
# - network_store_services
# depends_on:
# - wag_management_init_service
# - grafana
wag_management_service_second: # wag_management_init_service:
container_name: wag_management_service_second # container_name: wag_management_init_service
restart: on-failure # build:
build: # context: .
context: . # dockerfile: service_app_init/Dockerfile
dockerfile: service_app/Dockerfile # networks:
ports: # - network_store_services
- "41576:41575" # depends_on:
networks: # - postgres_commercial
- network_store_services #
depends_on: # wag_bank_services:
- wag_management_init_service # container_name: wag_bank_services
- grafana # restart: on-failure
# build:
wag_management_init_service: # context: .
container_name: wag_management_init_service # dockerfile: service_app_banks/mailService.Dockerfile
build: # networks:
context: . # - network_store_services
dockerfile: service_app_init/Dockerfile # depends_on:
networks: # - postgres_commercial
- network_store_services # environment:
depends_on: # - DATABASE_URL=postgresql+psycopg2://berkay_wag_user:berkay_wag_user_password@postgres_commercial:5432/wag_database
- postgres_commercial # - PYTHONPATH=/service_app_banks
#
wag_bank_services: # wag_account_services:
container_name: wag_bank_services # container_name: wag_account_services
restart: on-failure # restart: on-failure
build: # build:
context: . # context: .
dockerfile: service_app_banks/mailService.Dockerfile # dockerfile: service_account_records/account.Dockerfile
networks: # networks:
- network_store_services # - network_store_services
depends_on: # depends_on:
- postgres_commercial # - postgres_commercial
environment: # environment:
- DATABASE_URL=postgresql+psycopg2://berkay_wag_user:berkay_wag_user_password@postgres_commercial:5432/wag_database # - DATABASE_URL=postgresql+psycopg2://berkay_wag_user:berkay_wag_user_password@postgres_commercial:5432/wag_database
- PYTHONPATH=/service_app_banks # - PYTHONPATH=/
#
wag_account_services: # prometheus:
container_name: wag_account_services # image: prom/prometheus
restart: on-failure # container_name: prometheus
build: # ports:
context: . # - "9090:9090"
dockerfile: service_account_records/account.Dockerfile # volumes:
networks: # - ./prometheus_data/prometheus.yml:/etc/prometheus/prometheus.yml
- network_store_services # command:
depends_on: # - '--config.file=/etc/prometheus/prometheus.yml'
- postgres_commercial # networks:
environment: # - network_store_services
- DATABASE_URL=postgresql+psycopg2://berkay_wag_user:berkay_wag_user_password@postgres_commercial:5432/wag_database #
- PYTHONPATH=/ # grafana:
# image: grafana/grafana
prometheus: # container_name: grafana
image: prom/prometheus # ports:
container_name: prometheus # - "3030:3000"
ports: # depends_on:
- "9090:9090" # - prometheus
volumes: # networks:
- ./prometheus_data/prometheus.yml:/etc/prometheus/prometheus.yml # - network_store_services
command: # environment:
- '--config.file=/etc/prometheus/prometheus.yml' # - GF_SECURITY_ADMIN_USER=admin
networks: # - GF_SECURITY_ADMIN_PASSWORD=admin
- network_store_services # - GF_USERS_ALLOW_SIGN_UP=false
# - GF_USERS_ALLOW_ORG_CREATE=false
grafana: # volumes:
image: grafana/grafana # - grafana_data:/var/lib/grafana
container_name: grafana #
ports: # wag_management_test_service:
- "3030:3000" # container_name: wag_management_test_service
depends_on: # build:
- prometheus # context: .
networks: # dockerfile: service_app_test/Dockerfile
- network_store_services # networks:
environment: # - network_store_services
- GF_SECURITY_ADMIN_USER=admin # depends_on:
- GF_SECURITY_ADMIN_PASSWORD=admin # - wag_management_init_service
- GF_USERS_ALLOW_SIGN_UP=false
- GF_USERS_ALLOW_ORG_CREATE=false
volumes:
- grafana_data:/var/lib/grafana
wag_management_test_service:
container_name: wag_management_test_service
build:
context: .
dockerfile: service_app_test/Dockerfile
networks:
- network_store_services
depends_on:
- wag_management_init_service
# nginx-proxy-wag: # nginx-proxy-wag:
# container_name: nginx-proxy-wag # container_name: nginx-proxy-wag

View File

@ -97,7 +97,7 @@ def authentication_reset_password(data: Forgot):
def authentication_disconnect_user(request: Request, data: Logout): def authentication_disconnect_user(request: Request, data: Logout):
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
return AuthenticationDisconnectUserEventMethod.authentication_disconnect_user( return AuthenticationDisconnectUserEventMethod.authentication_disconnect_user(
data=data, request=request, token_dict=token_dict data=data, token_dict=token_dict
) )
@ -121,7 +121,7 @@ def authentication_refresher_token(request: Request, data: Remember):
def authentication_forgot_password(request: Request, data: Forgot): def authentication_forgot_password(request: Request, data: Forgot):
token_dict = parse_token_object_to_dict(request=request) token_dict = parse_token_object_to_dict(request=request)
return AuthenticationForgotPasswordEventMethod.authentication_forgot_password( return AuthenticationForgotPasswordEventMethod.authentication_forgot_password(
data=data, request=request, token_dict=token_dict data=data, request=request
) )