Ovidio, não trave por ip, se em um futuro o admin de redes mudar, ai você perdeu tempo no seu projeto.
Eu tenho uma situação semelhante.
Meu projeto tem uma área pública, uma interna e uma externa, identificados assim:
pública: Clientes, parceiros ou qualquer um que não tem um login.
interna: Funcionários da empresa com login.
externa: Parceiros da empresa com login.
Então, a parte pública é livre de autenticação, sendo assim, não preciso me preocupar.
Nesta parte, tem o form de login, e aqui acontece minha divisão.
Quando o cara loga, eu vejo se ele é interno ou externo pelo login, ou seja, no cadastro do usuário, tenho um campo (tipo char(1), ou em java String tipo) que me diz o que o cara é.
Ai de acordo com o tipo, eu direciono ele para uma parte do sistema.
Inclusive nesse mesmo sistema, havia um módulo de callcenter, e com isso, eu criei mais um tipo. No momento do login, fico mais ou menos assim:
def u = Usuario.findBy....
if (u!=null){
if (u.tipo.equals("FC"){
redirect ....
}else if (u.tipo.equals("AC")){
redirect...
}else{...}
}
simples assim.