Preciso que crie um CRUD (Create, Read, Update, Delete) para gerenciamento de usuários na aplicação

## Banco de dados

As tabelas de usuários já existem no banco de dados, com os seguintes campos:
- id (int, primary key, auto-increment)
- id_conta (int, foreign key)
- id_foto (int, foreign key)
- admin ('S' ou 'N')
- nome (varchar)
- telefone (varchar)
- email (varchar)
- senha (varchar)
- origem_cadastro ('EMAIL','GOOGLE')

Para o campo de origem_cadastro assuma o valor 'EMAIL' como padrão.

Para o campo de admin, assuma o valor 'N' como padrão.

Esses dois campos (origem_cadastro e admin) não devem ser alterados pelo usuário e nem aparecer no formulário de cadastro ou edição.

Para senha, deve conter um campo de confirmação de senha no formulário de cadastro e edição.

Precisa verificar se o email informado já está cadastrado no banco de dados antes de criar ou atualizar o usuário. Caso esteja, deve retornar uma mensagem de erro.

O usuário pode ter uma foto mas é opcional.

Na tela de listagem de usuários, deve ser possível filtrar por nome e email.

Faça um submenu de Usuários em Cadastros
---

## Resposta

CRUD de usuarios implementado e ajustado conforme os padroes do projeto.

Arquivos principais criados/alterados:

- `back/Controllers/UsuariosController.php`
- `front/src/services/usuariosService.ts`
- `front/src/views/app/cadastros/usuarios/UsuariosListView.vue`
- `front/src/views/app/cadastros/usuarios/UsuariosFormView.vue`
- `front/src/views/app/cadastros/usuarios/UsuariosForm.vue`
- `front/src/components/forms/ImageFileInputComponent.vue`
- `front/src/components/forms/MaskInputComponent.vue`
- `front/src/components/forms/PasswordInputComponent.vue`
- `front/src/router/routes.ts`

O menu `Usuarios` ficou como item direto em `Cadastros`, sem submenu aninhado.

Melhorias aplicadas no formulario:

- Foto no inicio do formulario.
- Componente de input file com preview, usando `front/src/assets/images/no_photo.png` quando nao ha foto.
- Foto atual exibida para edicao, permitindo troca ou remocao.
- Nome em `col-12`.
- Email e telefone lado a lado.
- Senha e confirmacao lado a lado.
- Campos de senha com componente proprio em `forms`, usando icone de olho para mostrar/ocultar sem fugir do padrao visual do sistema.
- Validacao de senha segura no frontend e backend: minimo de 8 caracteres, letra maiuscula, letra minuscula, numero e caractere especial.
- Formularios de `cadastros` usam validacao customizada com `novalidate`, borda vermelha (`is-invalid`) e mensagem abaixo do campo, evitando o popup nativo do navegador e permitindo destacar todos os campos invalidos ao mesmo tempo.
- Confirmacao de senha agora tambem fica em erro quando estiver vazia ou divergente, em vez de mostrar erro apenas no campo de senha.
- Produtos tambem recebeu mensagens abaixo de campos numericos opcionais quando retornarem erro ou estiverem invalidos no frontend.
- Ao criar usuario, o backend envia email de ativacao/confirmacao.
- Ao editar usuario e trocar o email, o backend marca o usuario como pendente de confirmacao, limpa a confirmacao anterior, envia email para confirmar o novo email e o frontend exibe aviso na tela.
- A listagem de usuarios nao mostra usuarios `admin = 'S'` nem o usuario logado.
- Telefone do formulario de usuarios usa componente reutilizavel de mascara baseado em PrimeVue `InputMask`, com mascara `(99) 99999-9999`.

Validacoes executadas:

- `php -l back/Controllers/UsuariosController.php`
- `git diff --check`
- `npm run type-check`
- `php -l back/Controllers/UsuariosController.php`

Build frontend ainda pendente de confirmacao para executar `npm run build`.
