Description
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 defarmer
, a não ser por não pode interagir com as rotas/farmer/*
.cowboy
- Pode interagir apenas com as rotas relacionadas abatch
,animal
ebatch_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 tenhamanager_id
nulo e não haja um registro na tabelaemployment
comuser_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 cargomanager
, não deve ser autorizado a cadastrar novas fazendas. - Só podem adicionar novos registros a tabela
employment
, usuários com cargosfarmer
oumanager
, ou ainda usuários que tenhammanager_id
nulo. - Somente podem adicionar novos usuários funcionários, pessoas com cargos
farmer
oumanager
. - 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.