diff options
author | Michael Francis <edude03@gmail.com> | 2011-07-10 00:36:26 -0400 |
---|---|---|
committer | Michael Francis <edude03@gmail.com> | 2011-07-10 00:36:26 -0400 |
commit | 821f6d08f47778e430c1368ad9b3fd5c2c9d70fb (patch) | |
tree | 74d52e5bafcd721726544d71351a9f946f26df59 | |
parent | cfba0ecd08b5af5a56cfdfe3e5225ae98f5107da (diff) | |
download | otakuhub-821f6d08f47778e430c1368ad9b3fd5c2c9d70fb.tar.xz |
Moved signup stuff to it's own controller
-rw-r--r-- | controllers/SignupController.php | 119 | ||||
-rw-r--r-- | views/signup/confirm.html.php (renamed from views/users/confirm.html.php) | 0 | ||||
-rw-r--r-- | views/signup/index.html.php (renamed from views/users/signup.html.php) | 0 |
3 files changed, 119 insertions, 0 deletions
diff --git a/controllers/SignupController.php b/controllers/SignupController.php new file mode 100644 index 0000000..6a9538a --- /dev/null +++ b/controllers/SignupController.php @@ -0,0 +1,119 @@ +<?php + +namespace app\controllers; + +use li3_swiftmailer\mailer\Transports; +use li3_swiftmailer\mailer\Message; +use app\models\User; +use app\models\confirmKey; + + +class SignupController extends \lithium\action\Controller { + public $publicActions = array('index','confirm', 'cancel' ); + + public function index() { + $user = null; + //If the request isn't empty + if($this->request->data) + { + //Create a user from the data + $user = User::Create($this->request->data); + + //The user isn't active until after they confirm. + $user->confirmed = false; + $user->active = false; + $user->joinedOn = Date("F j, Y, g:i a"); + + //By default save does validation at the same time, + //If there are errors its stuffs them into the $user->_erorrs variable, + //Accessible from $user->errors(), this is automatically passed to the view. + if ($user->save()) + { + //Generate a confirmation key for the user + $key = confirmKey::Create(array('key' => confirmKey::generate($user->email), 'username' => $user->username)); + + //Save it to the database + $key->save(); + + //Create the link for the user to click. + $link = $this->html->link('Here', array('controller' => 'signup', + 'action' => 'confirm', + 'args' => $key->key)); + + + $mailer = Transports::adapter('default'); + $message = Message::newInstance() + ->setSubject('Welcome to OtakuHUB') + ->setFrom(array('admin@weareotak.us' => 'OtakuHUB signup team')) + ->setTo(array($user->email)) + ->setBody("Hey! Wecome to our awesome site! Click $link to get started"); + + $result = $mailer->send($message); + + + return compact('key', 'link', 'user'); + } + } + //If there are validation errors, send them back to the form + return compact('user'); + } + + public function confirm($key = null) { + //Situation one + //They have a key + if (!(empty($key))) + { + //Find the key in the database + $foundKey = confirmKey::find('first', array('conditions' => compact('key'))); + + //If the key exists + if($foundKey) + { + //Find that user in the database + $foundUser = User::find('first', array('conditions' => array("username" => $foundKey->username))); + $valid = ($foundUser != NULL); + + //Set the users account active and confirmed. + $foundUser->confirmed = true; + $foundUser->active = true; + + //If the user is saved sucsessfully, + if($foundUser->save(null, array('validate' => false))) + { + /* If the save is sucsessful we are done */ + //Delete their key, + $foundKey->delete(); + + //Send them to the homepage (probably login though) + $this->redirect("/"); + + } + else + { + FlashMessage::set("There was an error."); + } + + } + else + { + //Otherwise + FlashMessage::set("There was an error finding the key."); + return; + } + } + } + + public function cancel($key = null) { + $thisKey = Key::find('first', array('conditions' => compact('key'))); + + //If the key exists + if ($thisKey) + { + $user = User::find('first', array('conditions' => array('username' => $thisKey->username))); + + $user->delete(); + $thisKey->delete(); + } + return; + } +}
\ No newline at end of file diff --git a/views/users/confirm.html.php b/views/signup/confirm.html.php index cd0a6a7..cd0a6a7 100644 --- a/views/users/confirm.html.php +++ b/views/signup/confirm.html.php diff --git a/views/users/signup.html.php b/views/signup/index.html.php index 5b26977..5b26977 100644 --- a/views/users/signup.html.php +++ b/views/signup/index.html.php |