Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Foram solucionadas as issues #1, #3, #4, #8, #9, #10.
Primeiramente, optou-se por retirar a escrita de notas no arquivo '.notes' em virtude de novas
implementacoes que facilitavam o trabalho.
Para a issue #1 foi utilizado o SGBD Sqlite3. Todas as notas que anteriormente eram escritas em .notes agora estao sendo escritas no banco de dados
'datas.db'
.Da mesma forma, as consultas que antes eram feitas em .notes tambem estao sendo realizadas a partir de agora apenas na base de dados. (e.g /notes/key)
Esse banco de dados segue a seguinte estrutura:
Users e Notes.
- Users:
Id, Name, Password
- Notes:
Id, Key, Note, CodeUser(chave estrangeira para Id em Users)
Para a issue #3 foi criado o /edit_note em que é exibido na página web os registros nos quais o usuario é dono e também 3 campos:
Name, Content, Line.
Assim, o usuario ve quais dados seus existem na base e qual deles, especificamente, deseja alterar. Basta fornecer nos campos as informações corretamente
e a operação de edição da nota é efetivada. Caso tente mudar algo que nao seja dono, a pagina fica em branco e nao acontece nada.
Para a issue #4 foi usada uma pequena REGEX para casar com os numeros colocados após '/notes' (e.g /notes/2). Obs: começando do ID = 0.
Ao ser detectado o numero, é feita a pesquisado no banco de dados e, caso haja resultado, é exibido na página. Caso nao exista nada, a resposta do servidor é
Error 404 - Não Encontrado.
A issue #8 (já implementada) sofreu mudança na forma de escrita. Agora tudo está sendo escrito somente no banco de dados.
Antes de falar da issue #9 é necessario resolver a issue #10.
A issue #10 foi resolvida com um mecanismo de autenticação simples. Inicialmente não há usuário algum cadastrado; então foi criado o '/register' para o usuŕio fornecer
seu nick e senha de mode que seja feita a seguinte sequencia: Apenas é feita a união do 'username' e 'password' do usuario no formato 'username:password'
e então isto é codificado com o base64, sendo esta codificação salva no campo Password da tabela Users no banco de dados. O usuário acessa '/auth', insere seu nick de
usuario e senha e então a codificação gerada é comparada a já existente no banco de dados. Obviamente, caso seja igual, o usuario fica autenticado e variaveis no programa armazenam
seu Username e Id para que mecanismos de consulta e escrita no programa sejam feitos de maneira certa. Caso contrário, a resposta do servidor é
Error 401 - Não Autorizado.
Sendo assim, para a issue #9, o UID (User Id) salvo na autenticação é utilizado nas buscas e escritas feitas no programa, de modo que aonde quer que o usuário procure dados ou deseje
escrever dados, seu UID fica sendo comparado e esta verificação se dá graças à relação entre as colunas
'CodeUser' de 'Notes' e 'Id' de 'User'
por meio de uma chave estrangeira.Alguns outros pontos importantes foram implementados como a verificação do tipo de conteúdo enviado para o servidor. Caso não corresponda ao que o servidor suporte, é
dado como resposta
501 - Não Implementado.
Além da inserção de métodos para substituir ';' por espaços em branco em sentenças na hora de se pôr informação no banco de dados. Sem isso, ficam brechas expostas para SQLInjection.