Skip to content

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

Open
@henriquesebastiao

Description

@henriquesebastiao

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions