On Thursday, April 4, 2013 8:03:03 AM UTC-4, Jeremy Burns wrote:
--Oh I see - I was slightly confused. You're talking about validation messages (which are properly handled in the model), not flash messages (which are properly handled by the controller). Let me think about how to do what you want...Class Outfit
Jeremy Burns
http://www.classoutfit.comOn 4 Apr 2013, at 12:58:55, Nathan Pierce <helius...@gmail.com> wrote:Oh, interesting. I've got the User model handling the flash messages. Maybe my logic about this is wrong.
<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends AppModel {
//public $primaryKey = 'id';
public $validate = array(
'full_name' => array(
'rule' => array('custom', '/^[a-z0-9 ]*$/i'),
'message' => 'We need your name!',
'required' => true
),
'email' => array (
'is_valid' => array(
'rule' => 'notEmpty',
'rule' => array('email', true),
'message' => 'A valid email is required',
'last' => true
),
'is_unique' => array(
'rule' => 'isUnique',
'message' => 'That email address is already in our database.'
)
),
'password' => array(
'min' => array(
'rule' => array('minLength', 6),
'message' => 'Your password must be more than 6 characters',
'required' => true
),
'required' => array(
'rule' => 'notEmpty',
'message'=>'Please enter a password.'
),
),
'password_confirm' => array(
'required'=>'notEmpty',
'match'=>array(
'rule' => 'validatePasswdConfirm',
'message' => 'Passwords do not match'
)
),
); //END VALIDATE
function beforeSave() {
if (isset($this->data['User']['password']))
{
$this->data['User']['password'] = AuthComponent::password($this- >data['User']['password']);
}
if (isset($this->data['User']['password_confirm']))
{
}
return true;
}
function validatePasswdConfirm($data) {
if ($this->data['User']['password'] !== $data['password_confirm'])
{
return false;
}
return true;
}
}
?>
My UsersController.php has the register action/function like this --
public function register() {
$this->set('title_for_layout', 'Register');
if ($this->Auth->user()) {
$this->redirect(array('controller' => 'users', 'action' => 'dashboard'));
}
if ($this->request->is('post')) {
$this->User->create();
if ($this->User->save($this->request->data)) {
//$this->User->setFlash(__('The user has been saved'));
$this->Auth->login($this->request->data);
$this->Session->setFlash(__('Welcome to your dashboard!'));
$this->redirect(array('controller' => 'users', 'action' => 'dashboard'));
} else {
}
}
} // END REGISTER
I'm building this from the ground up, to learn both php and cakephp. So things might not seem secure, etc etc. I do appreciate the help.
On Thursday, April 4, 2013 7:51:37 AM UTC-4, Jeremy Burns wrote:Model arrays? You set this in the controller. So when your form posts to the controller action it then calls the appropriate action (either in the Auth component or the User model). If the action returns an error you set the flash message (in the controller). At that point you'd set the fourth parameter to (e.g.) 'login-failed' or 'registration-failed'. Then you'd flash out the 'login-failed' message on the login form/element and the registration-failed message on the registration form/element.Class Outfit
Jeremy Burns
http://www.classoutfit.comOn 4 Apr 2013, at 12:47:14, Nathan Pierce <helius...@gmail.com> wrote:Thanks Jeremy, I actually tried that yesterday. I guess I didn't set it properly in the User model arrays. I'll try it again.
On Thursday, April 4, 2013 7:43:13 AM UTC-4, Jeremy Burns wrote:You can set a specific key for each flash message and then flash it out where and when needed. See: http://book.cakephp.org/2.0/en/core-libraries/ components/sessions.html# creating-notification-messages Class Outfit
Jeremy Burns
http://www.classoutfit.comOn 4 Apr 2013, at 12:37:50, Nathan Pierce <helius...@gmail.com> wrote:Fortunately there is no admin role. In fact, if they changed it to teacher, they would just have access to the teacher stuff. Not a security risk fortunately.
What I'm trying to do is have two forms on the same page, but them not share the flash verification warnings that come back. Right now if I don't type the email correctly in the register form, the warning tells me in both the login and registration form that the email is not formatted properly. I'd like two separate auth models to post to the same database, but not share the same "email", "password" names to work properly.
Can someone point me to some examples or documentation?
On Thursday, April 4, 2013 7:32:00 AM UTC-4, André Luis wrote:I really didnt get what you want to do, but one thing... if anyone can register, do not use the hidden field for the role, because it´s value can be changed easily with some javascript, or even with webdesigner toold. For example, if I (studant) will register and watch the code in Chrome, with developer tools, and see the hidden field with que "student" value, i would try to change the value to "admin" for example, or try another possible keywords for example.
Em quarta-feira, 3 de abril de 2013 20h25min51s UTC-3, Nathan Pierce escreveu:Hey all! I have to say this community is awesome. I'm pleased to see there is help for newbies like me.I have an issue which I need suggestions for. I like doing things the proper way and not creating an obtuse mess of code to do something simple. Here it is:Uses Auth (nothing crazy)View - register.ctp contains a registration form:<?phpecho $this->Form->create('User', array('action' => 'register'));echo $this->Form->input('full_name', array('label' => 'Full Name')); echo $this->Form->input('email_register', array('label' => 'Email')); echo $this->Form->input('password', array('type' => 'password', 'label' => 'Password'));echo $this->Form->input('password_confirm', array('type' => 'password', 'label' => 'Confirm Password')); echo $this->Form->hidden('role', array('value' => 'student'));echo $this->Form->end('Register');?>Then, the layout it uses (login.ctp) calls another form:<?phpecho $this->Form->create('User', array('action' => 'login'));echo $this->Form->input('email', array('label' => false, 'type' => 'email_login', 'value' => '', 'placeholder' => 'Email'));echo $this->Form->input('password', array('label' => false, 'type' => 'password_login', 'value' => '', 'placeholder' => 'Password'));echo $this->Form->submit('GO', array('class' => 'login_submit'));echo $this->Form->end();?>My problem is that when register.ctp passes the data to the User.php model, and does the validation, the login.ctp form gets the 'message =>' from the model as well as the register.ctp form.
Now, I need both the register.ctp and login.ctp form to check the database if the email exists, run the validation if it's valid, etc etc. I think you get the idea. My first idea was to change the login.ctp form from input('email' to input('email_login' and have it act the same as the normal email, just ignore the validation message. I looked and looked and couldn't find any examples of how to achieve this.
Any suggestions?
Thanks!--
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 cake-php+u...@googlegroups.com.
To post to this group, send email to cake...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en .
For more options, visit https://groups.google.com/groups/opt_out .
--
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 cake-php+u...@googlegroups.com.
To post to this group, send email to cake...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en .
For more options, visit https://groups.google.com/groups/opt_out .
--
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 cake-php+u...@googlegroups.com .
To post to this group, send email to cake...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en .
For more options, visit https://groups.google.com/groups/opt_out .
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 cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment