def cadastrar(): # Cadastro via ajax usuario = Usuario() usuario.nivel = Roles.usuario.value populate_from_request(usuario) if not Usuario.valid_pass(request.form['senha']): return json_response(message='A senha deve ter pelo menos 6 dígitos', data=[]), 400 if usuario.login_exists(usuario.cpf, 0): return json_response(message='O CPF já está em uso, utilize outro', data=[]), 400 usuario.senha = Usuario.hash(request.form['senha']) usuario.data_cadastro = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S") identifier = usuario.insert() if identifier > 0: Logs(0, usuario.identifier, usuario.nome + '(' + usuario.cpf + ')' + ' fez o cadastro', 'usuario', usuario.identifier, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")).insert() return json_response(message='Cadastrado realizado!', data=[usuario], redirect=url_for('usuarios.entrar')), 201 else: return json_response(message='Não foi possível cadastrar sua conta', data=[]), 400
def admin_cadastrar(): """ Cadastro de usuários """ auth = Auth() if auth.is_allowed('cadastra.usuario'): usuario = Usuario() populate_from_request(usuario) if not Usuario.valid_pass(request.form['senha']): return json_response( message='A senha deve ter pelo menos 6 dígitos', data=[]), 400 if usuario.login_exists(usuario.cpf, 0): return json_response(message='O CPF já está em uso, utilize outro', data=[]), 400 usuario.senha = Usuario.hash(request.form['senha']) usuario.data_cadastro = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S") if usuario.insert(): Logs( 0, auth.user.identifier, auth.user.nome + '(' + auth.user.cpf + ')' + ' cadastrou 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 cadastrado', data=[usuario], redirect=url_for('usuarios.admin_lista')) else: return json_response( message='Não foi possível cadastrar o usuário', data=[]), 400 else: return json_response( message='Você não tem permissão para realizar esta ação', data=[]), 403
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