getAuthenticatedUser()

Robert Lee <[email protected]> Sun, 07 Apr 2013 11:58:32 -0400
Newsgroups gmane.comp.jakarta.turbine.user
Message-ID <[email protected]>
--------------010400070408020800080008
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

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'


--------------010400070408020800080008
Content-Type: text/plain; charset=us-ascii


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
--------------010400070408020800080008--