async def delete_user(user: str): user_exists = get_user(user) if (user_exists != None): eliminar_usuario(user) return {"respuesta": "El usuario y sus registros fueron eliminados"} else: return {"respuesta": "El usuario no existe"}
def authenticate_user(username: str, password: str): user = get_user(username) if not user: return False if not verify_password(password, user.hashed_password): return False return user
async def delete_user(user: str): usuario = get_user(user) if (usuario == None): return {"respuesta": "Lo sentimos, el nombre de usuario no existe"} else: #Borrar usuario delete_user_indb(usuario) return {"respuesta": "El usuario se eliminó correctamente"}
async def autentication(datos_entrada: UserIn): usuario_en_db = get_user(datos_entrada.user) if (usuario_en_db == None): return {"respuesta": False} if (usuario_en_db.password == datos_entrada.password): return {"respuesta": True} else: return {"respuesta": False}
async def create_user(datosRegistro: CreateUserIn): user_exists = get_user(datosRegistro.name) if (user_exists != None): return { "respuesta": "Lo sentimos, el nombre de usuario ya está en uso" } else: datosRegistro = db_user(**datosRegistro.dict(), total=0) create_user_indb(datosRegistro) return { "respuesta": "El usuario se registró correctamente. Por favor ingresa a continuación con tu nuevo usuario y contraseña" }
async def reg_find(user: str): user_exists = get_user(user) if user_exists == None: raise HTTPException(status_code=404, detail="El usuario no está registrado") match_list = find_register(user_exists.user) if len(match_list) > 0: return match_list else: return {"mensaje": "El usuario aún no tiene registros"}
async def delete_reg(datos: deleteRegisterIn): bandera = check_register(datos.user, datos.id_register) user_exists = get_user(datos.user) registro_aux = find_one_register(datos.id_register) if (bandera == True): if registro_aux.category == "ingreso": user_exists.total = user_exists.total - registro_aux.value elif registro_aux.category == "egreso": user_exists.total = user_exists.total + registro_aux.value update_user(user_exists) delete_register(datos.id_register) return {"respuesta": "Registo eliminado con éxito"} else: return { "respuesta": "el usuario " + datos.user + " no tiene registros con id " + str(datos.id_register) }
async def reg_create(register: RegisterIn): user_exist = get_user(register.user) if user_exist == None: raise HTTPException(status_code=404, detail="El usuario no está registrado") if register.category == "ingreso": user_exist.total = user_exist.total + register.value elif register.category == "egreso": user_exist.total = user_exist.total - register.value else: raise HTTPException(status_code=400, detail="Tipo de registro no válido") update_user(user_exist) new_register = bd_register(**register.dict()) new_register = save_register(new_register) register_to_show = RegisterOut(**new_register.dict(), total=user_exist.total) return register_to_show, {"mensaje": "¡Registro exitoso!"}
async def authorize_user(security_scopes: SecurityScopes, token: str = Depends(oauth2_scheme)): if security_scopes.scopes: authenticate_value = f'Bearer scope="{security_scopes.scope_str}"' else: authenticate_value = f"Bearer" credentials_exception = HTTPException( status_code=HTTP_401_UNAUTHORIZED, detail="Could not validate credentials", headers={"WWW-Authenticate": authenticate_value}, ) try: payload = jwt.decode(token, config['AUTH']['secret_key'], algorithms=[config['AUTH']['algorithm']]) username: str = payload.get("sub") if username is None: raise credentials_exception token_scopes = payload.get("scopes", []) token_data = TokenData(scopes=token_scopes, username=username) user = get_user(username=token_data.username) if user is None: raise credentials_exception except (PyJWTError, ValidationError): raise credentials_exception for scope in security_scopes.scopes: if scope not in token_data.scopes: raise HTTPException( status_code=HTTP_401_UNAUTHORIZED, detail="Not enough permissions", headers={"WWW-Authenticate": authenticate_value}, ) return token_data
async def get_total(user: str): usuario = get_user(user) usuario = UserOut(**usuario.dict()) return usuario
async def get_current_user(token_data: TokenData = Depends(authorize_user)): user = users_db.get_user(username=token_data.username) return user