Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Creative commons Attribution-NonCommercial license. http://creativecommons.org/licenses/by-nc/2.5/au/deed.en_GB NO WARRANTY IS GIVEN OR IMPLIED, USE AT YOUR OWN RISK.
 
 package base.jee.api.sql.util;
 
import static base.jee.api.sql.util.Log.log;
import static base.jee.api.sql.util.PersonTokenRoleString.personTokenRoleString;
public class CreateSession {
	public static String createSession(Connection cUUID personUuidString currentTokenString ipthrows SQLException {
		PreparedStatement s = null;
		ResultSet r = null;
		String token = null;
		try {
			// If the user/password details match the existing cookie (ie already signed in), we
			// don't need to generate and store a new cookie.
			if(currentToken != null) {
				s = c.prepareStatement("select person_uuid from token where token=?");
				s.setString(1, currentToken);
				r = s.executeQuery();
				if(r.next()) {
					if(personUuid.equals(r.getString(1))) {
						log(c"FINER", User.userWithUuidAndIp(personUuidip), "Creating a session for a person who already has a session.");
						return currentToken// Re-use the existing session cookie and data record
else {
						log(c"FINER", User.userWithUuidAndIp(personUuidip), "Creating session for a person who already has a session authenticated against a different person.");
					}
				}
				r.close();
				r = null;
				s.close();
				s = null;
			}
			s = c.prepareStatement("insert into token (person_uuid,token, roles, expiry, created) values(?,?,?,(select value from setting where name='session.expiry')+?,?)");
			s.setString(1, personUuid.toString());
			s.setString(2, token);
			s.setString(3, personTokenRoleString(cpersonUuid));
			s.setLong(4, (new Date()).getTime()/1000);
			s.setLong(5, (new Date()).getTime()/1000);
			// Only output half of the token, to prevent extraction of token in string templates
			String tkn = token.substring(0, token.length()/2) + "...";
			log(c"DEBUG", User.userWithUuidAndIp(personUuidip), "Created session with token \"" + tkn + "\".");
finally {
			if(r != null) { try { r.close(); } catch(SQLException e) {} }
			if(s != null) { try { s.close(); } catch(SQLException e) {} }
		}
		return token;
	}
New to GrepCode? Check out our FAQ X