Is it possible in CakePHP 1.3 to login a user by indicating the user’s id in the users table?
Now, to do a “manual” login, I do this (which works):
$this->data['User']['username'] = username;
$this->data['User']['password'] = password;
$this->Auth->login($this->data);
I would like to be able to indicate the specific user, for example adding $this->data[‘User’][‘user_id’] before the login() function. (I’ve tried that but it doesn’t work).
The reason I want to do this is because in the users table there are different users records of users who have the same username and password. It seems odd but in my case makes sense, since one same user may create several accounts for different reasons, and he may choose the same username/password.
Any ideas would be much appreciated!
EDIT:
I’m going to give a specific example of what I’m trying to do, maybe it helps to bring some ideas.
Say I have this 2 records in the users table (fields are user_id / username / password / account_id):
- Record 1: 1 / johndoe / password1 / 10
- Record 2: 2 / johndoe / password1 / 15
So this 2 records have same username and password, but different user_id and account_id. When the login is processed, I know what account_id the user has chosen. So I want to log in the corresponding user. So if the user chooses account 15, then logs is, I should be logging in the user with id 2.
However, the way cake’s login works, it always retrieves the first record that matches username / password. In this example, cake would be logging in the user with id 1.
Is there any way I can do what I want?
Doesn’t sound like a very good idea to me, but if you really want/must do it that way, then have a look at
AuthComponent::userScope. You can use it to define additional conditions for authentication lookups, for example:That way authentication would only be successful when username and password match and the users
account_idis15, ie the resulting query would look something like this