Quellcode durchsuchen

Moved signup stuff to it's own controller

Michael Francis vor 14 Jahren
Ursprung
Commit
821f6d08f4
3 geänderte Dateien mit 119 neuen und 0 gelöschten Zeilen
  1. 119 0
      controllers/SignupController.php
  2. 0 0
      views/signup/confirm.html.php
  3. 0 0
      views/signup/index.html.php

+ 119 - 0
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; 
+	}
+}

+ 0 - 0
views/users/confirm.html.php → views/signup/confirm.html.php


+ 0 - 0
views/users/signup.html.php → views/signup/index.html.php