Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beta #19

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open

Beta #19

wants to merge 4 commits into from

Conversation

i-am-nut
Copy link

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:

  • Possui duas tabelas: Users e Notes.
  • As colunas de cada tabela sao:
    - 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant