def admin_editar(identifier: int): """ Edição de usuários """ usuario = Usuario() usuario.select(identifier) auth = Auth() if usuario.identifier > 0: if auth.is_allowed('edita.usuario', usuario): populate_from_request(usuario) # Apenas usuários que podem editar qualquer usuário (e não apenas si mesmo) podem alterar o nível de perm. if auth.is_allowed('edita.usuario') and 'nivel' in request.form: usuario.nivel = int(request.form['nivel']) # Se estiver alterando o próprio perfil, solicita senha if auth.user.identifier == usuario.identifier: if 'antiga' not in request.form or len( request.form['antiga']) == 0: return json_response(message='Informe sua senha atual', data=[]), 400 elif not Usuario.check_hash(request.form['antiga'], usuario.senha): return json_response(message='Senha atual incorreta', data=[]), 400 if usuario.login_exists(usuario.cpf, usuario.identifier): return json_response( message='O CPF já está em uso, utilize outro', data=[]), 400 # Altera senha apenas se for enviado um valor novo if 'senha' in request.form and len(request.form['senha']) > 0: if not Usuario.valid_pass(request.form['senha']): return json_response( message='A senha deve ter pelo menos 6 dígitos', data=[]), 400 else: usuario.senha = Usuario.hash(request.form['senha']) usuario.update_password() usuario.data_atualizacao = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S") if usuario.update(): Logs( 0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf + ')' + ' editou o usuário ' + usuario.nome + ' (' + usuario.cpf + ')', 'usuario', usuario.identifier, datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S")).insert() return json_response(message='Usuário atualizado!', data=[usuario]) else: return json_response( message='Não foi possível editar o usuário', data=[]), 400 else: return json_response( message='Você não tem permissão para realizar esta ação', data=[]), 403 else: return json_response(message='Usuário não encontrado', data=[]), 404
def login(): cpf = request.form.get('login') senha = request.form.get('senha') usuario = Usuario() usuario.select_by_login(cpf) if usuario.identifier > 0 and Usuario.check_hash(senha, usuario.senha): usuario.permanent = True session['user'] = usuario.serialize() session['time'] = time.time() Logs(0, usuario.identifier, usuario.nome + ' (' + usuario.cpf + ')' + ' entrou no sistema', 'usuario', usuario.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert() return redirect(url_for('home.admin_home')) return redirect(url_for('usuarios.entrar', erro=1))