package org.mobicents.ipbx.session.security;
import java.util.List;
import javax.persistence.EntityManager;
import javax.servlet.sip.SipSession;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.mobicents.ipbx.entity.Registration;
import org.mobicents.ipbx.entity.User;
@Name("sipAuthenticator")
@Scope(ScopeType.STATELESS)
public class SimpleSipAuthenticator {
@In EntityManager entityManager;
@In(required=false) SipSession sipSession;
@In(required=false) @Out(required=false) User user;
public Registration authenticate(String uri) {
List<Registration> registrations = entityManager.createQuery(
"SELECT registration FROM Registration registration WHERE registration.uri = :requestUri")
.setParameter("requestUri", uri).getResultList();
if(registrations.size() <= 0) return null;
Registration reg = registrations.get(0);
User user = reg.getUser();
if(user == null) return null;
this.user = user;
sipSession.setAttribute("user", user);
return reg;
}
public Registration findRegistration(String uri) {
List<Registration> registrations = entityManager.createQuery(
"SELECT registration FROM Registration registration WHERE registration.uri = :requestUri")
.setParameter("requestUri", uri).getResultList();
if(registrations.size() <= 0) return null;
Registration reg = registrations.get(0);
return reg;
}
}