- Itens a serem criados:
* Página para cadastro de usuários
* Página principal
* Página de cadastro de perfis de white label
* api com autenticação para listar os whitelabels existentes e suas opções cadastradas
requisitos
antes de mais nada, é de suma importância que todas as alterações sejam versionadas utilizando git com gitlab, que será disponibilizado ao desenvolvedor no inicio do projeto.
== Tela de cadastro de usuários ==
- campos para cadastro de um usuário:
* nome
* login
* senha
* usuário da api (yes ou no)
- os usuários e senhas deverão ser armazenados em um banco de dados do tipo mysql chamado "whitelabel" em uma tabela chamada "users" e a senha deverá ser armazenada utilizando algum tipo de algorítimo de criptografia a escolha do programador (md5, sha, bcrypt, etc), de forma que a senha não fique em hipótese nenhuma em texto plano no banco.
- Estrutura da tabela no banco de dados:
id_user: inteiro, auto incremental.
Name: varchar(100), obrigatório.
Login: varchar(100), obrigatório.
Password: varchar(100), obrigatório.
Api: bool (true, false)
Obs: a flag "Usuário da api" servirá para que esse usuário possa ser usado ou não na requisição à api da ferramenta. Um usuário que possui a flag "Usuário da API" habilitada também poderá acessar o portal assim como os outros usuários que estão com esta flag desativada.
- Deverá ser permitido a criação, edição, visualização e exclusão dos usuários cadastrados, sendo que no ato da exclusão deverá haver uma confirmação para o usuário se ele realmente deseja executar aquela ação, para não correr o risco de exclusões acidentais por parte do usuário.
== Tela de cadastro de perfis de white label ==
- um perfil de white label é uma entidade que possui as seguintes características:
* nome do white label: white label empresax
* nome da empresa. Exemplo: EmpresaX
* Nome do produto: Myproduct
* Uma flag para setar ou não a permissão de editar as logos (por default deverá vir sem permissão para editar as imagens)
* Certificados digitais (com os campos "host","domínio","arquivo .pem","arquivo .key").
* Logomarcas (logos da empresa que utilizará o white label) nas seguintes dimensões:
Ícone da barra de título (32x32)
Logo de fundo nos menus principais (850x526)
Logo da tela de login (3321x866)
Logo da barra superior dentro dos menus e painel principal (300x100)
Obs: das características acima, apenas os itens do certificado digital não são obrigatórios para se criar um perfil de white label, porém caso algum dos itens referentes à certificado sejam preenchidos (host, dominio, upload de um dos arquivos), a tela só deverá permitir o salvamento do whitelabel caso todos os itens da tela de certificados seja preenchida, pois não há sentido em definir um host e domínio sem carregar os certificados, por exemplo.
- Na tela de edição do perfil de white label, deverá ser possível carregar novas imagens para sobrescrever as que existem atualmente.
- As imagens carregadas deverão ser importadas para dentro do diretório a seguir:
/opt/whitelabel/2/images/
lis.ico: png image data, 32 x 36, 8-bit/color rgba, non-interlaced
/opt/whitelabel/2/images/
lispbxlogo.Png: png image data, 850 x 526, 8-bit/color rgba, non-interlaced
/opt/whitelabel/2/images/
logo_horizontal.Png: png image data, 3321 x 866, 8-bit/color rgba, non-interlaced
/opt/whitelabel/2/images/
logo_liberty.Png: png image data, 300 x 100, 8-bit/color rgba, non-interlaced
/opt/whitelabel/2/images/
logo_vertical.Png: png image data, 300 x 100, 8-bit/color rgba, non-interlaced
onde o "2" corresponde ao id do white label cadastrado, que aparece na tabela "whitelabel" do banco de dados. Os nomes das imagens devem ser obrigatoriamente os listados acima, sendo que as imagens
logo_liberty.png e
logo_vertical.png são as mesmas, sendo necessária importar apenas a
logo_liberty.png e copiá-la para
logo_vertical.png.
- No caso de importação de certificados, os mesmos deverão ser armazenados no diretório abaixo:
/opt/whitelabel/2/certs/
localhost.pem
/opt/whitelabel/2/certs/
localhost.key
Onde "2" corresponde ao ID do white label cadastrado, que aparece na tabela "whitelabel" do banco de dados. Os nomes do certificado e da chave deverão obrigatoriamente permanecer sempre os listados acima.
- Estrutura da tabela whitelabel do banco de dados:
id_whitelabel : ID do whitelabel. Tipo: inteiro, autoincremental.
Name: Nome do white label cadastrado.
Tipo: varchar(100). Campo obrigatório.
Company_name: Nome da empresa cadastrada no white label.
Tipo: varchar(100). Campo obrigatório.
Procuct_name: Nome do produto da empresa.
Tipo: varchar(100). Campo obrigatório.
Permit_changes: Flag para sinalizar se é permitida ou não a alteração das logos do white label.
Tipo: bool. Valores possíveis: True, False. Campo obrigatório, com valor default "False".
Path_images: Caminho das imagens armazenadas. Tipo varchar(500). Campo obrigatório.
Path_certs: Caminho dos certificados armazenados. Tipo varchar(500). Campo não obrigatório.
== Tela principal ==
- o acesso a página principal deverá ser feito via login e senha, que serão cadastrados dentro da ferramenta na página de cadastro de usuários.
- Ao logar, deverão aparecer uma tabela com as seguintes colunas na tela principal:
* Data de cadastro do white label.
* Nome do perfil de white label cadastrado.
* Nome da empresa
* Um botão para editar os perfis de white labels existentes, outro para adicionar um novo perfil de white label, outro para excluir algum perfil de white label existente.
* Deverá haver também um botão de seleção em cada perfil de white label (para selecionar múltiplos white labels para excluir por exemplo) e um geral que permita selecionar ou tirar a seleção de todos os perfis de white label de uma vez.
* Ao tentar excluir um perfil de white label, deverá haver uma confirmação para o usuário se ele realmente deseja executar aquela ação, para não correr o risco de exclusões acidentais por parte do usuário.
- A tela principal deverá ter também um mecanismo de busca simples por nome dos whitelabels cadastrados.
== Api para consulta de whitelabels ==
a ferramenta a ser contruída deverá também dar suporte à 2 informações através de requisições rest: a lista de white labels cadastrados e quais as opções configuradas em cada white label. A autenticação será do tipo basic auth, onde o usuário e senha cadastrados deverá ser algum usuário cadastrado e que possua a flag "usuário da API" ativa.
- Requisição que será usada para listar os whitelabels existentes:
curl --request POST \
--url
http://webserver.com.br:8080/api/v1/list_whitelabels \
--header 'content-type: application/json' \
--d '{
"username": "usuario",
"password": "senhadousuario",
}'
Retorno: JSON contendo os nomes dos perfis de white label cadastrados
{"1":"White label EmpresaX","2":"White label EmpresaY"}
- Requisição que será usada para listar as propriedades de um whitelabel (path das imagens, path dos certificados, flag de permissão de alteração)
curl --request POST \
--url
http://webserver.com.br:8080/api/v1/show_config_whitelabel/2 \
--header 'content-type: application/json' \
--d '{
"username": "usuario",
"password": "senhadousuario",
}'
Retorno: json contendo as configurações do white label de id 2, por exemplo:
whitelabel : {
"id":2,
"name": "white label empresay",
"images": ['/opt/whitelabel/2/images/
lis.ico','/opt/whitelabel/images/2/
lispbxlogo.png','/opt/whitelabel/images/2/
logo_horizontal.png','/opt/whitelabel/images/2/
logo_liberty.png','/opt/whitelabel/2/images/
logo_vertical.png'],
"certificates": ['/opt/whitelabel/2/certs/
localhost.pem',''/opt/whitelabel/2/certs/
localhost.key'],
"permite_alteracao_logos":"yes"
}
Prazo de Entrega: Não estabelecido