def update_changes(usuario: Usuario, data) -> None: usuario.login = data.get('login' , usuario.login) usuario.nome = data.get('nome' , usuario.nome) if data.get('senha', 0) != 0: usuario.senha = data['senha'] usuario.ativo = data.get('ativo', usuario.ativo) db.session.commit()
def save_new_user(data: Dict[str, str]) -> Tuple[Dict[str, str], int]: usuario = Usuario.query.filter( Usuario.login == data['login'] ).first() perfil = Perfil.query.filter_by(id=data['perfil_id'], ativo=True).first() if not perfil: response_object = { 'status': 'Falha', 'message': 'Perfil não encontrado ou inativo.', } return response_object, 404 if not usuario: novo_usuario = Usuario( login=data['login'], senha=data['senha'], nome=data['nome'], perfil_id=data['perfil_id'], ) save_changes(novo_usuario) response_object = { 'status': 'Sucesso', 'message': 'Usuário registrado com sucesso.', 'id' : novo_usuario.id, } return response_object, 201 # return generate_token(new_user) else: response_object = { 'status': 'Falha', 'message': 'Login ou nome já existente.', } return response_object, 409
def login_user(data: Dict[str, str]) -> Tuple[Dict[str, str], int]: try: # fetch the usuario data usuario = Usuario.query.filter_by(login=data.get('login')).first() if usuario and usuario.check_senha( data.get('senha')) and usuario.ativo == True: auth_token = Usuario.encode_auth_token(usuario.id, usuario.nome, usuario.login, usuario.perfil.nome) if auth_token: response_object = { 'status': 'Sucesso', 'message': 'Usuário logado com sucesso.', 'Authorization': auth_token } return response_object, 200 else: response_object = { 'status': 'Falha', 'message': 'Login ou senha incorretos.' } return response_object, 401 except Exception as e: print(e) response_object = { 'status': 'Falha', 'message': 'Tente novamente.' } return response_object, 500
def get_logged_in_user(new_request): # get the auth token auth_token = new_request.headers.get('Authorization') if auth_token: auth_jwt = auth_token.split()[1] resp = Usuario.decode_auth_token(auth_jwt) if not isinstance(resp, str): usuario = Usuario.query.filter_by(id=resp).first() response_object = { 'status': 'Sucesso', 'data': { 'nome': usuario.nome, 'uid': usuario.id, 'login': usuario.login, 'perfil': usuario.perfil.nome } } return response_object, 200 response_object = {'status': 'Falha', 'message': resp} return response_object, 401 else: response_object = { 'status': 'Falha', 'message': 'Forneça um token de autenticação válido.' } return response_object, 401
def generate_token(user: Usuario) -> Tuple[Dict[str, str], int]: try: # generate the auth token auth_token = Usuario.encode_auth_token(usuario.id, usuario.nome, usuario.login, usurio.perfil.nome) response_object = { 'status': 'Sucesso', 'message': 'Registrado com sucesso.', 'Authorization': auth_token.decode() } return response_object, 201 except Exception as e: response_object = { 'status': 'Falha', 'message': 'Ocorreu um erro. Por favor tente novamente.' } return response_object, 401
def logout_user(data: str) -> Tuple[Dict[str, str], int]: if data: auth_token = data.split(" ")[1] else: auth_token = '' if auth_token: resp = Usuario.decode_auth_token(auth_token) if not isinstance(resp, str): # mark the token as blacklisted return save_token(token=auth_token) else: response_object = {'status': 'Falha', 'message': resp} return response_object, 401 else: response_object = { 'status': 'Falha', 'message': 'Forneça um token de autenticação válido.' } return response_object, 403
def guardar_nuevo_usuario(usuario): user = Usuario.query.filter_by(email=usuario['email']).first() if not user: clave = clave_aleatoria() if enviar_correo(usuario['email'], clave, usuario['rol_usuario_id']): nuevo_usuario = Usuario(email=usuario['email'], hora_registro=datetime.datetime.now(), rol_usuario=usuario['rol_usuario_id'], clave=clave, activo=True, entrenamiento=usuario['entrenamiento']) guardar_cambios(nuevo_usuario) mensaje = respuesta(True, 'Usuario registrado exitosamente') return mensaje, 201 else: mensaje = respuesta( False, 'Error al enviar correo. Pongase en contacto con soporte') return mensaje, 409 else: mensaje = respuesta(False, 'El usuario ya existe, por favor inicie sesion') return mensaje, 409
def update_password(usuario: Usuario, newpassword: str) -> None: if newpassword.__len__() >3: usuario.senha = newpassword db.session.commit()