Eu procurei um exemplo nos cursos aqui da alura e nao achei, pode ate ter. Para facilitar o entendimento vou usar uma aplicacao real, o ifood. Ou o nubank em homenagem a formacao flutter que estou fazendo.
Nessas aplicacoes, eu me cadastro como cliente e tenho o meu usuario. em relacao as credenciais de acesso não sei onde elas ficam se na tabela cliente ou na tabela usuario. Ate aqui ok, todos os cursos que tratam login atendem esse requisito. Porem um entregador tambem é usuario do ifood e se cadastra, o dono do restaurante tambem se cadastra e gerencia os seus produtos, o integrador do ifood le views de banco de dados dos restaurantes e tambem pode ser considerado um usuario. No nubank acredito que os funcionarios do banco tambem sao usuarios.
Nesse cenario, como fica o modelo de credenciais de acesso? eu teria um usuario comum, com um relacionamentos para cada trabela um atributo booleano para cada entidade? isCliente, isEntregador, isFuncionario, isFornecedor, ... ? e as permissoes definidas para o usuario?
Cada pepel tem uma api como micro servico para integrar com o core da aplicacao? eu faco os findByLogin() em cascata em todas as tabelas para tentar encontrar o usuario? implementacoes posso ter varias. a questao seria, qual a boa pratica?