Thanks man! This is helpful information for my learning. I ended up going 
to one users table and just assigning roles. I am going to setup ACL 
tonight and learn how it works so wish me luck!

Thanks again!

On Thursday, April 4, 2013 8:03:07 PM UTC-4, cricket wrote:
>
>
>
>
> On Sat, Mar 30, 2013 at 6:14 PM, Nathan Pierce 
> <[email protected]<javascript:>
> > wrote:
>  
>
>> If I post the form, I get sent to /users/login.
>>
>
> You need to tell Auth that this action doesn't require login. Create a 
> beforeFilter in StudentsController:
>
> function beforeFilter() {
>  parent::beforeFilter();
> $this->Auth->allow('register');
> }
>
> Add any other public actions. You can pass any number of strings as 
> params, or an array of strings.
>
> What I'm trying to do is have the form register a user to the *students*table 
> in my database. I will have to have another form on the site to 
>> register *teachers* and I want to keep them in separate databases.
>>
>
> Do you mean separate tables? Or databases?
>  
>
>> Problem is, all of the auth stuff is sent to UserController, which I 
>> don't want to use. I want to pass all Student login form stuff to the 
>> StudentController and all Teacher to the TeacherController.
>>
>> In short, how do I achieve this? How do I force cakephp to use something 
>> other than the UserController to handle everything? If you need further 
>> clarification, please ask.
>>
>> You can tell Auth what its "user model" should be:
>
>
> http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers
>
> You would then include the AuthComponent in both the controllers, and NOT 
> the AppController.
>
> However, I have no idea how/if this would work for your other controllers 
> -- those which both Students and Teachers would be accessing. I wouldn't be 
> surprised if Cake could handle it, but neither would I be optimistic. I 
> suggest saving yourself a lot of pain by creating a User model through 
> which everyone is authenticated and which both Students and Teachers 
> extend. Have a look online for multi-table inheritance in Cake. Or you 
> could even do it without inheritance:
>
> CREATE TABLE users (
>     id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
>     created DATETIME DEFAULT NULL,
>     modified DATETIME DEFAULT NULL,
>  email VARCHAR(64) NULL,
> password CHARACTER(40) NULL,
> model VARCHAR(24) NOT NULL,
>  foreign_key INT(10) UNSIGNED NOT NULL,
>  ...
>  class User extends AppModel
> {
> public $hasOne = array(
> 'Teacher' => array(
>  'className'  => 'Teacher',
> 'foreignKey' => 'user_id',
> 'dependent' => true
>  ),
> 'Student' => array(
> 'className'  => 'Student',
>  'foreignKey' => 'user_id',
> 'dependent' => true
> )
>  );
>  // ...
> }
>
> class Teacher extends AppModel
> {
> public $belongsTo = array(
> 'User' => array(
>  )
> );
>  // ...
> }
>
> Just allow NULL in teachers & students user_id column, save the record, 
> then create the User, then save the user_id. Upon login, check 
> $this->Auth->user('model') and do $model = 
> $this->User->{$model_name}->find(...) -- passing in 
> $this->Auth->user('foreign_key') -- and save that to the session.
>
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to