Sign Me Up A CakePHP User Registration Plugin

Sign Me Up A CakePHP User Registration Plugin

Finding myself generating registration forms now and then for various sites, I found the whole process of replicating the same functionality over to different projects. It didn’t take long for me to realise that a plugin was the best answer to ease of replication and code reuse, so the Sign Me Up CakePHP plugin was released.

CakePHP 2.0

SignMeUp has now been updated to work with CakePHP 2.0. There will be a few more updates in the next few days after I get better access to the internet. Any issues either comment here or open up an issue ticket on Github. To check out the 2.0 updates simply clone down SignMeUp and then do git checkout 2.0.

https://github.com/voidet/sign_me_up/tree/2.0

Introduction

Sign Me Up is a CakePHP plugin that allows you to easily integrate a user sign up form. It comes with:

  • User registration form with basic fields Username, email, password and password confirmation.
  • Default field validation which can be easily overwritten in your models.
  • Welcome email sending upon successful registration.
  • User activation code generation and activation via a link/post.
  • Integrates with Auth settings for redirects and email/view templates easily overwritten.

Where to get it: https://github.com/voidet/sign_me_up
Clone with git: git clone https://github.com/voidet/sign_me_up.git

Using Sign Me Up

Firstly you will need to clone the plugin into your plugins directory:

cd /the/path/to/my/cakeapp/app/plugins/
git clone https://github.com/voidet/sign_me_up.git

Now that we have the plugin available to us, it is time to attach it to your controller/models. To do so you will need to add the Sign Me Up component to the controller that handles your user functions, such as login etc. Add in the component code for example:

class UsersController extends AppController {
public $components = array('SignMeUp.SignMeUp');

That’s one part of the story, however it is probably best to add in the behaviours to your user/member model also:

class User extends AppModel {
public $actsAs = array('SignMeUp.SignMeUp');

Next up in your controller you will need to create the actions and link them up to the Sign Me Up plugin:

public function register() {
$this->SignMeUp->register();
};

public function activate() {
$this->SignMeUp->activate();
}

public function forgotten_password() {
$this->SignMeUp->forgottenPassword();
}

It’s pretty easy from there. You can make custom routes to these actions to keep your urls SEO friendly or whatever you like.

Configuration

Sign me up uses a basic config file which should be stored in app/config/sign_me_up.php If you don’t have this file then the Sign Me Up plugin will exit with a message saying it could not find the config file. SignMeUp configuration allows you to overwrite all default CakePHP email parameters by simply specifying the elements in the SignMeUp configuration array i.e change email sending to HTML format via setting the sendAs to HTML or change the email layout with ‘layout’ => ‘myLayout’. The only thing that you would need to diverge from the Email Component settings with is the welcome and activate templates. You can set them with welcome_template and activation_template elements:

<?php
$config['SignMeUp'] = array(
	'from' => 'MyDomain.com <[email protected]>',
	'layout' => 'default',
	'welcome_subject' => 'Welcome to MyDomain.com %username%!',
	'activation_subject' => 'Activate Your MyDomain.com Account %username%!',
	'sendAs' => 'html',
	'activation_template' => 'activate',
	'welcome_template' => 'welcome',
	'password_reset_template' => 'forgotten_password',
	'password_reset_subject' => 'Password reset from MyDomain.com',
	'new_password_template' => 'new_password',
	'new_password_subject' => 'Your new password from MyDomain.com',
	'xMailer' => 'MyDomain.com Email-bot',
);

Also note you can include fields in the subject line from your user model. Simply specify the field name you want placed in the subject line with %field_name%. That is that!

The Views

The plugin allows the end user to easily overwrite the view files for emails and the front end forms etc. Firstly to create your registration page make a new view in your views/users/register.ctp You can then add in all your design elements or simply include the default Sign Me Up registration element via:

<?php echo $this->element('register', array('plugin' => 'SignMeUp')); ?>

The same goes with the activation element, which you can include in views/users/activate.ctp

<?php echo $this->element('activate', array('plugin' => 'SignMeUp')); ?>

Also for the forgot your password page, views/users/forgotten_password.ctp

<?php echo $this->element('forgotten_password', array('plugin' => 'SignMeUp')); ?>

Email Templates

You will need to create the CakePHP layouts and views to use. I have only used text based emails, quite simple. So to do so create a new layout in app/views/layouts/emails/text/default.ctp with

<?php echo $content_for_layout; ?>

And now for the welcome email view, which comes with the activation code:

Registration (app/views/elements/email/text/welcome.ctp):

Welcome <?php echo $user['username']; ?>,

In order to get started please click on the following link to activate your account:

<?php echo Router::url(array('action' => 'activate', 'activation_code' => $user['activation_code']), true)."n"; ?>
We look forward to seeing you!
Regards,
MyDomain.com Staff

Also your forgotten password email template can look something like, app/views/elements/email/text/forgotten_password.ctp

Hi <?php echo $user['username']; ?>,

Someone (hopefully you) has requested a password reset on your account. In order to reset your password please click on the link below:

<?php echo $this->Html->link('Reset your password', Router::url(array('action' => 'forgotten_password', 'password_reset' => $user['password_reset']), true)); ?>

Regards,
MyDomain.com Staff

We Dont Need No, Activation

So you want a basic sign up system, but want to knock out the user activation hassle? Well to do so simply ensure that you have setup the SignMeUp plugin to have no activation field set. To do that simply set your activation_field to false:

	public $components = array('SignMeUp.SignMeUp' => array(
'activation_field' => false,
'useractive_field' => false,
));

You can also see that useractive_field is set to false, this is for fields that signify if the user is active or not, and saves a boolean value. With the activation_field set to false this will, instead of sending out an activation email, send out a welcome email, of which can be defined in the SignMeUp configuration file as above.

Please note that if you want to use a welcome email, the template of the email should be specified in your SignMeUp config file, and then created. All the user information will still be available.

I Need Help

That is a quick summary of the basic functions of the Sign Me Up plugin. The plugin will be developed further as either users request features or I need them built in for my own projects. Just to eliminate any confusion, a look at some routes you might want to use:

Router::connect('/register', array('controller' => 'users', 'action' => 'register'));
Router::connect('/activate', array('controller' => 'users', 'action' => 'activate'));
Router::connect('/activate/:activation_code', array('controller' => 'users', 'action' => 'activate'), array('pass' => 'activation_code'));
Router::connect('/forgotten_password/:password_reset', array('controller' => 'users', 'action' => 'forgotten_password'), array('pass' => 'password_reset'));
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/logout', array('controller' => 'users', 'action' => 'logout'));

If you need any assistance or find bugs, please leave a comment and I can help you out patch some bugs :)

I Put What Where?

There has been some confusion as to what fields are required or optional in your authentication table (users, members etc table). Also people are finding that their emails are being sent out, or max execution time is being hit. This section will help describe what to do with your database, where to put the email files and how to send out emails.

My DB Table

CREATE TABLE <code>users</code> (
  <code>id</code> int(11) unsigned NOT NULL AUTO_INCREMENT,
  <code>username</code> varchar(40) DEFAULT NULL,
  <code>email</code> varchar(255) DEFAULT NULL,
  <code>password</code> varchar(40) DEFAULT NULL,
  <code>activation_code</code> varchar(40) DEFAULT NULL,
  <code>active</code> tinyint(1) DEFAULT NULL,
  <code>password_reset</code> varchar(40) DEFAULT NULL,
  <code>created</code> timestamp NULL DEFAULT NULL,
  <code>modified</code> timestamp NULL DEFAULT NULL,
  PRIMARY KEY (<code>id</code>)
); 

This uses the default values found in SignMeUp. You can override these as mentioned above in your sign_me_up.php config file which should be stored in app/config/sign_me_up.php

My Email Files

This section really depends what email type you are sending out, html, text-only, or both. Either way. Lets say we are sending out text only emails, you will need to first make the layout file in app/views/layouts/email/text/default.ctp and just put in

Next up you need to setup your email templates. The email templates are basically your view for each email that you send out, be it the welcome or activation emails for example. So in order to send out a welcome email you would make your file in app/views/elements/email/text/welcome.ctp This template is as defined in your sign_me_up.php configuration file. You can use the example welcome text as seen above.

Basically you need to include your email layouts and templates in your application, not inside the sign_me_up plugin.

Max Execution time being hit

I have seen one person hit this issue and it comes down to email sending. If you are using SMTP for your email sending type then make sure your network that you’re on allows connection to whatever address you’re trying to send out to. A max execution time is being hit because the application cannot establish a connection to the smtp server and is left hanging.

Updates

To make things easy, I will keep any updates on the GitHub page and updates written below here as a small change log:

0.7 Added in forgotten password functionality
0.6
Pushed updates that now allow user activation to be optional. Activations will only be attempted if the default settings of activation_field is not set to false.
0.5.5 Bug Fixes thanks to the comments received
0.5 Initial Release

Posted by voidet

Categorised under CakePHP
Bookmark the permalink or leave a trackback.

167 Comments

  1. Hi.

    This looks awesome, exactly what I need to spiff up an application here that’s getting a little long in the tooth.

    I am having an issue getting my head around cake, though. I’m trying to assert a valid login after a user is registered, and I can $this->Auth->login($user) to get it to assert true, but do you know where i can find docs to see why I can’t just use $this->login(); in the user’s controller immediately afterwards (everything checks out OK mentally) – but I don’t get my darn session setup! I need to figure this out before I can start using sign me up. :(

    Thanks, and sorry for an unrelated question.

    February 3, 2011 @ 7:25 am
  2. VoiDeT

    Hey Steve,

    Thanks for that, would be cool to see you get going on with Sign Me Up. So what I’m gathering from you is that you’re having problems logging people in? You have a few options with CakePHP but what you can do is simply do what you’re doing:

    Use the Auth component’s login directly to log the user in with the credentials. If they were just submitted via a form it should be in $this->data, not $this->user. This should be stored in your login method for whatever controller you’re using, I’m guessing users controller.

    Next up is to use Auth’s autoMagic login function. All you need to do here is setup your Auth config in AppController’s beforeFilter or UsersController beforeFilter. You will need to have an empty method in your UsersController i.e:

    public function login() { }

    From there in your beforeFilters you can set up:

    $this->Auth->userModel = ‘User';
    $this->Auth->loginAction = array(‘controller’ => ‘users’, ‘action’ => ‘login’);
    $this->Auth->logoutRedirect = array(‘controller’ => ‘users’, ‘action’ => ‘login’);
    $this->Auth->loginRedirect = array(‘controller’ => ‘users’, ‘action’ => ‘dashboard’);
    $this->Auth->userScope = array(‘User.active’ => true);
    $this->Auth->autoRedirect = false;

    You can see here I have autoRedirect turned off, that’s because I have extra stuff after Auth log’s the user in before I redirect them, such as storing a rememberMe cookie etc:

    public function login() {
    if ($this->Auth->user()) {
    if (!empty($this->data)) {
    $this->RememberMe->setRememberMe($this->data[$this->User->alias]);
    }
    $this->redirect($this->Auth->loginRedirect);
    }
    }

    Let me know if that helps :)

    February 3, 2011 @ 8:12 am
  3. Can’t seem to get it working 100%. I can save the users in the DB but it just redirects me right back to the register page with some warnings… Here are the warnings:

    – Notice (8): Undefined property: SignMeUpBehavior::$data [APPmodelsbehaviorssign_me_up.php, line 43]

    – Notice (8): Undefined property: SignMeUpBehavior::$data [APPmodelsbehaviorssign_me_up.php, line 44]

    – Notice (8): Undefined index: id [COREcakelibsmodelmodel.php, line 1329]

    I admit i’m some what of a beginner at cakePHP… What am i doing wrong here?

    February 4, 2011 @ 2:04 am
  4. VoiDeT

    Hey Derek,

    I’ve just pushed an update to solve the problem you were experiencing.
    Let me know if that helps!

    February 4, 2011 @ 8:14 am
  5. Hi again VoiDeT,

    I’m actually trying to streamline and remove a few processes. $this->data[‘User’] is actually what’s populated. If I pass that to the login function, it passes, but it never constructs/sets the cookie or session as I see it in the app_controller.

    Please pardon my ignorance with cake, I’m stuck with a 1.2.x build and am slowly trying to fix things, but I need to find a way to understand them better – and most of the tutorials and FAQs related to the magical Auth don’t really tell me what I need to figure out – like how to force this session as registered, and how it builds them.

    I think the problem is – is that I already have a functional login(), and am trying to rebuild from a register()->activate(), and I am using a (nasty) redirect from register->activate to setup a few things temporarily, but from there, I can’t seem to get it to assert the user as valid as I have it in the $user, or $this->data[‘user’].

