// Path: src/main/java/br/com/soapboxrace/jaxb/UserInfoType.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "UserInfoType", propOrder = { "defaultPersonaIdx", "personas", "user" })
// @XmlRootElement(name = "UserInfo")
// public class UserInfoType {
// 
// 	protected int defaultPersonaIdx;
// 	@XmlElement(required = true)
// 	protected PersonasType personas;
// 	@XmlElement(required = true)
// 	protected UserType user;
// 
// 	public int getDefaultPersonaIdx() {
// 		return defaultPersonaIdx;
// 	}
// 
// 	public void setDefaultPersonaIdx(int defaultPersonaIdx) {
// 		this.defaultPersonaIdx = defaultPersonaIdx;
// 	}
// 
// 	public PersonasType getPersonas() {
// 		return personas;
// 	}
// 
// 	public void setPersonas(PersonasType personas) {
// 		this.personas = personas;
// 	}
// 
// 	public UserType getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(UserType user) {
// 		this.user = user;
// 	}
// 
// }
// 
// Path: src/main/java/br/com/soapboxrace/xmpp/IXmppSender.java
// public interface IXmppSender {
// 
// 	public void send(String msg, Long to);
// 
// 	public void send(Object object, Long to);
// 
// 	public void createUpdatePersona(Long id, String password);
// 
// }


import br.com.soapboxrace.bo.UserBO;
import br.com.soapboxrace.definition.ServerExceptions.EngineException;
import br.com.soapboxrace.jaxb.UserInfoType;
import br.com.soapboxrace.jaxb.util.MarshalXML;
import br.com.soapboxrace.xmpp.IXmppSender;
import br.com.soapboxrace.xmpp.XmppFactory;
package br.com.soapboxrace.engine;


public class User extends Router {

	private UserBO userBO = new UserBO();

	public String getPermanentSession() throws EngineException {
		Long userId = Long.valueOf(getHeader("userId"));
		checkSecurityToken();
		// first 16 token chars used to login xmpp server
		String tokenText = "1234567890123456" + shuffleString(getSecureRandomText());
		UserInfoType userInfo = userBO.getPermanentSession(userId, tokenText);
		setSessionEntry("SecurityToken", tokenText);
		return MarshalXML.marshal(userInfo);
	}

	public String secureLogout() throws EngineException {
		checkSecurityToken();
		removeSessionEntry(Long.valueOf(getParam("userId")));
		return "";
	}

	public String secureLoginPersona() throws EngineException {
		checkSecurityToken();
		setSessionEntry("PersonaId", Long.valueOf(getParam("personaId")));
// Path: src/main/java/br/com/soapboxrace/jaxb/UserInfoType.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "UserInfoType", propOrder = { "defaultPersonaIdx", "personas", "user" })
// @XmlRootElement(name = "UserInfo")
// public class UserInfoType {
// 
// 	protected int defaultPersonaIdx;
// 	@XmlElement(required = true)
// 	protected PersonasType personas;
// 	@XmlElement(required = true)
// 	protected UserType user;
// 
// 	public int getDefaultPersonaIdx() {
// 		return defaultPersonaIdx;
// 	}
// 
// 	public void setDefaultPersonaIdx(int defaultPersonaIdx) {
// 		this.defaultPersonaIdx = defaultPersonaIdx;
// 	}
// 
// 	public PersonasType getPersonas() {
// 		return personas;
// 	}
// 
// 	public void setPersonas(PersonasType personas) {
// 		this.personas = personas;
// 	}
// 
// 	public UserType getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(UserType user) {
// 		this.user = user;
// 	}
// 
// }
// 
// Path: src/main/java/br/com/soapboxrace/xmpp/IXmppSender.java
// public interface IXmppSender {
// 
// 	public void send(String msg, Long to);
// 
// 	public void send(Object object, Long to);
// 
// 	public void createUpdatePersona(Long id, String password);
// 
// }


// Path: src/main/java/br/com/soapboxrace/engine/User.java
import br.com.soapboxrace.bo.UserBO;
import br.com.soapboxrace.definition.ServerExceptions.EngineException;
import br.com.soapboxrace.jaxb.UserInfoType;
import br.com.soapboxrace.jaxb.util.MarshalXML;
import br.com.soapboxrace.xmpp.IXmppSender;
import br.com.soapboxrace.xmpp.XmppFactory;

package br.com.soapboxrace.engine;


public class User extends Router {

	private UserBO userBO = new UserBO();

	public String getPermanentSession() throws EngineException {
		Long userId = Long.valueOf(getHeader("userId"));
		checkSecurityToken();
		// first 16 token chars used to login xmpp server
		String tokenText = "1234567890123456" + shuffleString(getSecureRandomText());
		UserInfoType userInfo = userBO.getPermanentSession(userId, tokenText);
		setSessionEntry("SecurityToken", tokenText);
		return MarshalXML.marshal(userInfo);
	}

	public String secureLogout() throws EngineException {
		checkSecurityToken();
		removeSessionEntry(Long.valueOf(getParam("userId")));
		return "";
	}

	public String secureLoginPersona() throws EngineException {
		checkSecurityToken();
		setSessionEntry("PersonaId", Long.valueOf(getParam("personaId")));
		IXmppSender xmppSenderInstance = XmppFactory.getXmppSenderInstance(Session.getXmppServerType());