Página 1 de 1

Permissões de alteração da conta pelo cliente após finalizar cadastro

Enviado: 22 Jul 2017, 16:58
por Marcs
Olá pessoal, gostaria de saber se tem como bloquear alterações da conta pelo usuário após a finalização do cadastro. Tipo, após o cliente finalizar o cadastro ele não poderá alterar nome e CPF.

Re: Permissões de alteração da conta pelo cliente após finalizar cadastro

Enviado: 23 Jul 2017, 18:51
por valdeir2000
É possível adicionar isso com uma alteração no código.

Se você quiser fazer manualmente, segue o tutorial abaixo.

Template:
- Abra o arquivo catalog/view/theme/*/template/account/edit.tpl
- Antes de
Código: Selecionar todos
<?php echo $header; ?>
adicione o código abaixo
Código: Selecionar todos
<?php
    $inputsDisabled = [
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
    ];
?>
- Substitua o código
Código: Selecionar todos
<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
por
Código: Selecionar todos
<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled />
<?php } else { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" />
<?php } ?>
'
'
'
Controller:
- Abra o arquivo catalog/controller/account/edit.php
- Procure esse código abaixo
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
- Na linha de baixo (antes de $this->model_account_customer->editCustomer($this->request->post);, adicione o código abaixo.
Código: Selecionar todos
$inputsDisabled = [
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];

foreach($inputsDisabled as $inputId) {
    if (isset($this->request->post[$inputId])) {
        unset($this->request->post[$inputId]);
    }
}
'
'
'
Se você tiver conhecimento básico em PHP e HTML, é possível transformar esse código em um módulo e fazer com outros campos do tipo data, select, checkbox, radio, etc.

Identificando o ID do campo customizado:
Na administração, acesse o menu Customers -> Custom Fields (Clientes -> Personalizar cadastro), na coluna "Id" fica o id do campo customizado.

Ps.: Fiz baseado na versão 2.0.1.1

Re: Permissões de alteração da conta pelo cliente após finalizar cadastro

Enviado: 23 Jul 2017, 20:07
por Marcs
valdeir2000 escreveu: 23 Jul 2017, 18:51 É possível adicionar isso com uma alteração no código.

Se você quiser fazer manualmente, segue o tutorial abaixo.

Template:
- Abra o arquivo catalog/view/theme/*/template/account/edit.tpl
- Antes de
Código: Selecionar todos
<?php echo $header; ?>
adicione o código abaixo
Código: Selecionar todos
<?php
    $inputsDisabled = [
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
    ];
?>
- Substitua o código
Código: Selecionar todos
<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
por
Código: Selecionar todos
<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled />
<?php } else { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" />
<?php } ?>
'
'
'
Controller:
- Abra o arquivo catalog/controller/account/edit.php
- Procure esse código abaixo
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
- Na linha de baixo (antes de $this->model_account_customer->editCustomer($this->request->post);, adicione o código abaixo.
Código: Selecionar todos
$inputsDisabled = [
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];

foreach($inputsDisabled as $inputId) {
    if (isset($this->request->post[$inputId])) {
        unset($this->request->post[$inputId]);
    }
}
'
'
'
Se você tiver conhecimento básico em PHP e HTML, é possível transformar esse código em um módulo e fazer com outros campos do tipo data, select, checkbox, radio, etc.

Identificando o ID do campo customizado:
Na administração, acesse o menu Customers -> Custom Fields (Clientes -> Personalizar cadastro), na coluna "Id" fica o id do campo customizado.

Ps.: Fiz baseado na versão 2.0.1.1
Obrigado pela resposta! Não tenho muito conhecimento em html, minha versão é 2.3.0.2 será que funciona? Isto seria um módulo essencial para o Opencart, pois ajudaria até mesmo na prevenção de possíveis fraudes. O cliente podendo alterar todas as informações inclusive nome e CPF é sopa no mel para fraudadores.

Re: Permissões de alteração da conta pelo cliente após finalizar cadastro

Enviado: 25 Jul 2017, 02:26
por valdeir2000
Não sei te dizer se é possível, mas você pode fazer um backup da loja loja, tentar e postar seu feedback. Isso ajuda os outros usuários e nós podemos adaptar na sua loja.

Só um adendo, ao fazer essas modificações, o ideal é acessar o Painel de Admin > Extensions > Modification > Refresh.

Re: Permissões de alteração da conta pelo cliente após finalizar cadastro

Enviado: 07 Ago 2017, 17:38
por Marcs
valdeir2000 escreveu: 25 Jul 2017, 02:26 Não sei te dizer se é possível, mas você pode fazer um backup da loja loja, tentar e postar seu feedback. Isso ajuda os outros usuários e nós podemos adaptar na sua loja.

Só um adendo, ao fazer essas modificações, o ideal é acessar o Painel de Admin > Extensions > Modification > Refresh.
Desculpe a demora em responder, funcionou na versão 2.3.0.2. Criei um cliente de testes e sua dica funcionou perfeitamente, os campos que fiz o teste foram CPF e data de nascimento. Após implementar suas dicas os campos citados ficam em cinza, impedindo a alteração pelo cliente. Parabéns!!!