/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/services/ServicoSessoes.java |
---|
5,10 → 5,14 |
import pt.estgp.es.exemplos.hibernate.UserSession; |
import pt.estgp.es.exemplos.hibernate.UserSessionImpl; |
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider; |
import pt.estgp.es.exemplos.hibernate.security.logic.NotAuthenticatedException; |
import pt.estgp.es.exemplos.hibernate.security.logic.Transaction; |
import javax.servlet.http.HttpServletRequest; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
public class ServicoSessoes { |
/** |
41,4 → 45,40 |
session = (UserSession) HibernateUtils.narrow(session); |
return session; |
} |
@Transaction |
public UserSession login(String username, String password) throws NotAuthenticatedException { |
List<User> users; |
UserSession persistente; |
String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester(); |
persistente = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie); |
users = HibernateUtils.getCurrentSession() |
.createCriteria(User.class) |
.add(eq("username", username)) |
.add(eq("password", password)).list(); |
if (users==null || users.size()==0) |
throw new NotAuthenticatedException("falha de autenticaĆ§Ć£o"); |
User u= users.get(0); |
persistente.setUser(u); |
return persistente; |
} |
@Transaction |
public void logout() { |
List<User> users; |
UserSession persistente; |
String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester(); |
persistente = (UserSession) HibernateUtils.getCurrentSession().load(UserSession.class,cookie); |
persistente.setUser(null); |
} |
} |
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/services/ServicoPaginas.java |
---|
8,6 → 8,7 |
import pt.estgp.es.exemplos.hibernate.security.logic.PrintParameterExample; |
import pt.estgp.es.exemplos.hibernate.security.logic.Transaction; |
import pt.estgp.es.exemplos.hibernate.web.PaginasServlet; |
import pt.estgp.es.exemplos.hibernate.web.SeccaoServlet; |
import javax.servlet.ServletException; |
34,6 → 35,29 |
HibernateUtils.getCurrentSession().save(seccao); |
} |
@Transaction @IsAuthenticated |
public void criaComponenteTextoService(String idSeccao, String texto, String titulo) |
{ |
try { |
new SeccaoServlet().init(); |
} catch (ServletException e) { |
e.printStackTrace(); |
} |
Seccao seccao = (Seccao) HibernateUtils.getCurrentSession().load(Seccao.class,new Long(idSeccao)); |
long id = seccao.getPagina().getId(); |
ConteudoTexto conteudoTexto= new ConteudoTextoImpl(); |
conteudoTexto.setTitulo(titulo); |
conteudoTexto.setTexto(texto); |
seccao.getConteudoTexto().add(conteudoTexto); |
conteudoTexto.setSeccao(seccao); |
HibernateUtils.getCurrentSession().save(conteudoTexto); |
} |
@Transaction @IsAuthenticated @HasRole(role = "admin") |
public long deleteSeccaoService(String idSeccao) |
{ |
50,6 → 74,18 |
} |
@Transaction @IsAuthenticated |
public long deleteConteudoTextoService(String idConteudoTexto) { |
ConteudoTexto conteudoTexto = (ConteudoTexto) HibernateUtils.getCurrentSession().load(ConteudoTexto.class, new Long(idConteudoTexto)); |
long id = conteudoTexto.getSeccao().getId(); |
conteudoTexto.getSeccao().getConteudoTexto().remove(conteudoTexto); |
conteudoTexto.setSeccao(null); |
HibernateUtils.getCurrentSession().delete(conteudoTexto); |
return id; |
} |
@Transaction @IsAuthenticated |
public Pagina criaPaginaService(String titulo) |
{ |
String cookie = SecurityContextProvider.getInstance().getSecuritySessionContext().getRequester(); |
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginAction.java |
---|
4,6 → 4,8 |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.actions.DispatchAction; |
import pt.estgp.es.exemplos.hibernate.services.ServicoSessoes; |
import pt.estgp.es.exemplos.hibernate.web.SecurityFilter; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
32,5 → 34,23 |
//return mapping.findForward("ok"); |
} |
public ActionForward logout(ActionMapping mapping, |
ActionForm form , |
HttpServletRequest request, |
HttpServletResponse response) |
throws IOException, ServletException |
{ |
LoginForm lf = (LoginForm) form; |
new ServicoSessoes().logout(); |
SecurityFilter.loadSessionProxy(true,request); |
return mapping.getInputForward(); |
//return mapping.findForward("ok"); |
} |
} |
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/login/LoginRest.java |
---|
3,7 → 3,11 |
import org.json.JSONException; |
import org.json.JSONObject; |
import pt.estgp.es.exemplos.hibernate.HibernateUtils; |
import pt.estgp.es.exemplos.hibernate.User; |
import pt.estgp.es.exemplos.hibernate.UserSession; |
import pt.estgp.es.exemplos.hibernate.security.SecurityContextProvider; |
import pt.estgp.es.exemplos.hibernate.security.logic.NotAuthenticatedException; |
import pt.estgp.es.exemplos.hibernate.services.ServicoSessoes; |
import pt.estgp.es.exemplos.hibernate.web.SecurityFilter; |
import pt.estgp.es.exemplos.hibernate.web.UserFilter; |
import pt.estgp.es.exemplos.hibernate.web.rest.AbstractRestServlet; |
12,35 → 16,18 |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.io.IOException; |
import java.util.List; |
import static org.hibernate.criterion.Restrictions.eq; |
public class LoginRest extends AbstractRestServlet |
{ |
public JSONObject login(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException |
{ |
public JSONObject login(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException, NotAuthenticatedException, IOException, ServletException { |
String username = data.getString("username"); |
String password = data.getString("password"); |
HibernateUtils.getCurrentSession().beginTransaction(); |
new ServicoSessoes().login(username,password); |
//TODO COMPLETAR |
UserSession session = null; |
try { |
session = SecurityFilter.loadSessionProxy(req); |
UserSession persistente = (UserSession) HibernateUtils.getCurrentSession().get(UserSession.class,session.getCookie()); |
//persistente.setUser(u); |
} catch (IOException e) { |
e.printStackTrace(); |
} catch (ServletException e) { |
e.printStackTrace(); |
} |
System.out.println(username); |
System.out.println(password); |
JSONObject js = new JSONObject(); |
js.put("result","ok"); |
49,8 → 36,13 |
return js; |
} |
public JSONObject logout(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException |
{ |
public JSONObject logout(JSONObject data, HttpServletRequest req, HttpServletResponse resp) throws JSONException { |
new ServicoSessoes().logout(); |
addMessage("Volte sempre",req); |
JSONObject js = new JSONObject(); |
js.put("result","ok"); |
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/SecurityFilter.java |
---|
23,15 → 23,26 |
@Override |
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { |
HttpServletResponse response = (HttpServletResponse) servletResponse; |
response.setHeader("Cache-Control", "no-cache"); |
loadSessionProxy(servletRequest); |
filterChain.doFilter(servletRequest, response); |
} |
public static UserSession loadSessionProxy(ServletRequest servletRequest) throws IOException, ServletException { |
public static UserSession loadSessionProxy(ServletRequest servletRequest) throws IOException, ServletException |
{ |
return loadSessionProxy(false,servletRequest); |
} |
public static UserSession loadSessionProxy(boolean forceReset, ServletRequest servletRequest) throws IOException, ServletException { |
if(forceReset) |
servletRequest.setAttribute(SESSION_IN_REQUEST_KEY,null); |
UserSession session = (UserSession) servletRequest.getAttribute(SESSION_IN_REQUEST_KEY); |
try { |
/es2018/18497/src/java/pt/estgp/es/exemplos/hibernate/web/rest/AbstractRestServlet.java |
---|
20,8 → 20,6 |
public abstract class AbstractRestServlet extends HttpServlet |
{ |
public void addMessage(String mensagem, HttpServletRequest request) |
{ |
List<String> messages = (List<String>) request.getAttribute("Messages"); |