I removed the UserPeer class in TR.props that you mentioned. The call
still fails.
I have attached the MySQL log at the bottom of this and all the select
fields are filled in as you suggest.
But I am still uncertain of how to proceed further.
The following is the trace back from my failed call to
getAuthenticatedUser()
mycode.java
import org.apache.turbine.om.security.User;
User AuthUser = TurbineSecurity.getAuthenticatedUser("user", "password");
thrown from TorqueUserManager at accountExists(user.getName());
public boolean accountExists(User user)
throws DataBackendException
{
return accountExists(user.getName());
}
thrown from TorqueUserManager at if(!accountExists(user))
public void authenticate(User user, String password)
throws PasswordMismatchException, UnknownEntityException,
DataBackendException
{
if (!accountExists(user))
{
throw new UnknownEntityException("The account '" +
user.getName() + "' does
not exist");
}
// log.debug("Supplied Pass: " + password);
// log.debug("User Pass: " + user.getPassword());
/*
* Unix crypt needs the existing, encrypted password text as
* salt for checking the supplied password. So we supply it
* into the checkPassword routine
*/
if (!TurbineSecurity.checkPassword(password, user.getPassword()))
{
throw new PasswordMismatchException("The passwords do not
match");
}
}
thrown from TorqueUserManager at authenticate(userName)
public User retrieve(String userName, String password)
throws PasswordMismatchException, UnknownEntityException,
DataBackendException
{
User user = retrieve(userName);
authenticate(user, password);
return user;
}
thrown from the TurbineSecurity at getUserManager().retrieve(username,
password)
public User getAuthenticatedUser(String username, String password)
throws DataBackendException, UnknownEntityException,
PasswordMismatchException
{
return getUserManager().retrieve(username, password);
}
thrown from TurbineSecurity at
getService().getAuthenticatedUser(username, password)
public static User getAuthenticatedUser(String username, String password)
throws DataBackendException, UnknownEntityException,
PasswordMismatchException
{
return getService().getAuthenticatedUser(username, password);
}
I believe that I am having a problem with retrieve or retrieveList
(neither of which thow an error) in TorqueUserManager
public User retrieve(String userName)
throws UnknownEntityException, DataBackendException
{
Criteria criteria = new Criteria();
criteria.add(UserPeerManager.getNameColumn(), userName);
List users = retrieveList(criteria);
if (users.size() > 1)
{
throw new DataBackendException(
"Multiple Users with same username '" + userName + "'");
}
if (users.size() == 1)
{
return (User) users.get(0);
}
throw new UnknownEntityException("Unknown user '" + userName +
"'");
}
public List retrieveList(Object criteria)
throws DataBackendException
{
if (criteria instanceof Criteria)
{
Criteria c = (Criteria)criteria;
for (Iterator keys = c.keySet().iterator(); keys.hasNext(); )
{
String key = (String) keys.next();
// set the table name for all attached criterion
Criteria.Criterion[] criterion =
c.getCriterion(key).getAttachedCriterion();
for (int i = 0; i < criterion.length; i++)
{
if (StringUtils.isEmpty(criterion[i].getTable()))
{
criterion[i].setTable(UserPeerManager.getTableName());
}
}
}
List users = null;
try
{
users = UserPeerManager.doSelect(c);
}
catch (Exception e)
{
throw new DataBackendException("Failed to retrieve
users", e);
}
return users;
}
If I execute the following code, which is based on these routines:
List users = null;
if(TurbineSecurity.accountExists("user"))
{
log.trace("isAuthorized(PipelineData)
TurbineSecurity.acccountExists=true");
Criteria criteria = new Criteria();
criteria.add(UserPeerManager.getNameColumn(), "user");
//criteria.addSelectColumn("*");
log.trace("isAuthorized(PipelineData)
criteria.getDbName()="+criteria.getDbName()+",
getTable="+criteria.getSelectColumns());
log.trace("isAuthorized(PipelineData)
keyset="+criteria.keySet().toString());
String query = BasePeer.createQueryString(criteria);
log.trace("isAuthorized(PipelineData) query="+query);
for(Iterator keys =
criteria.keySet().iterator();keys.hasNext();)
{
String key = (String) keys.next();
log.trace("isAuthorized(PipelineData) key="+key+",
Table="+UserPeerManager.getTableName());
Criteria.Criterion[] criterion =
criteria.getCriterion(key).getAttachedCriterion();
log.trace("isAuthorized(PipelineData)
criterion.length="+criterion.length);
for(int i=0; i < criterion.length; i++)
{
if(StringUtils.isEmpty(criterion[i].getTable()))
{
log.trace("isAuthorized(PipelineData) setting Table["+i+"]");
criterion[i].setTable(UserPeerManager.getTableName());
}
}
users = UserPeerManager.doSelect(criteria);
log.trace("isAuthorized(PipelineData)
UserPeerManager.doSelect(Criteria) size="+users.size());
log.trace("isAuthorized(PipelineData)
UserPeerManager.doSelect(Criteria) users.toString()="+users.toString());
for(Iterator userx = users.iterator();
userx.hasNext(); )
{
User usr = (User)userx.next();
if(usr != null)
{
log.trace("isAuthorized(PipelineData) usr.next()="+usr.toString());
log.trace("isAuthorized(PipelineData)
usr="+usr.getId()+",N="+usr.getName()+", P="+usr.getPassword());
}
else
{
log.trace("isAuthorized(PipelineData) usr==null");
}
}
}
I get the following tracelog:
isAuthorized(PipelineData) TurbineSecurity.acccountExists=true
isAuthorized(PipelineData) criteria.getDbName()=TurbineTest, getTable=[]
isAuthorized(PipelineData) keyset=[TURBINE_USER.LOGIN_NAME]
isAuthorized(PipelineData) query=SELECT FROM TURBINE_USER WHERE
TURBINE_USER.LOGIN_NAME='user'
isAuthorized(PipelineData) key=TURBINE_USER.LOGIN_NAME, Table=TURBINE_USER
isAuthorized(PipelineData) criterion.length=1
isAuthorized(PipelineData) UserPeerManager.doSelect(Criteria) size=1
isAuthorized(PipelineData) UserPeerManager.doSelect(Criteria)
users.toString()=[null]
isAuthorized(PipelineData) usr==null
isAuthorized(PipelineData) UserPeerManager.doSelect(critera) size=1
isAuthorized(PipelineData) TurbineSecurity.getUser("user") returns null
isAuthorized ERROR=null
org.apache.turbine.services.security.torque.TorqueUserManager:accountExists(84)
org.apache.turbine.services.security.torque.TorqueUserManager:authenticate(349)
org.apache.turbine.services.security.torque.TorqueUserManager:retrieve(269)
org.apache.turbine.services.security.BaseSecurityService:getAuthenticatedUser(684)
org.apache.turbine.services.security.TurbineSecurity:getAuthenticatedUser(263)
com.in10Software.TurbineTest.modules.screens.TurbineTestSecureScreen:isAuthorized(122)
There is no SELECT column list in the generated statement
However, I have probably missed something because I get the following
trace from SQL.
| event_time | user_host |
thread_id | server_id | command_type | argument |
| 2013-04-07 11:34:47 | [Turbine] @ localhost [127.0.0.1] |
235 | 0 | Connect | Turbine@localhost on TurbineTest
| 2013-04-07 11:34:47 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | /* mysql-connector-java-5.1.21 (
Revision: ${bzr.revision-id} ) */SHOW VARIABLES WHERE Variabl
e_name ='language' OR Variable_name = 'net_write_timeout' OR
Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout'
OR Variable_name = 'character_set_client' OR Variable_name = 'chara
cter_set_connection' OR Variable_name = 'character_set' OR Variable_name
= 'character_set_server' OR Variable_name = 'tx_isolation' OR
Variable_name = 'transaction_isolation' OR Variable_name = 'chara
cter_set_results' OR Variable_name = 'timezone' OR Variable_name =
'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name =
'lower_case_table_names' OR Variable_name = 'max_allowed_packet'
OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode'
OR Variable_name = 'query_cache_type' OR Variable_name =
'query_cache_size' OR Variable_name = 'init_connect' |
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | /* mysql-connector-java-5.1.21 (
Revision: ${bzr.revision-id} ) */SELECT @@session.auto_increm
ent_increment
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | SHOW COLLATION
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | SET NAMES latin1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | SET character_set_results = NULL
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
235 | 0 | Quit |
| 2013-04-07 11:34:48 | [Turbine] @ localhost [127.0.0.1] |
236 | 0 | Connect | Turbine@localhost on TurbineTest
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | /* mysql-connector-java-5.1.21 (
Revision: ${bzr.revision-id} ) */SHOW VARIABLES WHERE Variabl
e_name ='language' OR Variable_name = 'net_write_timeout' OR
Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout'
OR Variable_name = 'character_set_client' OR Variable_name = 'chara
cter_set_connection' OR Variable_name = 'character_set' OR Variable_name
= 'character_set_server' OR Variable_name = 'tx_isolation' OR
Variable_name = 'transaction_isolation' OR Variable_name = 'chara
cter_set_results' OR Variable_name = 'timezone' OR Variable_name =
'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name =
'lower_case_table_names' OR Variable_name = 'max_allowed_packet'
OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode'
OR Variable_name = 'query_cache_type' OR Variable_name =
'query_cache_size' OR Variable_name = 'init_connect' |
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | /* mysql-connector-java-5.1.21 (
Revision: ${bzr.revision-id} ) */SELECT @@session.auto_increm
ent_increment
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SHOW COLLATION
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET NAMES latin1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET character_set_results = NULL
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_USER.USER_ID,
TURBINE_USER.LOGIN_NAME, TURBINE_USER.PASSWORD_VALUE, TURBINE_USE
R.FIRST_NAME, TURBINE_USER.LAST_NAME, TURBINE_USER.EMAIL,
TURBINE_USER.CONFIRM_VALUE, TURBINE_USER.MODIFIED, TURBINE_USER.CREATED,
TURBINE_USER.LAST_LOGIN, TURBINE_USER.OBJECTDATA FROM TURBINE_USER WH
ERE TURBINE_USER.LOGIN_NAME='user'
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_USER.USER_ID,
TURBINE_USER.LOGIN_NAME, TURBINE_USER.PASSWORD_VALUE, TURBINE_USE
R.FIRST_NAME, TURBINE_USER.LAST_NAME, TURBINE_USER.EMAIL,
TURBINE_USER.CONFIRM_VALUE, TURBINE_USER.MODIFIED, TURBINE_USER.CREATED,
TURBINE_USER.LAST_LOGIN, TURBINE_USER.OBJECTDATA FROM TURBINE_USER WH
ERE TURBINE_USER.LOGIN_NAME='user'
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_USER.USER_ID,
TURBINE_USER.LOGIN_NAME, TURBINE_USER.PASSWORD_VALUE, TURBINE_USE
R.FIRST_NAME, TURBINE_USER.LAST_NAME, TURBINE_USER.EMAIL,
TURBINE_USER.CONFIRM_VALUE, TURBINE_USER.MODIFIED, TURBINE_USER.CREATED,
TURBINE_USER.LAST_LOGIN, TURBINE_USER.OBJECTDATA FROM TURBINE_USER WH
ERE TURBINE_USER.LOGIN_NAME='user'
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_USER.USER_ID,
TURBINE_USER.LOGIN_NAME, TURBINE_USER.PASSWORD_VALUE, TURBINE_USE
R.FIRST_NAME, TURBINE_USER.LAST_NAME, TURBINE_USER.EMAIL,
TURBINE_USER.CONFIRM_VALUE, TURBINE_USER.MODIFIED, TURBINE_USER.CREATED,
TURBINE_USER.LAST_LOGIN, TURBINE_USER.OBJECTDATA FROM TURBINE_USER WH
ERE TURBINE_USER.LOGIN_NAME='user'
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT Family.Family_ID, Family.Name
FROM Family
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_ROLE.ROLE_ID,
TURBINE_ROLE.ROLE_NAME FROM TURBINE_PERMISSION, TURBINE_ROLE_PERM
ISSION, TURBINE_ROLE WHERE
TURBINE_PERMISSION.PERMISSION_ID=TURBINE_ROLE_PERMISSION.PERMISSION_ID
AND TURBINE_ROLE_PERMISSION.ROLE_ID=TURBINE_ROLE.ROLE_ID
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT 1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SET autocommit=1
| 2013-04-07 11:34:48 | Turbine[Turbine] @ localhost [127.0.0.1] |
236 | 0 | Query | SELECT TURBINE_USER.USER_ID,
TURBINE_USER.LOGIN_NAME, TURBINE_USER.PASSWORD_VALUE, TURBINE_USE
R.FIRST_NAME, TURBINE_USER.LAST_NAME, TURBINE_USER.EMAIL,
TURBINE_USER.CONFIRM_VALUE, TURBINE_USER.MODIFIED, TURBINE_USER.CREATED,
TURBINE_USER.LAST_LOGIN, TURBINE_USER.OBJECTDATA FROM TURBINE_USER WH
ERE TURBINE_USER.LOGIN_NAME='user'
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]