    I really want to try sign_me_up, and have already checked it out of git – now this git needs to figure what’s wrong so he can get it going! ;)

    February 5, 2011 @ 4:15 am
  6. Hi,

    Thanks for that update, got that part working 100%!

    I’m getting another error after trying to activate the account:

    Fatal error: Call to undefined method SignMeUpComponent::redirect() in C:xampphtdocsxamppprojectnameappcontrollerscomponentssign_me_up.php on line 15

    I’ve tried playing with the parameters of the redirect function but it literally looks like it has a problem calling the “$this->redirect()” function which to my knowledge is a standard cakePHP function.

    I’ve tried degug($this); but I don’t see any obvious error that would result in what i’m getting above.

    Thanks again for this plugin though, saving me a bunch of time trying to implementing my own version of the same functionality.

    February 5, 2011 @ 8:57 pm
  7. VoiDeT

    Hey Derek,

    That is my bad. Also that line should of only executed if you were already logged in :)
    I should also write that for the register page, but I guess since you have the action, you can probably do that yourself also :)

    February 6, 2011 @ 12:37 am
  8. VoiDeT

    Hey Steve,

    What you’re doing should work just fine. The login method should take your array of user credentials and log them in and establish the according sessions. Please double check your Session cookie name, it should just be text, no spaces. I have run into that issue before. Also make sure you have auto-redirect turned off in your Auth settings, as that could be bypassing your login logic. Try putting my Auth settings in your AppController beforeFilter. If you’re still having issues, gist your code and DM me on @voidet on twitter :)

    February 6, 2011 @ 12:27 pm
  9. Wow this is awesome thanks!

    Newbie question, what tables are needed in the db. Im creating this from scratch and dont have any auth / user tables set up yet. I cant wait to get this working!

    February 10, 2011 @ 5:07 pm
  10. VoiDeT

    Hey Humby,

    Thanks! You will need a basic fields in your database e.g.:

    CREATE TABLE users (
    id int(11) unsigned NOT NULL AUTO_INCREMENT,
    username varchar(40) DEFAULT NULL,
    email varchar(255) DEFAULT NULL,
    password varchar(40) DEFAULT NULL,
    active tinyint(1) DEFAULT NULL,
    created timestamp NULL DEFAULT NULL,
    modified timestamp NULL DEFAULT NULL,
    PRIMARY KEY (id)
    );

    Let me know how you go.

    February 10, 2011 @ 5:17 pm
  11. Awesome thank you. I got it up and running in like 5 minutes! Still need to move it to a live server to test the email and finish up the rest of the site but thanks again. You saved me alot of trouble. I’ll post the site here when its done. Thanks again!

    February 11, 2011 @ 12:01 pm
  12. Hi!
    I got everything installed but get the errors below:
    Error: The Behavior file appmodelsbehaviorssign_me_up.sign_me_up.php can not be found or does not exist.

    Error: Create the class below in file: appmodelsbehaviorssign_me_up.sign_me_up.php

    So it looks like the lines
    var $components = array( ‘SignMeUp.SignMeUp’ );
    and
    var $actsAs = array(‘Acl’ => array(‘type’ => ‘requester’), ‘SignMeUp.SignMeUp’);
    Should really have SignMeUp instead of SignMeUp.SignMeUp

    Yes?
    The problem then is that if I change it, nothing happens. The page is just white. Any thoughts?

    February 19, 2011 @ 1:13 pm
  13. VoiDeT

    @MIKE – It sounds like the plugin isn’t being copied properly to your plugins folder.
    Please check for me that you have apppluginssign_me_upmodelsbehaviorssign_me_up.php in your path.

    February 19, 2011 @ 10:36 pm
  14. My directories were messed up. Instead of just extracting to the plugins directory, I moved the files to app/controllers/components, etc. I downloaded git and did it according to your instructions instead. Now, I don’t get the error message.

    However, I still get the white screen. Basically, no actions in the user model work. If I comment out the lines that I added to the controller and the model from your instructions, it works again. Just an fyi, this isn’t a clean user model. This is based on the cakephp tutorial with login/logout and then acl after that. Don’t know if that matters.

    Incidentally, somewhere in the instructions it had something like app/model/pimp. That cracked me up.

    February 20, 2011 @ 3:24 am
  15. VoiDeT

    Hey Mike,

    Great that you have the plugin working, but not so great that the functions aren’t working.
    Would you be able to paste me up your user controller and app_controller if you have one at bin.cakephp.org please. That way I can better see what is going on :D

    February 20, 2011 @ 9:05 am
  16. Thanks a lot for your help. Uploaded here.

    February 20, 2011 @ 2:28 pm
  17. VoiDeT

    Having a quick look through your code there Mike it looks like the Auth settings were not properly pasted. Make sure that the ‘ are not the backticks (in your users beforeFilter action).

    Also you should be able to navigate to /users/register because there is an action for that. What you should do is turn on debug 2. In your beforeFilter in app_controller put Configure::write(‘debug’, 2); again paying attention to the single quotes not being pasted in as backticks.

    Let me know if you get any errors.

    February 20, 2011 @ 2:58 pm
  18. I’m running into an error when I try to register a new member:

    Missing argument 2 for SignMeUpComponent::__sendActivationEmail(), called in D:xampphtdocscakeinstallapppluginssign_me_upcontrollerscomponentssign_me_up.php on line 53 and defined [APPpluginssign_me_upcontrollerscomponentssign_me_up.php, line 64]Code | Context }

    protected function __sendActivationEmail($userData, $template) {
    $userData = array(
    “username” => “testuserid”,
    “email” => “{email addy here}”,
    “password1″ => “test12″,
    “password2″ => “test12″,
    “activation_code” => “07b695778d1abc85120de6975bed1558c600b845″
    )SignMeUpComponent::__sendActivationEmail() – APPpluginssign_me_upcontrollerscomponentssign_me_up.php, line 64
    SignMeUpComponent::register() – APPpluginssign_me_upcontrollerscomponentssign_me_up.php, line 53
    UsersController::register() – APPcontrollersusers_controller.php, line 26
    Dispatcher::_invoke() – COREcakedispatcher.php, line 204
    Dispatcher::dispatch() – COREcakedispatcher.php, line 171
    [main] – APPwebrootindex.php, line 83

    It looks like the following line from Register should have a second parameter?

    $this->__sendActivationEmail($this->controller->data[$model]);

    I altered it to be:
    $this->__sendActivationEmail($this->controller->data[$model], ‘activate’);

    This resolved the issue, but is not pulling from the config. How do I change that to pull from the config setting?

    Thanks for the awesome plugin!

    March 5, 2011 @ 3:15 pm
  19. VoiDeT

    Hey Jay,

    Thanks for pointing that out. I have updated the plugin to remove this error. Pull down these changes and discard any local changes you’ve made to the plugin. Templates are loaded in from the configuration file with the key ‘welcome_template’ or ‘activation_template’ an example in app/config/sign_me_up.php:

    < ?php

    $config['SignMeUp'] = array(
    'from_email' => ‘Domain.com ‘,
    ‘email_layout’ => ‘default’,
    ‘subject’ => ‘Welcome to Domain.com %username%’,
    ‘activation_template’ => ‘activate’,
    ‘welcome_template’ => ‘welcome’,
    ‘type’ => ‘text’,
    ‘xMailer’ => ‘Domain.com Email’,
    );

    March 5, 2011 @ 5:07 pm
  20. Voidet,
    I’ve run into another issue with the component.

    It appears that it is conflicting with the logout feature of the auth component.

    Everything works fine, however when I execute Logout, I get the famous white screen of death. If I comment out signmeup it works fine.

    Unfortunately I don’t have a fix for this as I am unsure what the conflict is.

    Jared

    March 7, 2011 @ 6:20 am
    • VoiDeT

      Hey Jared,

      Thanks for letting me know. I’ve used this in my apps with logout functionality but I will look into the issue more for you. What is your logout action looking like? Are you using the security component? How is the logout being initiated? Via post or get?

      March 7, 2011 @ 6:28 am
  21. I’ve found a work around, I created a new controller to handle register and activation, and then removed the signmeup from the users controller.

    It works perfectly with the new controller attached to the users model. But its very much a work around.

    Cheers,
    Jay

    March 7, 2011 @ 7:08 am
  22. Hey Voidet,
    My logout is pretty standard:

    function logout(){
    $this->redirect($this->Auth->logout());
    }

    As you can see this is just the basic log out auth action.

    My call to logout is below:

    echo $this->Html->link(‘Logout’, array(‘controller’ => ‘users’, ‘action’ => ‘logout’));

    The only thing that might be non standard is that the above call to logout is in my default.ctp layout.

    If you aren’t sure off hand the problem, don’t worry to much about it. :) I was able to work around the issue, though I wish I knew what was causing it.

    March 7, 2011 @ 7:11 am
  23. VoiDeT

    Jay,

    I see nothing in the code that would lead me to believe that SignMeUp would interfere with a simple Auth::logout() then redirect. Are you using the security component on your users_controller? This could explain the blackhole. If you aren’t then for some reason the redirect is not being executed. Are you able to make a new action in your users controller with SignMeUp attached, and see if you can get content in the view outputted.

    Also if you don’t mind i’d like to see your users_controller, app_controller and user model if you don’t mind :)

    March 7, 2011 @ 8:07 am
  24. Hi Voidet,

    I have the same issue than Jay Sharen. A big white screen when I try to logout or even when I try to access /login after being successfully logged

    I use admin prefixes based on role (admin,members) and when I disabled the component, my redirection works like a charm.

    It seems that when you are successfully logged and you try to logout or come back to a public area without prefixes. you are “out of the app”, I looked at the cookie and I have the cookie at /admin/index but nothing but a white screen when trying /login.

    The only way to comeback to the initial state is to remove all private data in the browser.

    I also suggest to make the config file more flexible and accept all Cake’s Email Component options.

    Anyway thanks for the job ! I can send you some code if you want to debug it

    March 11, 2011 @ 1:54 am
    • VoiDeT

      Hey Ben,

      I have had a quick look at the plugin this morning and might of found the culprit. Please pull down the latest code and let me know if that works for you. If not could you please supply me with some code I can test with?

      Thanks

      March 11, 2011 @ 6:26 am
    • VoiDeT

      Hey again Ben,

      I’ve also made a branch to include all email parameters and extended the subject placeholders.
      https://github.com/voidet/sign_me_up/tree/use_email_params I will do more testing before I merge into master this evening.

      March 11, 2011 @ 9:25 am
  25. I will check it and come back to you asap ! :)

    March 15, 2011 @ 2:18 am
  26. Hi Voidet,

    Seems to work now ! Great!

    Can you tell me what changes you made ? I’d like to know ! (It’s better when you understand :) )

    Thank anyway !

    March 15, 2011 @ 2:37 am
    • VoiDeT

      Hey Ben,

      That’s great to hear. The issue I believe came down to a redirect that I had in the initialize call. If the user was logged in and hit the user’s controller it would redirect the user to the loginRedirect url. I believe, when the user hits logout, because this is also in the users_controller, presumably, of which would of had the SignMeUp plugin attached to it, it would then redirect to the loginAction, which could of been on the users_controller, sending itself into an infinite redirect loop. From there the browser would of given up, issuing a redirect loop warning.

      I’m not too sure as to where the white page came from, nor could I replicate it. But I believe it stems from the infinite redirect issue. Also Ben please note you can now use all the Email params that ship standard with CakePHP. You just need to make sure you specify the two different templates, welcome & activate. I haven’t separated the email params per welcome or activation, because I assume the settings would be the same, just different templates. Also I’ve added in any userModel fields in the subject line. i.e: %username% or %first_name% etc.

      Let me know if you have any further issues or feature recommendations!

      March 15, 2011 @ 8:29 pm
  27. Hey,

    Nice plugin but it would be cool to have a forgot password / reset password feature as well ;). Keep up the great work!

    Octavian

    April 23, 2011 @ 6:46 pm
    • VoiDeT

      @octavian Good idea. I will build that feature in tonight or this afternoon. I’ll end up needing it anyhow :)

      April 26, 2011 @ 10:49 am
  28. hi voidet
    I’m newbie and I try to use your plugin
    and i got error when i click register
    Fatal error: Maximum execution time of 30 seconds exceeded in C:xampphtdocscakephp3cakelibsvalidation.php on line 507
    How do I fix it.
    thank you for great plugin

    April 29, 2011 @ 3:08 am
  29. VoiDeT

    Hey Taqman,

    Sorry to hear about this error you’re getting.
    It looks as though you’re going into possibly an infinite loop with the validation upon register.
    Are you able to please show me both your user controller and user model please?
    Also, just to try out something, in your user model can you please specify $validate = array();
    This should hopefully clear out the standard validation that is provided in the behaviour.

    Thank you for your feedback.

    April 29, 2011 @ 8:28 am
  30. thank you for fast reply

    April 29, 2011 @ 2:51 pm
  31. thank you for fast reply link here=>http://bin.cakephp.org/view/2026998600

    April 29, 2011 @ 2:53 pm
    • VoiDeT

      Interesting.
      I will try that code tonight for you and see what I find.
      Can you please tell me what version of PHP and cake you are running?

      April 29, 2011 @ 3:05 pm
  32. I use php 5.3.5 and cakephp 1.3.8

    April 29, 2011 @ 3:30 pm
  33. hey voidet
    I add $validate =array()
    As you said this morning
    i try to restart apache and work
    but email not sent
    how to config email to work corectly

    April 29, 2011 @ 8:08 pm
  34. VoiDeT

    Hey Taqman,

    Sounds like the max execution time was not to do with the Sign Me Up plugin then. Which is a good thing. Put in the validation again (remove that empty public $validate = array();) I said to put in, and test to see if it will validate.

    With the emails, make sure you have the layout for the email type you’re sending out, e.g. If you’re sending html emails you would make /app/views/layouts/email/html/default.ctp with < ?php echo $content_for_layout; etc....

    Then because you're only sending a welcome email, make the welcome email view in the appropriate folder, named the same as your config;

    'welcome_template' => ‘welcome’,

    So if you were sending html emails, app/views/elements/email/html/welcome.ctp and then put in your welcome message :) Also not you can get access to their user information via the $user array.

    If you’re still having issues, perhaps zip up your app and send it over and I will get it working for you :) Up to you

    April 29, 2011 @ 9:52 pm
  35. As you that the problem does not go away
    when i restart computer again apache service can’t start
    at you help fix my app at the same time i attempt to fix apache problem
    I will not give up in error
    Myapp =>http://www.mediafire.com/?7addsb8507v6d43

    thank you for good support for beginner

    April 29, 2011 @ 10:40 pm
  36. VoiDeT

    Hey Taqman,

    I’ve fixed up your application so that it sends out the emails and registers the user with no activation :)
    http://cl.ly/1V3t0E0s280g03352E0x

    Let me know if you have any further issues.

    April 30, 2011 @ 8:59 am
  37. hey voidet

    when i access to 127.0.0.1/cakephp3/register
    why redirect to login

    April 30, 2011 @ 2:33 pm
    • VoiDeT

      Hey

      Try going to users/register?

      April 30, 2011 @ 3:07 pm
  38. I have tried already.
    It too.

    April 30, 2011 @ 3:17 pm
  39. VoiDeT

    Hey again,

    Add this to your users controller:

    public function beforeFilter() {
    $this->Auth->allow(‘register’);
    parent::beforeFilter();
    }

    That should fix it up for you :)

    April 30, 2011 @ 4:21 pm
  40. hey.
    I found the error. Like when I started to ask you.
    maxmimum excutation time in 30 second again.

    April 30, 2011 @ 5:38 pm
  41. VoiDeT

    I’m sorry Taqman,
    I cannot replicate your issue with the maximum execution time. Perhaps try a different development environment or remove some php modules active.

    May 1, 2011 @ 6:18 pm
  42. Hey,

    I saw you’ve added the forgot pass form. When I add it to a view with element(‘forgotten_password’,array(‘plugin’=>’SignMeUp’)) ;?> and submit that form, nothing happens. Could you post a demo/working example of it? I just need to

    I also saw you need a password_reset column in your users table, which isn’t documented in the github wiki.

    I would really have this forgot pass working. Thanks for your help, great plugin!

    May 5, 2011 @ 7:27 am
  43. Awesome. It’s great to see new plugins and useful ones like these come out so fast for 1.3, when we were doing 1.1 it was everyone doing a lot of trial and error with a lot of paste bins to get something nice going.

    Thanks for sharing this amazingly helpful plugin.

    May 5, 2011 @ 5:12 pm
  44. VoiDeT

    @OCTAVIAN

    I have updated the documentation both here and on github.
    This page however requires a rewrite to be updated. Unfortunately wordpress isn’t cooperating too well. Let me know how you go with the new documentation, if you’re having issues let me know and I can help you directly.

    @VANGEL

    Thank you very much!

    May 5, 2011 @ 7:23 pm
  45. Hi voidet,
    just finished adding it to my test cake 13 project. I am wondering if there is a way to override the Email delivery and set it to smtp. I tried adding it to the singn_me-up.php initialize function with $this->Email->delivery = ‘smptp’ and ofcourse the opts are there.

    I am usign my ISP’s smtp to test which is open so it should work but its not happening. Or it could be the xampp i am using. any ideas?

    thanks.

    May 5, 2011 @ 8:25 pm
  46. ah i found the problem but not the solution. the log says
    Error: SignMeUp Error “Template Not Found”: … email/text/activate.ctp

    I am assuming there is supposed to be this template but I din’t see any mention of it in the docs. maybe i am tired :/

    May 5, 2011 @ 8:37 pm
  47. VoiDeT

    @VANGEL – Correct. But where are you setting the delivery setting? AppController? If not you can include it in your sign_me_up.php configuration file :) Also:

    $this->Email->delivery = ‘smptp’ should be $this->Email->delivery = ‘smtp’

    But I would be putting it in my sign me up configuration file :)

    May 6, 2011 @ 6:32 am
  48. yeah the smtp was just a typo in the comment. I have put in sign_me_up config file and it works. We are missing an activate.ctp file here for the email.

    May 6, 2011 @ 11:57 am
  49. Ahh i found the problem. You call the activate template as welcome.ctp but is setup as activate in your config. changing it accordingly will fix it. also probably the example config you have included is old and subject should be changed to welcome_subject and so forth.

    next issue I found. (sorry for badgering like this. Just trying to help. ) I can join your git and contribute my sloppy coding :D

    I think an example sql file would help here. ofcourse I missed the activation_code column but only found out during debugging (I call it ‘code’ only).

    May 6, 2011 @ 12:10 pm
  50. VoiDeT

    @VANGEL – I will take a look at the documentation over the weekend. Please fork sign me up on github and show me what you would like to contribute :) Thank you very much for your great feedback and findings. Hopefully we can get this working for you fine and come out with a better product for others! If you don’t want to share on github you can email me at voidet at nightgen dot com :)

    May 6, 2011 @ 7:13 pm
  51. Hey Voidet,

    I tried to set up the new version of the plugin but it doesn’t seem to send out any emails. I made some tries with CakePHP Email component and that works. Could you please take a look? It’s really strange… http://www.octavian.be/spacecake.zip

    Many thanks!

    May 10, 2011 @ 6:47 am
  52. VoiDeT

    @OCTAVIAN It looks as though you have put the email templates in the plugin. Put them into app/views/elements/email/text and try that. I’m on irc.freenode.com as voidet at the moment if you would like to discuss via irc?

    May 10, 2011 @ 8:23 am
  53. Thanks for looking into it. But when I look in the zip, my files are in appviewslayoutsemailtext.

    I didn’t touch the plugin, just unzipped the files from github in /app/plugins/sign_me_up. Maybe you could have a second look ;)?

    May 10, 2011 @ 5:00 pm
    • VoiDeT

      @Octavian – Sorry for the late reply. Yes your email files were in the layouts folder that is correct. However that, apart from default.ctp, was the incorrect place for them to be. In order to remove confusion i’ve moved them into app/views/elements/email/html which is where they should of been placed & uploaded the zip again for you. Please try now: http://cl.ly/3v1Z3S2d1N2A0Z2s3b0H

      May 11, 2011 @ 7:04 pm
  54. After that I try to write down the code itself because I want to split up the table from each member and myprofile. I had found a problem that I had never met before.
    I decided to use SignMeUp plugin to integrate with my site. Otherwise my work is not completed on schedule I ask that you please answer my question.I will try to understand the code in your plugins before I applied.

    May 12, 2011 @ 4:25 am
  55. hey
    I try to use plugin again and same problem comeback

    Fatal error: Maximum execution time of 30 seconds exceeded in C:xampphtdocscakephp33cakelibsvalidation.php on line 507
    I try to search it
    I’ve searched the problem. I have found that the functional tried to connect to the smtp to check the validity of e-mail. now i set function to send email with gmail smtp is pass in 30 sec
    the email to send to hotmail I am so confused why when I send it via email, but check the accuracy did not pass.It would be like this only with a valid email address only.

    May 12, 2011 @ 6:22 am
    • VoiDeT

      @TAQMAN – Looks like it is an email sending issue on your part, not an issue with the plugin. Sign Me Up does not do anything special with email sending, instead it uses cakephp to send emails. I would recommend looking at other posts on how to send out emails to smtp.

      May 12, 2011 @ 8:30 am
  56. @voidet I not tell problem come from plugin I tell problem come from function checkdns
    in line 507 some time Sometimes it happens sometimes it does not occur. I try to fix it follow answer in google I increase maximum execution time to 100 second

    May 12, 2011 @ 1:35 pm
  57. great work! i just took less than an hour to integrate with my current apps.

    just a little suggestion, maybe you should include database schema for user table, it might helps newbie like myself :)

    here’s my schema, hopefully can help others, http://bin.cakephp.org/view/459297626

    May 12, 2011 @ 3:24 pm
  58. hey voidet
    i try to aplly you plugin to my project and myproject have 2 table user hasOne profile
    and I studied from
    http://book.cakephp.org/view/1032/Saving-Related-Model-Data-hasOne-hasMany-belongsTo
    and i try to study you plugin with debugger::dump and i found
    $model = $this->controller->modelClass); Used to load the same model with a controller,
    I understand that if I want to save data to another table. I need to load. Other models come with
    and I ask have other solution to load other model to Sigemeup componenent

    Hopefully it will not bother you too

    May 13, 2011 @ 7:54 pm
  59. VoiDeT

    @SYAHZUL thanks for the nice comments! I agree I think it would help to supply a schema, even just if in MySQL. I will update this post now. There was a small write up on the github page explaining any fields required or optional, but maybe a dump in sql would help. Thanks again

    @TAQMAN sign me up will only register the user into a users table. From there you can get the users to create a profile and create the record when they update their profile record. :)

    May 15, 2011 @ 10:21 am
  60. VoiDeT
    May 19, 2011 @ 8:39 am
  61. I had to change the component at line 125 to:

    //Test for an activation code in the parameters if (!empty($this->controller->params["named"][$activation_field])) { $activation_code = $this->controller->params["named"][$activation_field]; }

    June 1, 2011 @ 5:35 am
  62. VoiDeT

    @JAMIE – that is because you did not use the proper routing for example:

    Router::connect(‘/activate/:activation_code’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’), array(‘pass’ => ‘activation_code’));

    To capture your activation code.

    June 1, 2011 @ 6:47 am
  63. @voidet

    bueno, thanks! So since I have you here, how would you suggest doing an AJAX registration? It’d be cool if there was a way to disable the redirection inside the component and allow my users_controller to handle it. Maybe just some sort of return value from SignMeUp->register() that gives me the info I need to provide an asynchronous response (JSON).

    June 1, 2011 @ 7:23 am
  64. VoiDeT

    @JAMIE – No problem. I have updated the plugin to handle ajax requests. The component methods will return true if the action was successful and that the request was from AJAX. You should then be able to handle the return in your controller actions :D

    June 1, 2011 @ 8:30 am
  65. @voidet wow that was fast. Thanks a lot! Things have been working just fine so far. You might want to consider an option to allow registrations where people login with just an email address (no username at all). If I can think of any other ideas or suggestions, I’ll let you know!

    June 10, 2011 @ 8:19 am
  66. VoiDeT

    Hey Jamie, You can still do that without the sign me up plugin. Just use the email address as your Auth login field :)

    June 10, 2011 @ 8:45 am
  67. Login failed.

    I was able to setup your plugin.. .seems to work, I can register a user. But no email is sent… anyway, I was able to look into the MySQL database, put in the activation-code – worked.

    But now, the user can not login. Database:

    MD5:
    0b4e7aae5fe84ad35fb5f95b9ceeac79

    MD? by sign-me-up:

    943dedca19e052552090a799b2b58149fca7ea17

    Your Password-crypt seems to be much longer then just standard MD5 32 chars.

    My users_controller.php login() function is:

    function login()
    {
    if ($this->data) {
    // — form filled in and sent

    $results = $this->User->findByUsername($this->data[‘User’][‘username’]);

    if ($results && $results[‘User’][‘password’] == md5($this->data[‘User’][‘password’])) {
    // — login OK
    $this->Session->write(‘user’, $this->data[‘User’][‘username’]);
    $this->Session->write(‘user_id’, $results[‘User’][‘id’]);
    $this->redirect(array(‘action’ => ‘index’), null, true);
    } else {
    // — login failed
    $this->set(‘error’, true);
    }
    }
    }

    June 16, 2011 @ 4:44 am
  68. I added

    public $components = array(‘SignMeUp.SignMeUp’, ‘Auth’, ‘Cookie’, ‘Session’, ‘Email’);
    // ‘Session’, ‘Cookie’, ‘Email’);

    public function beforeFilter() {
    $this->Auth->allow(‘register’);
    parent::beforeFilter();
    }

    to users_controller.php

    -> Now /register gives me a blank screen… :(

    Try to login with username + pass -> Error:

    Release Notes for CakePHP 1.3.10.
    Read the changelog
    URL rewriting is not properly configured on your server.
    Help me configure it
    I don’t / can’t use URL rewriting

    I also have this login:

    function login()
    {
    if ($this->data) {
    // — form filled in and sent

    $results = $this->User->findByUsername($this->data[‘User’][‘username’]);

    if ($results && $results[‘User’][‘password’] == $this->Auth->password($this->data[‘User’][‘password’])) {

    //if ($results && $results[‘User’][‘password’] == md5($this->data[‘User’][‘username’] . $this->data[‘User’][‘password’])) {

    // — login OK
    $this->Session->write(‘user’, $this->data[‘User’][‘username’]);
    $this->Session->write(‘user_id’, $results[‘User’][‘id’]);
    $this->redirect(array(‘action’ => ‘index’), null, true);
    } else {
    // — login failed
    $this->set(‘error’, true);
    }
    }
    }

    June 16, 2011 @ 5:34 am
  69. Login seems to work now… you have to use: $this->Auth->password(….) for checking, not just php MD5…

    if ($results && $results[‘User’][‘password’] == $this->Auth->password($this->data[‘User’][‘password’])) {

    ROUTING confusion:
    But now, it will redirect/go to index within /pages/home.ctp … not within /users/index.ctp

    —————–

    // default routs: in config:
    Router::connect(‘/’, array(‘controller’ => ‘pages’, ‘action’ => ‘display’, ‘home’));
    Router::connect(‘/pages/*’, array(‘controller’ => ‘pages’, ‘action’ => ‘display’));

    // for login things:

    Router::connect(‘/register’, array(‘controller’ => ‘users’, ‘action’ => ‘register’));
    Router::connect(‘/activate’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’));
    Router::connect(‘/activate/:activation_code’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’), array(‘pass’ => ‘activation_code’));
    Router::connect(‘/login’, array(‘controller’ => ‘users’, ‘action’ => ‘login’));
    Router::connect(‘/logout’, array(‘controller’ => ‘users’, ‘action’ => ‘logout’));

    June 16, 2011 @ 6:41 am
  70. VoiDeT

    @Michael – I recommend looking at using the Auth component that CakePHP provides to handle your user authentication. SignMeUp uses the instance variables setup by Auth component to handle the redirects etc. Also look at the Auth::login() method, which handles logging in a user. Also SIgnMeUp redirects based on what is set up in Auth:

    $this->controller->redirect($this->Auth->loginAction);
    $this->controller->redirect($this->Auth->loginRedirect);

    Let me know if you have any other issues. Thanks

    June 16, 2011 @ 8:09 am
  71. Hello VoiDeT

    Thanks for your fast reply. But now on *how* exactly can I fix my problem?

    Problem A: I cant register a user, go on http://www.mydomain.com/tom/register gives blank screen.

    Problem B: I can login, but it will redirect to http://www.mydomain.com/tom/ not http://www.mydomain.com/tom/register

    Anyway it is not clear to me when and how URLs are translated / routed and how.

    Auth-thing:
    $this->controller->redirect($this->Auth->loginAction);
    $this->controller->redirect($this->Auth->loginRedirect);

    What is this? Where to but? Need to put? Or just it says that the core module auth does a redirect to loginRedirect? Where to config? How?

    -> *wher* exaclty should and must I config this? I do just whant to *use* it not study core Auth module.

    June 17, 2011 @ 3:31 am
  72. ^^^ it should go to
    http://www.mydomain.com/tom/users
    as before. I used some other login-register-logout things.

    June 17, 2011 @ 3:33 am
  73. Correction:
    Problem B: I can login, but it will redirect to http://www.mydomain.com/tom/ not http://www.mydomain.com/tom/users/ as it should be as before, print out welcom user XY, and the link to logout, etc.

    June 17, 2011 @ 3:36 am
  74. http://www.example-domain.com/tom/users/register

    is also empty.

    it does not display the /app/plugins/sign_me_up/views/elements/register.ctp

    I gave up.

    -> Please provide a fully funcational running out-of-the box USER source code example with your documenation included how we can get your plugin up and running and E-Mail registration email-send-out get working.

    June 17, 2011 @ 5:04 am
  75. I removed the strage routing things in ./app/config/routes.php

    Router::connect(‘/register’, array(‘controller’ => ‘users’, ‘action’ => ‘register’));
    Router::connect(‘/activate’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’));
    Router::connect(‘/activate/:activation_code’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’), array(‘pass’ => ‘activation_code’));
    Router::connect(‘/login’, array(‘controller’ => ‘users’, ‘action’ => ‘login’));
    Router::connect(‘/logout’, array(‘controller’ => ‘users’, ‘action’ => ‘logout’));

    Now, it will point to ./users/register within the login screen.

    But still not working, ./user/register give me an empty screen.
    Please help!

    I will provide also docus maybe. If I can get this things up-and-running online for a real production system which must be able to login just users, register, e-mail verification, logout, signoff (maybe not implemented yet? don’t know).

    June 17, 2011 @ 5:20 am
  76. VoiDeT

    @michael please upload your application somewhere so I can see what you are trying to do. I believe you still are not using the Auth instance variables as I previously mentioned, because that would fix your redirect issues.

    June 17, 2011 @ 8:14 am
  77. It works now… but I can not print out session / db stored values in .ctp file account.ctp….

    account.ctp:
    ———–
    user[0]['User']['first_name']; ?>   <--- WORKS, but I want without [0]...user['User']['first_name']; ?>read('Auth.User.username');$n1 = $session->read('Auth.User.first_name');$n2 = $session->read('Auth.User.laste_name');echo "Hello <b>$nz</b> ($n1 $n2)!";?>link('knownusers', array('action' => 'knownusers')); ?>link('Logout', array('controller' => 'users', 'action' => 'logout')); ?>

    users_controller.php:
    —————-
    class UsersController extends AppController{  var $helpers = array('Html', 'Form', 'Javascript');  var $components = array('SignMeUp.SignMeUp', 'Acl', 'Auth', 'Cookie', 'Session', 'Email');  public function beforeFilter() {  if (isset($this->Auth)) {    $this->Auth->loginAction = '/users/login';    $this->Auth->loginRedirect = '/users/account';      // NOTE: Do NOT redirect to /users/index else you can login but will      //   be always be on the login page again after login.  }    $this->Auth->allow(array('login', 'forgotten_password', 'register', 'activate'));   parent::beforeFilter(); // call default functions, like "super" in C/C++  }  public function register() {    $this->SignMeUp->register();  }  public function activate() {    $this->SignMeUp->activate();  }  public function forgotten_password() {    $this->SignMeUp->forgottenPassword();  }  function login()  {    // empty, use default provided with Auth component ?    // see ./app/views/users/login.ctp    // Which is Username* and Password* fields with a "Login" button.  }  function logout() {    $this->redirect($this->Auth->logout());  } function account()  {    $username = $this->Session->read('user');    if ($username) {      $results = $this->User->findByUsername($username);      $this->set('user', $results['User']);    }  }  function index()  {    // redirect to account all the time    $this->redirect(array('action' => 'account'), null, true);  }

    June 18, 2011 @ 12:24 am
  78. Note: I have to use account.ctp so index () {} will then redirect to account.ctp.
    BTW: EMail still not sending, don’t know why.

    June 18, 2011 @ 1:03 am
  79. VoiDeT

    @Micahel – Instead of:

    $results = $this->User->findByUsername($username);

    Use a find(‘first’, array(‘conditions’ etc….
    You’re trying to find everyone with a username of $username, not just one.

    Also with email sending, make sure you have included the proper elements & layouts into your app directory.

    June 18, 2011 @ 8:19 am
  80. Hallo, thanks for the fast reply. Please provide us with more information about that all works in the view of just a simple user of your greate plugin. Else, it is not possible to get things up and running even within days, or even weeks if man is not a prof of CakePHP for years… searching forums, cake-doc, code… etc. a simple whole up-and-running code example would be much more easier and faster for your plugin users all over the world… :)

    Use a find(‘first’, array(‘conditions’ etc….

    -> What is the code exactly? I tried the find-first thing before, without any success. I am tiered of try-and-error methode. I know that I need only the first mach in the multi-dimentional array from database model “user” or users… thats not clear in CakePHP… sometings its User, then user, then users…

    Do I have to use $user, $users, $User, or thatever… I don’t know. I think it should be $user as defined in the MODEL.

    I alway get an Notice, Undefined variable:
    Notice (8): Undefined variable: user [APP/views/users/account.ctp, line 9]

    Is this correct? How can I debug it to see if a value is there?

    $username = $this->Session->read(‘user’);
    if ($username) {
    $results = $this->User->find(‘first’, array(‘conditions’ => array(‘User.username’ => $username )));
    //$results = $this->User->findByUsername($username);
    $this->set(‘user’, $results[‘User’]);

    — Controller: ————-
    function account()
    {
    $username = $this->Session->read(‘user’);
    if ($username) {
    $results = $this->User->find(‘first’, array(‘conditions’ => array(‘User.username’ => $username )));
    //$results = $this->User->findByUsername($username);
    $this->set(‘user’, $results[‘User’]);
    }
    }

    ———————–

    —- account.ctp ————–
    <p>read('Auth.User.username');$n1 = $session->read('Auth.User.first_name');$n2 = $session->read('Auth.User.last_name');$LL = $session->read('Auth.User.last_login');echo "Email: " . $user['User']['email'];echo "Hello <b>$nz</b> ($n1 $n2)! [last active: $LL] ";echo $html->link('Logout', array('controller' => 'users', 'action' => 'logout'));?>link('knownusers', array('action' => 'knownusers'));?>
    ——————

    You wrote “Also with email sending, make sure you have included the proper elements & layouts into your app directory.”

    -> Please provide us with some simple but with some up-and-working code not with just code-fractions without any context… it is nearly impossible to get this to work without the inside knowledge if the plugin and with very good CakePHP knowledge.
    Should works out-of-the box, with some documentation how it works within the Plugin just that much that a Plugin user don’t need to study the plugin code itself; but just the user-interface and simple basic usage. Then from that simple but clear code base a experienced programmer can do the needed work far easier by adapting the existing code :)

    I really can’t figure out where and what I must config to get email verification up-and-running, even if I looked through the whole code + docu.

    Anyway, these things should be intergrated in a framework maybe later on… the CakePHP doc is good… but does not provide any usefull examples, also does not allow php-users to contribute example-code like php.net does. Maybe this should be able also in the near feature. :)

    Anyway, thanks for your good work and for the plugin.

    June 18, 2011 @ 9:44 am
  81. EMAIL activation
    ============

    I found out, that my system can in fact send emails. I did a simple test, just coded this into an existing CONTROLLER function (simple_message.ctp not neede here):
    ————
    $this->Email->to = ‘PUT-YOUR-OWN-EMAIL-ADDRESS-HERE';
    $this->Email->subject = ‘Test email from cakephp.';
    $this->Email->replyTo = ‘[email protected]';
    $this->Email->from = ‘Cool Web App ‘;
    $this->Email->template = ‘simple_message'; // note no ‘.ctp’
    $this->Email->sendAs = ‘both'; // because we like to send pretty mail
    $this->Email->send();
    ———–
    This is maybe a first test a plugin user can do, just to make sure that the ISP+PHP+Email config on his host can actually send emails.

    Then just simply call:
    http://www.YOURDOMAIN.com/YOUR-APP/users/forgotten_password
    Enter an email of a registered user of a test account which have your own email address in database stored.

    -> You should get a reset-your-password message. (I don’t know how this actually works, how it resets the password, and what the new password is, e tc… I just see an new HASH within the database in the field: password_reset) See your MySQL database.

    If you receive email, thats a good sign I think… :)

    But I still do not received any email after register a new user (welcome message).

    I have the welcome.ctp configured in the plugin config file and stored on the server:
    /YOURAPP/app/plugins/sign_me_up/views/elements/

    -> It is not clear where to put the EMAIL CTP files. Within the PLUGIN directory of within the /app/views/elements/email/text/*.ctp … /html/*.ctp ?

    BTW: I was able to login without enter an activation code before. Don’t know why.

    USER UN-REGISTER
    ==================

    Other question: Is it possible that registred users can un-register themselfs ?
    Something like:

    http://your-url-here……/users/unregister

    User: foo

    [ Un Register ]

    If a user clicks on [ Un Register ] he receives an email with a need to confirm to proceed.
    Then gets a short E-Mail that he is not registred anymore and will receive no more e-mails, etc… with a link to your app sure… maybe if the user want to register again, or with an other e-mail etc,… :)

    June 18, 2011 @ 8:16 pm
  82. EMAIL ACTIVATION
    ==============

    I found out that all EMAIL templates (.ctp files) *must* be stored within the following directory on your server:

    /public_html/YOURAPP/app/views/elements/email/html/*.ctp

    At least this is relevant for the forgotten_password.ctp file.

    After haveing your .ctp files setup up, go to:
    http://YOURDOMAIN/YOURAPP/users/forgotten_password

    Enter valid email address of your registred user.
    You should get a message like:

    Thank you. A password recovery email has now been sent to YOUR-EMAIL-SHOWS-UP-HERE.
    And you will be redirected to the LOGIN SCREEN.

    If not, the forgotten_password.ctp file is not in place or not in correct directory or whatever.

    BTW: I use sign_me_up_welcome.ctp now — I just configured and renamed that…. but still not working, not sending me any email after registration.

    I can go to ./users/register

    Enter e-mail, username, password twice, hit register.
    Then it will go to ./users/activate showing me the ACTIVATE YOUR ACCOUNT SCREEN:

    Activate Your Account
    Please paste your activation code below:
    Activation Code

    There is not message like in forgot-password, as expeced, maybe: “an email has sent to your email account, please open it and past activation code below.” etc…

    Maybe there is no such message within the plugin, or something with the .CTP templates is wrong. Don’t know why.

    June 18, 2011 @ 8:40 pm
  83. Your
    public function forgottenPassword() {
    function within the plugin does not seems to work.

    It never resets the password.

    if (!empty($this->controller->params[$password_reset_field])) {
    $this->__generateNewPassword($model);
    } elseif (!empty($password_reset_field) && !empty($data[‘email’])) {
    $this->__requestNewPassword($data, $model);
    }

    Somehow it never jumps to
    __generateNewPassword(…)

    The problem seems with the code:
    if (!empty($this->controller->params[$password_reset_field])) {

    The request password URL is something like:
    http://localhost/myapp/users/forgotten_password/password_reset:9321127326442602532a9a81f1db9759

    Please help. :)

    June 21, 2011 @ 3:20 am
  84. VoiDeT

    @ Michael – Please debug your code in the plugin to show the contents of params: debug($this->controller->params); then show me the output with that URL in the address bar you posted.

    June 21, 2011 @ 6:41 am
  85. I call this URL as requested in the forgotten-request-email:
    http://localhost/www-seo/users/forgotten_password/password_reset:76762ff02b15d5933dc37e22ae3a2da3

    apppluginssign_me_upcontrollerscomponentssign_me_up.php (line 204)Array(    [controller] => users    [action] => forgotten_password    [named] => Array        (            [password_reset] => 76762ff02b15d5933dc37e22ae3a2da3        )    [pass] => Array        (        )    [plugin] =>     [form] => Array        (        )    [url] => Array        (            [url] => users/forgotten_password/password_reset:16762ff02b15d5933dc37e22ae3a2da2        ))

    June 21, 2011 @ 9:08 pm
  86. For your upcomming FAQ ;)
    Q: How can I test email system within a localhost setup?
    A: Just install Text Mail Server Tool. If you need to test your EMAIL Auth things, just install “Test Mail Server Tool”. It will allow to test your email system with php/cakePHP whatever on your localhost cakephp setup. Donwload and install here: http://www.toolheap.com/test-mail-server-tool/

    June 21, 2011 @ 9:13 pm
  87. VoiDeT

    @Michael – Please ensure you have a route set up to capture the password_reset field you are using:

    Router::connect(‘/forgotten_password/:password_reset’, array(‘controller’ => ‘users’, ‘action’ => ‘forgotten_password’), array(‘pass’ => ‘password_reset’));

    June 21, 2011 @ 9:48 pm
  88. @VOIDET: Thank you for putting together this wonderful user system. Please excuse our ungracious brother and accept my thanks on behalf of noobs everywhere.

    I have an unusual problem. I’m working to get the default running. Everything appears to be normal except for a strange bug: when I post valid registration input to /users/register, my browser reports that the server returned no data. I’ve traced the problem back to the validation rule ‘isValid’ in the plugin model behavior. When I remove the rule, everything works as intended. When I have the rule, registration returns a blank screen–unless the post’d data doesn’t validate, in which case everything works as intended and I get a pretty error message.

    This is beyond my understanding of CakePHP. Please advise. And thanks again.

    July 1, 2011 @ 5:40 pm
  89. To follow up, I attempted downgrading my core to 1.3.6 from 1.3.10 but had the same results.

    July 1, 2011 @ 5:54 pm
  90. VoiDeT

    @The Batman – Hey thanks! Much appreciate the kind words and I totally agree with what you say :) Anyhow I am trying to isolate your issue based on what you’ve mentioned. Do you see a blank screen when you submit the form? Where in my behaviour do you see the isValid? Or did you mean isUnique? Please paste me your controller and model files, and I would be more than happy to lend a hand!

    July 1, 2011 @ 10:44 pm
  91. Oh man, it was getting late last night :) The rule is an email rule entitled ‘validEmail’ in the sign_me_up.php behavior. This is the line:

    ‘rule’ => array(‘email’, true),

    Removing the second function parameter (which attempts to check if the email hostname is valid) solves the problem.

    For the record, all my cake stuff is fresh out of box. Installing this user system is the first and only thing I’ve done on this app. Also, using PHP 5.2.11 on OS X 10.5 with a mostly default configuration.

    July 2, 2011 @ 11:50 am
  92. VoiDeT

    Hey Edward. No problem! You can simply override that check. Looks like its not resolving and dying, which I have seen happen on some other people’s connections with email sending. You can easily override SignMeUp’s validation by placing that validation field to override SignMeUp’s validation rules :)

    July 2, 2011 @ 5:36 pm
  93. Hi,

    first of all many thanks for the effort you put into this. I am using the plugin in one of my projects, in fact my first cakephp project.

    I have run into a problem that puzzles me:
    – when developing and testing locally, the registration went fine
    – after I ported everything on the server, the registrations still seems to run fine, two friends were able to register, but the e-mail address is not saved.

    This is a bit hard to analyze for me as the problem only occurs on the remote web server, but not locally.

    The table for the users data is the same locally and remote, especially the field name for the email address is the same (“email”).

    The sign me up settings are the same, especially the value for e-mail field is the same (“email”)

    The register form is the same, especially the name of the email text field is “data[User][email]”.

    The validation of the e-mail field also works. If I don’t enter an e-mail address, the registration form appears again with an appropriate message.

    I also checked in the user controller, in the function register, before it calls $this->SignMeUp->register();, what the value for $this->data[‘User’][‘email’] is, and it is the e-mail address that was entered in the form.

    However, when in the sign me up controller the command $this->controller->{$model}->save($this->controller->data, false) is performed, the username and password enetred are stored, but the email isn’t.

    I guess this is something stupid on my behalf, but maybe somebody has an idea about what is going wrong there.

    Best regards,

    Christian

    July 6, 2011 @ 8:51 am
  94. VoiDeT

    @Christian – That is just weird! I would perhaps debug out the data right before the save in the plugin. See if email is still present.

    July 6, 2011 @ 11:57 am
  95. More than weird yes. As I said, I tested registering locally, and it always worked. Then when I updated the version on the remote server, I saw that two friends registered, and that the email fields were empty.

    So I tried it myself on the remote server and locally, and remote the email was not saved, but locally it was. The databases are different of course, but the structures of the tables and everything is the same.

    I did what you proposed, and the email field was in the data. Even weirder was, that I saw that with the test registration I did to trigger the output of the data, the email was saved in the database.

    So I deleted the debug command again and tried another test registration, and the email was also saved.

    It seems still quite suspicious, why would a glitch in the provider’s system prevent one field of the database from being saved temporarily, whereas other fields were saved correctly.

    Th only difference is that I now tested from another computer, than yesterday in the evening. I will have to check whether the email is saved when I register from the first computer, and I will check whether it works when other people register from other computers.

    Thanks a lot for your help, best regards

    Christian

    July 6, 2011 @ 8:45 pm
    • VoiDeT

      @Christian – Yeh that is interesting! Unless another part of your application was wiping the email field, or resaving the user with the email key there but empty skipping validation? This is a stretch, but that is one weird issue.

      July 7, 2011 @ 1:51 pm
  96. Hi,

    two minor proposals:
    1. In order to get everything running on my remote server, I had to change the code for __setTemplate: You used a hard coded “\” as a directory separator. Thus on my remote server the template files were not found. I inserted DIRECTORY_SEPARATOR at the appropriate places
    2. I will make use of __() within setFlash() to be able to internationalize the messages (my website is in German language for now).

    Best regards,

    Christian

    July 13, 2011 @ 1:21 am
  97. VoiDeT

    @Christian – Both valid! I will add these in when I get a chance. Thanks for the great feedback :) I really should of done it from the beginning!

    July 13, 2011 @ 7:15 pm
  98. Hi

    Thank you very much for this great plugin, cakephp should actully include it with the framework.

    Is it possible anyway to include facebook & twitter login to this plugin?

    July 21, 2011 @ 6:41 am
  99. Hi

    This is a small bug in the file readme.markdown

    $config[‘SignMeUp’] = array(
    ‘from’ => ‘ExampleDomain.com ‘,
    ‘layout’ => ‘default’,
    ‘subject’ => ‘Welcome to ExampleDomain.com %username% using email address %email%’,
    ‘sendAs’ => ‘text’,
    ‘activation_template’ => ‘activate’,
    ‘welcome_template’ => ‘welcome’,
    ‘password_reset_field’ => ‘password_reset’,
    ‘password_reset_template’ => ‘forgotten_password’,
    ‘password_reset_subject’ => ‘Password reset from MyDomain.com’,
    ‘new_password_template’ => ‘new_password’,
    ‘new_password_subject’ => ‘Your new password from MyDomain.com’,
    ‘xMailer’ => ‘ExampleDomain.com Email’,
    );

    the welcome subject variable should be ‘welcome_subject’ => ‘Welcome’,

    Thanks

    July 21, 2011 @ 8:00 am
  100. Hi

    I just have 2 questions:

    1. anyway (easy way :) ) to make the user name the email itself (so user can register/login with email)
    2. How can I set “Remember me” with the plugin ?

    July 21, 2011 @ 8:14 am
  101. VoiDeT

    Hey Ahmad,

    At this point in time I have no plan to use twitter & facebook for signups. But if I see enough requests for it I would be happy to build that in.

    I’ve fixed up the issue with the documentation. Just wish I had more time to update it a little further. I haven’t tried to only use an email field. But you could try setting the username_field to be that of your email and make sure you change the validation also.

    If you want a remember me type function I recommend you checkout my other plugin RememberMe: https://github.com/voidet/remember_me It is quite secure. I just need to finish off the blog post about it :D

    Thanks again!

    July 21, 2011 @ 8:37 am
  102. Your plugin is fantastic however it won’t send emails for me. I have added my smtp details to the sign_me_up.php file but I just can’t get it to send any activation email after I fill in the registration form.

    Thanks so much.

    July 31, 2011 @ 1:51 am
    • VoiDeT

      Hey Daniel thanks for the comments. Much appreciated. With the email sending I would triple check that all email templates and the layouts are set up correctly. Let me know if you have further difficulties. Perhaps post your configuration file too. Cheers :)

      July 31, 2011 @ 9:19 am
  103. Thanks VoiDeT. It was trying to send an email using a template which did not exist. I created the elements/email/text/activate.ctp and all is working now. Again, well done – this is a great module!

    August 1, 2011 @ 2:57 am
  104. Thanks Mate.!!! I have been looking for such thing for my website since long. Our users are signing up with all junk email addresses till now.

    August 12, 2011 @ 6:18 am
  105. eagleman

    How would you suggest is the best way to adapt this plugin so that some users can have access to the admin section?

    August 24, 2011 @ 3:49 am
  106. VoiDeT

    @EAGLEMAN best way is to roll your own in your application. Using user scope or checking the route prefixes and then setting auth up accordingly (although you can run into some issues if you set up different auth keys)

    September 19, 2011 @ 9:28 pm
  107. VoiDeT

    Want to get expressions of interest of integrating generic captcha functionality/validation into SignMeUp. Was planning on having a captcha field & session variable set on load, your own captcha plugin tells SignMeUp what code to expect, SignMeUp sets up the session, then validates the posted value on post. If anyone wants this functionality leave a comment and happy to get to work :D

    September 19, 2011 @ 9:30 pm
  108. Hello VOIDET, This plugin is wonderful, would be really interesting integrating CAPTCHA. Will you update to Cakephp 2.0? Thank you.

    October 21, 2011 @ 6:16 am
  109. Sorry, Im reading now cakephp 2.0 migration :-)

    October 21, 2011 @ 6:17 am
    • VoiDeT

      Almost there with cake2 migration. Sign me up works with cake 2 I just need access to the web to push my updates :) should be early this week!

      October 23, 2011 @ 10:03 am
  110. Hi VoiDeT,

    Thank you very much for creating this plugin, it looks great, I definitely want to use this in my app. I’m new to Cake, and am having some trouble integrating the plugin, I’m hoping you can help me.

    Here’s what I did, I followed this tutorial exactly: http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html

    I created the app. I then integrated your plugin, of course, I changed the Users table to match the schema you created.

    Some of the features are working, but I’m having the following issues:

    – The authentication_field isn’t created/stored in the database when I register a new user (though, the user is created in the database
    – I can’t login anymore, I keep getting an error that the username/password are incorrect.

    It would be great if you had a working example based on that tutorial, but I’m guessing you don’t have that.

    Do you have a full working “base” app with your plugin, including the sql file? I was hoping I could compare your example against mine to see where I’m going wrong.

    October 24, 2011 @ 3:32 am
  111. Aha… got it figured out, typo in the settings – oops! Great plugin, thanks!

    October 26, 2011 @ 10:20 am
  112. VoiDeT

    Good to hear Andy.
    Just want to hear if anyone is using this in production under Cake 2.0 yet?

    November 2, 2011 @ 7:26 pm
  113. Hello Voidet:

    Im testing the cakephp 2.0 version. The problem is that dont find the elements in the view

    Example: When I go to http://cakephp/register = Element Not Found: Elements/register.ctp :-(

    What could be happen?

    Thank you for your attention. Greetings from Venezuela :-)

    November 3, 2011 @ 1:52 am
  114. VoiDeT

    @Jóse With 2.0, you need to include elements like:
    echo $this->element(‘register’, array(), array(‘plugin’ => ‘SignMeUp’));

    where the empty array is data you want to pass to the element. Let me know if that is what you’re doing.

    November 3, 2011 @ 6:55 am
  115. Mike

    Hi, how can I specify an extra fields and its values i want to be saved in users records in database when register?

    November 5, 2011 @ 2:35 am
  116. I was having the same problem as Jóse as I followed your instructions as posted:
    echo $this->element(‘register’, array(‘plugin’ => ‘SignMeUp’));
    and your fix in comments worked a charm. Perhaps you can correct the documentation for future users?

    Unfortunately I’m having a different problem now. I was having problems integrating your plugin with my app (Cake 2), so I decided to start from scratch with the blog and auth tutorials and then add the plugin.

    Everything works to register, activate, and login, however I am not able to logout. Hitting http://mysite/logout follows the redirect, but never actually logs the user out. Once logged in if I hit login, logout, or register it just takes me back to the listing of blog posts. If I close the browser I’m able to login, but once logged in I can never get out.

    I reloaded the tutorial files and all was well so clearly I screwed something up when adding the plugin.

    My logout function in UsersController.php is:

    public function logout() {
    $this->redirect($this->Auth->logout());
    }

    Any pointers?

    January 11, 2012 @ 4:58 pm
    • VoiDeT

      Hey Chooch,

      Thanks for that. Were you using a remember me plugin or function at all?
      That is the correct usage in Cake2 to logout, so something weird must be going on there.
      Maybe remove the redirect and place a debug(‘here’); exit; in the action after logout to ensure its hitting that action and the logout function.

      January 11, 2012 @ 5:06 pm
  117. Well, not sure where it was I went wrong but I just went ahead and rolled back my tutorial file and re-added the plugin and it works great now :)

    In doing so it reminded me that another missing piece in the documentation is that you need to load the plugin in the bootstrap file, assuming people aren’t doing loadAll:
    CakePlugin::load(‘SignMeUp’);

    Thanks for sharing your plugin, and for the excellent support!

    January 12, 2012 @ 2:26 pm
  118. found bug in Plugin/sign_me_up/models/behaviors/sign_me_up.php

    public function beforeValidate(

    the function shoud return true.
    public function beforeValidate(&$Model) { $this->model = $Model; $this->model->validate = array_merge($this->validate, $this->model->validate); return true; }

    April 20, 2012 @ 9:20 pm
    • VoiDeT

      The 1.3 branch did not have this thank you. Added this in.
      2.x branch this was added in. Don’t know what I was thinking :D

      April 28, 2012 @ 10:21 pm
  119. When submiting the register form I get folowing errors:

    Notice: Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 437

    Database Errors:

    SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘generateActivationCode’ at line 1

    SQL Query: generateActivationCode

    I using CakePHP 2.1.2

    May 9, 2012 @ 7:41 pm
    • VoiDeT

      Hi there,

      I believe you haven’t attached the behaviour onto the model:

      public $actsAs = array(‘SignMeUp.SignMeUp’);

      That would usually be on your user model that you’re using for Auth

      May 9, 2012 @ 8:25 pm
  120. hmm… model wasn’t baked first time and I had UserModel.php instad of User.php ^^
    But for now I encounter that problem when send the register form:

    Notice (8): Trying to get property of non-object [APP/Plugin/SignMeUp/Controller/Component/SignMeUpComponent.php, line 64]

    The user is created and the mail send, but I am not redirected (beause the notice) and no activation code is created!

    And it seems to be different config arrays in SignMeUp/Controller/ComponentSignMeUpComponent.php, SignMeUp/sign_me_up.php.example and SignMeUp/Config/sign_me_up.php.default

    This is very confusing!

    May 10, 2012 @ 2:01 am
  121. VoiDeT

    Hey Greg,

    Thanks for the feedback. I will get that example config file updated for you.
    For the time being you can see the defaults you can override from within the component, so:

    public $defaults = array(
    ‘activation_field’ => ‘activation_code’,
    ‘useractive_field’ => ‘active’,
    ‘login_after_activation’ => false,
    ‘welcome_subject’ => ‘Welcome’,
    ‘activation_subject’ => ‘Please Activate Your Account’,
    ‘password_reset_field’ => ‘password_reset’,
    ‘username_field’ => ‘username’,
    ‘email_field’ => ‘email’,
    ‘email_layout’ => ‘default’,
    ‘password_field’ => ‘password’,
    ‘activation_template’ => ‘activate’,
    ‘welcome_template’ => ‘welcome’,
    ‘password_reset_template’ => ‘forgotten_password’,
    ‘password_reset_subject’ => ‘Password Reset Request’,
    ‘new_password_template’ => ‘recovered_password’,
    ‘new_password_subject’ => ‘Your new Password’
    );

    My line 64 is $subject = $this->settings->{$action.’_subject’};

    So perhaps this has to do with the settings?
    Please advise your line 64 is indeed the same as mine and I will try help you further.

    As for your error,

    May 10, 2012 @ 6:58 am
  122. This is an awesome plugin. Will it work on Cakephp 2.1?

    May 13, 2012 @ 12:33 am
  123. Yes it’s line 64 is $subject = $this->settings->{$action.’_subject’};

    It appears that there is a problem with the activation_code is not generated because it’s not in the mail and not in the database.

    May 16, 2012 @ 7:04 am
  124. error messages;

    Notice (8): Array to string conversion [CORE/Cake/Model/Datasource/DboSource.php, line 437]
    Code Context
    $query = $this->_connection->prepare($sql, $prepareOptions);
    $query->setFetchMode(PDO::FETCH_LAZY);
    if (!$query->execute($params)) {
    $sql = ‘generateActivationCode’
    $params = array(
    (int) 0 => array(
    )
    )
    $prepareOptions = array()
    $this = object(Mysql) {}
    $query = object(PDOStatement) {}
    PDOStatement::execute() – [internal], line ??
    DboSource::_execute() – CORE/Cake/Model/Datasource/DboSource.php, line 437
    DboSource::execute() – CORE/Cake/Model/Datasource/DboSource.php, line 403
    DboSource::fetchAll() – CORE/Cake/Model/Datasource/DboSource.php, line 647
    DboSource::query() – CORE/Cake/Model/Datasource/DboSource.php, line 589
    Model::__call() – CORE/Cake/Model/Model.php, line 775
    AppModel::generateActivationCode() – APP/Plugin/SignMeUp/Controller/Component/SignMeUpComponent.php, line 93
    SignMeUpComponent::register() – APP/Plugin/SignMeUp/Controller/Component/SignMeUpComponent.php, line 93
    UserController::register() – APP/Controller/UserController.php, line 43
    ReflectionMethod::invokeArgs() – [internal], line ??
    Controller::invokeAction() – CORE/Cake/Controller/Controller.php, line 485
    Dispatcher::_invoke() – CORE/Cake/Routing/Dispatcher.php, line 103
    Dispatcher::dispatch() – CORE/Cake/Routing/Dispatcher.php, line 85
    [main] – APP/webroot/index.php, line 97

    May 17, 2012 @ 1:49 pm
  125. I using cakephp 2.1.2

    Database Error
    Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘generateActivationCode’ at line 1
    SQL Query: generateActivationCode

    May 17, 2012 @ 1:52 pm
  126. great plugin buddy but im getting an error

    Could not send email.
    Error: An Internal Error Has Occurred.

    Stack Trace
    CORECakeNetworkEmailCakeEmail.php line 972 → MailTransport->send(CakeEmail)

    July 20, 2012 @ 3:27 am
  127. Just awesome … many thanks!

    Newbie question in a brand new project with only auth componente been used, i have a blank page returning when visit app/users/register

    any help?

    tnx

    July 20, 2012 @ 6:55 am
  128. Now im getting this error

    Missing View
    Error: The view for UsersController::register() was not found.

    Error: Confirm you have created the file: C:xampphtdocsProjectsjob4seekersappViewEmailstextactivate.ctp

    July 20, 2012 @ 7:18 pm
  129. hi i already fixed some issues but i keep running on anew problems…after email was sent and i click on the activation link it does not activate but it will redirect you to activate.ctp why is it?

    July 21, 2012 @ 3:41 pm
  130. VoiDeT

    @MIRK that is odd. Ensure that debug is set to 2 and that you don’t see any errors. If you’re still getting a white page ensure that the view being called is not empty. Failing that check that you’re not using security component. Let me know.

    @IAN please show me the url that is in the email and paste your routes.

    July 21, 2012 @ 9:47 pm
  131. here is the link that was send to me

    In order to get started please click on the following link to activate your account:

    http://test.localhost.com/users/activate/activation_code:92e8bf3d974175ecc9d8cba6119b4c342702ada0

    We look forward to seeing you!
    Regards,
    MyDomain.com Staff

    and here is my routes

    Router::connect(‘/register’, array(‘controller’ => ‘users’, ‘action’ => ‘register’));
    Router::connect(‘/activate’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’));
    Router::connect(‘/activate/:activation_code’, array(‘controller’ => ‘users’, ‘action’ => ‘activate’), array(‘pass’ => ‘activation_code’));
    Router::connect(‘/forgotten_password/:password_reset’, array(‘controller’ => ‘users’, ‘action’ => ‘forgotten_password’), array(‘pass’ => ‘password_reset’));
    Router::connect(‘/login’, array(‘controller’ => ‘users’, ‘action’ => ‘login’));
    Router::connect(‘/logout’, array(‘controller’ => ‘users’, ‘action’ => ‘logout’));

    July 21, 2012 @ 10:47 pm
    • VoiDeT

      Looks like the routes are broken. Please paste your view (email template) I want to see what exactly is going on here.

      July 21, 2012 @ 10:53 pm
  132. heres my email template
    let me remind you that im using 2.x version of Cake

    D:xampphtdocsProjectsTestappViewEmailstext

    Welcome ,

    In order to get started please click on the following link to activate your account:

    ‘activate’, ‘activation_code’ => $user[‘activation_code’]), true).”n”; ?>

    We look forward to seeing you!
    Regards,
    MyDomain.com Staff

    Forgotten Password

    Hi ,

    Someone (hopefully you) has requested a password reset on your account. In order to reset your password please click on the link below:

    Html->link(‘Reset your password’, Router::url(array(‘action’ => ‘forgotten_password’, ‘password_reset’ => $user[‘password_reset’]), true)); ?>

    Regards,
    MyDomain.com Staff

    Welcome

    Welcome ,

    Thanks for registering! See you inside :)

    We look forward to seeing you!
    Regards,
    MyDomain.com Staff

    July 22, 2012 @ 1:46 am
    • VoiDeT

      I can see your issue. You need to add controller => users in the link array otherwise it doesn’t know how to route to pretty URLs

      July 22, 2012 @ 8:11 am
  133. where will i put that?in my route? can you specify it viodet?

    July 22, 2012 @ 11:48 am
  134. please can you rewrite the fix here?

    July 23, 2012 @ 11:13 am
  135. VoiDeT

    $this->Html->link(‘Reset your password’, Router::url(array(‘action’ => ‘forgotten_password’, ‘password_reset’ => $user[‘password_reset’]), true)); ?>

    to

    $this->Html->link(‘Reset your password’, Router::url(array(‘controller’ => ‘users’, ‘action’ => ‘forgotten_password’, ‘password_reset’ => $user[‘password_reset’]), true)); ?>

    July 23, 2012 @ 9:15 pm
  136. how about the activation link?

    July 23, 2012 @ 9:45 pm
  137. hi VOIDET, i have debug set to 2, and the view isn’t empty but i still get the blank page.

    what do u mean with “security component”?

    thanks

    July 24, 2012 @ 2:18 am
  138. i’m using only the Auth component…maybe it helps

    July 24, 2012 @ 2:24 am
  139. its still dont work

    July 24, 2012 @ 11:51 am
  140. if i click the activation link that was send by the email it will redirect me to the activate.ctp. I want is that when i click the link it is automatically activate without me entering the activation code manually

    July 24, 2012 @ 2:46 pm
  141. i’ve find the issue…. some field were missing in my db (activation_code and password_reset) :-
    maybe will help someone.

    July 26, 2012 @ 2:33 am
  142. Hi I am new to cakephp but I already got some thing up and running. I use Cakephp 2.2 (the last one) and i tried to add your plugin (thanx btw).
    I get an error
    Error: SignMeUp.SignMeUpComponent could not be found.
    Error: Create the class SignMeUpComponent below in file: /var/www/sites/cphp/app/Plugin/sign_me_up//Controller/Component/SignMeUpComponent.php

    Do you know whats the problem?

    November 4, 2012 @ 9:58 pm
  143. Conor

    I am having issues with the default naming conventions of the files in the zip and git-clone download. The first is that the plugin folder is named ‘sign_me_up’ and CakePHP expects SignMeUp. Inside the SignMeUp folder, the sub-folders are all lowercase. However, when I view my CakePHP website in a web browser I am getting messages such as: Error: Create the class SignMeUpBehavior below in file: /var/www/cakephp/app/Plugin/SignMeUp/Model/Behavior/SignMeUpBehavior.php

    I think this problem can be resolved by simply renaming files or folders…is this right?

    December 28, 2012 @ 10:12 pm
  144. Conor

    Hi,
    I’m not sure if my previous comment was published. If so, the issue I described was probably due to me pulling the wrong branch from github. I should have been checkout out branch 2.0.

    Thanks!

    December 28, 2012 @ 10:19 pm
  145. Hello,
    I’m attempting to use your SignMeUp plugin in combination with this ACL plugin from code canyon.
    http://codecanyon.net/item/cakephp-20-authentication-acl-management-plugin/1325808
    I’ve followed all the instructions and all files are now setup.
    The problem I’m having is with both the registration and forgotten password actions. When I press submit on both nothing happens. I’ve checked the User controller and model to ensure that SignMeUp is included and it is.
    I’ve not included a plugin into another plugin before. Perhaps there’s something I’ve overlooked with this regard.
    If you could recommend something to try or check I’d really appreciate it.
    Cheers, Paul

    January 15, 2013 @ 7:41 am
  146. As an update to my last comment, I did find this link to assist with getting the registration action to insert data to the db.
    http://stackoverflow.com/questions/12548454/cakephp-passing-data-to-plugin
    However, for some reason the name, password, email and activation code aren’t inserted into the users table, even though the fields are there.
    Any additional help is appreciated.

    January 15, 2013 @ 10:45 am
  147. Hi VOIDET

    Thanks for awesome plugin. I tried it but when I came to localhost/cakePHP/users it gave me this error

    Error: Create the class SignMeUpComponent below in file: D:\wamp\www\CakePHP\app\Plugin\SignMeUp\\Controller\Component\SignMeUpComponent.php

    I see that it tried to direct to SignMeUp\\Controller instead of SignMeUp\Controllers

    Do you have any opinions on where this might come from ?

    Please help me out

    Hildon

    May 30, 2013 @ 11:44 am

2 Trackbacks

  1. […] This post was mentioned on Twitter by Planet CakePHP, Ryutaro YOSHIBA. Ryutaro YOSHIBA said: ユーザー登録フォームを簡単に作れるプラグイン。メールアドレス確認によるactivationもできるし / Sign Me Up A CakePHP User Registration Plugin http://htn.to/jKpWAH […]

  2. By L’Emilia, il terremoto e… cakephp : Essemme on June 14, 2012 at 5:24 am

    […] plugin (Google Map Plugin di Mark, il mio AddressFinder Helper, il Facebook plugin di Nick baker, Sign Me Up di Voidet, il Filter Plugin di Dean Sofer, poco mio codice riciclato..) ho potuto mettere assieme […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

or