Example #1
0
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
Example #2
0
def admin_cadastro():
    """ Página para cadastro de usuários """
    usuario = Usuario()
    usuario.nivel = Roles.usuario.value
    if Auth().is_allowed('cadastra.usuario', usuario):
        return render_template('admin_form_usuario.html', usuario=usuario)
    else:
        return admin_403_response()
Example #3
0
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