O spring security pode resolver esse problema?

0 respostas
faeldix

Que dica você daria quando por exemplo um usuário não pode ter acesso a uma objeto X?

Por exemplo:

URL: /aluno/{id}

O usuário que é DIRETOR de uma escola tem acesso ao perfil de todos os alunos da escola que ele é diretor
O usuário que é PROFESSOR de uma escola tem acesso ao perfil de todos os alunos das turmas que ele leciona

então como eu faria isso utilizando o SpringSecurity?


Mais uma coisa

Eu tenho uma tela onde faço busca por alunos, aquela famosa tela onde existem diversos filtros, paginacao e etc.
Ali eu tambem queria fazer algo parecido com o requisito acima (da URL).

Eu iria querer que na tela de busca quando o usuário fosse um professor, na lista aparecesse somente os alunos
das turmas que ele leciona e quando diretor da escola que ele dirige. Eu pensei numa forma interessante, mas não sei
como injetar a implementacao correta no momento da criação do Controller MVC.

Exemplo:

public interface AlunoRepository {
    
    public List<Aluno> getAlunoByParams(Map<String, Object> params, int offset, int size);
    
}

e as implementações

repository especifico pra professor

public class AlunoRepositoryImpl4Professor implements AlunoRepository {

    public List<Aluno> getAlunoByParams(Map<String, Object> params, int offset, int size){
        return // retorna uma lista somente dos alunos das turmas que ele seleciona de acordo com os parametros
    }
    
}

repository especifico pra diretor

public class AlunoRepositoryImpl4Diretor implements AlunoRepository {
    
    public List<Aluno> getAlunoByParams(Map<String, Object> params, int offset, int size){
        return // retorna uma lista somente dos alunos da escola que ele dirige de acordo com os parametros
    }

}

e o Controller

@Controller
public class AlunoController {
    
    @AutoWired
    private AlunoRepository repository; // como injetar o AlunoRepository de acordo com o perfil que esta sendo utilizado aqui?
    
    @GET
    public List<Alunos> query(Map<String, Object> params, int offset, int size){
        return repository.getAlunoByParams(params, offset, size);
    }
    
}

Como injetar o repository correto ali dentro do Controller?

PS - ignorar possiveis erros na escrita do código, servem apenas pra dar ideia do que eu pretendo fazer

Criado 7 de junho de 2016
Respostas 0
Participantes 1