-
Notifications
You must be signed in to change notification settings - Fork 1
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,animalebatch_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
farmercaso o usuário corrente tenhamanager_idnulo e não haja um registro na tabelaemploymentcomuser_idigual ao seu id. Um fazendeiro não pode criar um novo registro de fazendeiro. - Um usuário que tenha o campo
manager_idnã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 cargosfarmeroumanager, ou ainda usuários que tenhammanager_idnulo. - Somente podem adicionar novos usuários funcionários, pessoas com cargos
farmeroumanager. - Qualquer cargo pode adicionar registros às seguintes tabelas:
batchanimalbatch_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.