|
| 1 | +from user_auth_service.schema.actions import CreateNewUser, CreateNewUserResult, CreateNewUserSuccess, CreateNewUserFailure |
| 2 | +from user_auth_service.schema.entites import UserDetailsStorable, UserDisplay |
| 3 | +from common.types import Engine |
| 4 | +from passlib.context import CryptContext |
| 5 | + |
| 6 | +argon2_context = CryptContext(schemes=['argon2'], depricated='auto') |
| 7 | + |
| 8 | +def password_hash(password: str): |
| 9 | + return argon2_context.hash(password) |
| 10 | + |
| 11 | + |
| 12 | +async def create_new_user(engine: Engine, params: CreateNewUser) -> CreateNewUserResult: |
| 13 | + """ |
| 14 | + User Creation. |
| 15 | + """ |
| 16 | + hash_password = password_hash(params.password) |
| 17 | + |
| 18 | + new_user = UserDetailsStorable( |
| 19 | + email_address = params.email_address, |
| 20 | + full_name = params.full_name, |
| 21 | + phone_number = params.phone_number, |
| 22 | + password_hash_string = hash_password |
| 23 | + ) |
| 24 | + try: |
| 25 | + await engine.save(new_user) |
| 26 | + user_display = UserDisplay( |
| 27 | + email_address = params.email_address, |
| 28 | + full_name = params.full_name, |
| 29 | + phone_number = params.phone_number |
| 30 | + ) |
| 31 | + return CreateNewUserSuccess(created=user_display) |
| 32 | + except: |
| 33 | + return CreateNewUserFailure( |
| 34 | + Failed = 'Unable to create new user.' |
| 35 | + ) |
0 commit comments