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

Adicionar autenticação e validação das regras de negócio nas rotas. #75

Open
5 tasks
Tracked by #71
henriquesebastiao opened this issue Nov 15, 2024 · 0 comments
Open
5 tasks
Tracked by #71

Comments

@henriquesebastiao
Copy link
Owner

henriquesebastiao commented Nov 15, 2024

Descrição

Quando um usuário interagir com determinado endpoint, se faz necessário validar se o mesmo é autorizado a realizar essa ação. Por exemplo, um usuário que é apenas o funcionário de uma fazendeiro não deveria ter autorização para cadastrar uma nova fazenda, a menos que ele tenha um cargo que possa desempenhar tal atividade, como no caso de um gerente, talvez.

Cabe a regra de negócio, garantir que ninguém interaja com um dado que não lhe pertença 🔒.

Verificações a serem feitas

Note

Um usuário será permitido a realizar determinada ação, caso desempenhe um cargo que lhe permita isto e caso esteja relacionado com a propriedade com a qual está interagindo. Por exemplo, um gerente pode cadastrar novos funcionários na fazenda, para não sobrecarregar o fazendeiro com esta atividade, porém ele não pode cadastrar novos funcionário em uma fazenda que não pertença a seu patrão.

Cargos

Ao cadastrar um novo registro na tabela employment, inicialmente podemos escolher entre três opções de cargos para um usuário, abaixo está descrito quais atividades cada usuário pode exercer.

  • farmer - Pode interagir com todos os endpoints da aplicação, mas podendo alterar apenas registros relacionados à suas propriedades.
  • manager - Tem os mesmos poderes de farmer, a não ser por não pode interagir com as rotas /farmer/*.
  • cowboy - Pode interagir apenas com as rotas relacionadas a batch, animal e batch_log, visando realizar apenas serviços não administrativos, mas sim relacionados aos animais dentro da fazenda.

Restrições

  • Somente pode ser possível adicionar um registro na tabela farmer caso o usuário corrente tenha manager_id nulo e não haja um registro na tabela employment com user_id igual ao seu id. Um fazendeiro não pode criar um novo registro de fazendeiro.
  • Um usuário que tenha o campo manager_id não nulo e não tenha o cargo manager, não deve ser autorizado a cadastrar novas fazendas.
  • Só podem adicionar novos registros a tabela employment, usuários com cargos farmer ou manager, ou ainda usuários que tenham manager_id nulo.
  • Somente podem adicionar novos usuários funcionários, pessoas com cargos farmer ou manager.
  • Qualquer cargo pode adicionar registros às seguintes tabelas:
    • batch
    • animal
    • batch_log

Nota

Assim como o Roadmap, isto não é provisório. Novas demandas de regras de negócio podem ser adicionadas (e provavelmente serão) com o tempo, e regras que idealizei inicialmente podem ser desconsideradas caso se mostrem confusas.

@henriquesebastiao henriquesebastiao mentioned this issue Nov 15, 2024
10 tasks
@henriquesebastiao henriquesebastiao pinned this issue Nov 15, 2024
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

No branches or pull requests

1 participant