Attendize/app/Http/Controllers/UserSignupController.php

128 lines
3.6 KiB
PHP
Raw Normal View History

2016-02-29 15:59:36 +00:00
<?php namespace App\Http\Controllers;
use App\Attendize\Utils;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use View, Validator, Redirect, Hash, Auth, Input;
use App\Models\Account;
use App\Models\User;
class UserSignupController extends Controller {
protected $auth;
public function __construct(Guard $auth) {
$this->auth = $auth;
$this->middleware('guest');
}
public function showSignup() {
if(Account::count() > 0 && Utils::isAttendize()) {
return Redirect::route('login');
}
return View::make('Public.LoginAndRegister.Signup');
}
/*
* Validate an email
*/
/**
* Creates an account
*
* @return void
*/
public function postSignup() {
$rules = array(
'email' => array('required', 'email', 'unique:users'),
'password' => array('required', 'min:5', 'confirmed'),
'first_name' => array('required'),
'terms_agreed' => array('required')
);
$messages = array(
'email.email' => 'Please enter a valid E-mail address.',
'email.required' => 'E-mail address is required.',
'password.required' => 'Password is required.',
'password.min' => 'Your password is too short! Min 5 symbols.',
'email.unique' => 'This E-mail has already been taken.',
'first_name.required' => 'Please enter your first name.',
'terms_agreed.required' => 'Please agree to our Terms of Service.'
);
$validation = Validator::make(Input::all(), $rules, $messages);
if ($validation->fails()) {
return Redirect::to('signup')->withInput()->withErrors($validation);
}
$account = new Account;
$account->email = Input::get('email');
$account->first_name = Input::get('first_name');
$account->last_name = Input::get('last_name');
$account->currency_id = DEFAULT_CURRENCY;
$account->timezone_id = DEFAULT_TIMEZONE;
$account->save();
$user = new User;
$user->email = Input::get('email');
$user->first_name = Input::get('first_name');
$user->last_name = Input::get('last_name');
$user->password = Hash::make(Input::get('password'));
$user->account_id = $account->id;
$user->is_parent = 1;
$user->is_registered = 1;
$user->save();
/*
* Send a confirmation email.
* NOTE: $user->confirmation_code is generated by the model in the background
*/
\Mail::send('Emails.ConfirmEmail', ['first_name' => $user->first_name, 'confirmation_code' => $user->confirmation_code], function($message) {
$message->to(Input::get('email'), Input::get('first_name'))
->subject('Thank you for registering for Attendize');
});
\Session::flash('message', "Success! You can now login.");
return Redirect::to('login');
}
function confirmEmail($confirmation_code) {
$user = User::whereConfirmationCode($confirmation_code)->first();
if ( ! $user)
{
return \View::make('Public.Errors.Generic', [
'message' => 'The confirmation code is missing or malformed.'
]);
}
$user->is_confirmed = 1;
$user->confirmation_code = null;
$user->save();
\Session::flash('message', "Success! Your email is now verified. You can now login.");
//$this->auth->login($user);
return Redirect::route('login');
}
private function validateEmail($data)
{
$rules = [
'email' => 'required|email|unique:users'
];
return Validator::make($data, $rules);
}
}