Attendize/app/Http/Controllers/UserSignupController.php

97 lines
2.9 KiB
PHP
Raw Normal View History

2016-03-05 00:18:10 +00:00
<?php
2016-02-29 15:59:36 +00:00
2016-03-05 00:18:10 +00:00
namespace App\Http\Controllers;
use App\Attendize\Utils;
use App\Models\Account;
use App\Models\User;
use Illuminate\Contracts\Auth\Guard;
2016-03-09 22:05:39 +00:00
use Illuminate\Http\Request;
2016-02-29 17:38:01 +00:00
use Mail;
2016-03-09 22:05:39 +00:00
use Hash;
2016-02-29 15:59:36 +00:00
2016-03-05 00:18:10 +00:00
class UserSignupController extends Controller
{
2016-02-29 15:59:36 +00:00
protected $auth;
2016-02-29 17:38:01 +00:00
2016-03-05 00:18:10 +00:00
public function __construct(Guard $auth)
{
if (Account::count() > 0 && !Utils::isAttendize()) {
2016-03-09 22:05:39 +00:00
return redirect()->route('login');
2016-02-29 17:38:01 +00:00
}
2016-02-29 15:59:36 +00:00
$this->auth = $auth;
$this->middleware('guest');
}
2016-03-05 00:18:10 +00:00
public function showSignup()
{
2016-03-09 22:05:39 +00:00
$is_attendize = Utils::isAttendize();
return view('Public.LoginAndRegister.Signup', compact('is_attendize'));
2016-02-29 15:59:36 +00:00
}
/**
2016-03-05 00:18:10 +00:00
* Creates an account.
2016-02-29 15:59:36 +00:00
*
2016-03-09 22:05:39 +00:00
* @param Request $request
*
* @return Redirect
2016-02-29 15:59:36 +00:00
*/
2016-03-09 22:05:39 +00:00
public function postSignup(Request $request)
2016-03-05 00:18:10 +00:00
{
2016-03-09 22:05:39 +00:00
$is_attendize = Utils::isAttendize();
$this->validate($request, [
'email' => 'required|email|unique:users',
'password' => 'required|min:5|confirmed',
'first_name' => 'required',
'terms_agreed' => $is_attendize ? 'required' : '',
]);
$account_data = $request->only(['email', 'first_name', 'last_name']);
$account_data['currency_id'] = config('attendize.default_currency');
$account_data['timezone_id'] = config('attendize.default_timezone');
$account = Account::create($account_data);
2016-03-05 00:18:10 +00:00
$user = new User();
2016-03-09 22:05:39 +00:00
$user_data = $request->only(['email', 'first_name', 'last_name']);
$user_data['password'] = Hash::make($request->get('password'));
$user_data['account_id'] = $account->id;
$user_data['is_parent'] = 1;
$user_data['is_registered'] = 1;
$user = User::create($user_data);
if ($is_attendize) {
// TODO: Do this async?
Mail::send('Emails.ConfirmEmail', ['first_name' => $user->first_name, 'confirmation_code' => $user->confirmation_code], function ($message) use ($request) {
$message->to($request->get('email'), $request->get('first_name'))
2016-03-02 23:37:33 +00:00
->subject('Thank you for registering for Attendize');
});
}
2016-02-29 15:59:36 +00:00
2016-03-09 22:05:39 +00:00
session()->flash('message', 'Success! You can now login.');
2016-02-29 15:59:36 +00:00
2016-03-09 22:05:39 +00:00
return redirect('login');
2016-02-29 15:59:36 +00:00
}
2016-03-05 00:18:10 +00:00
public function confirmEmail($confirmation_code)
{
2016-02-29 15:59:36 +00:00
$user = User::whereConfirmationCode($confirmation_code)->first();
2016-03-05 00:18:10 +00:00
if (!$user) {
2016-03-09 22:05:39 +00:00
return view('Public.Errors.Generic', [
2016-03-05 00:18:10 +00:00
'message' => 'The confirmation code is missing or malformed.',
2016-02-29 15:59:36 +00:00
]);
}
$user->is_confirmed = 1;
$user->confirmation_code = null;
$user->save();
2016-03-09 22:05:39 +00:00
session()->flash('message', 'Success! Your email is now verified. You can now login.');
2016-02-29 15:59:36 +00:00
//$this->auth->login($user);
2016-03-09 22:05:39 +00:00
return redirect()->route('login');
2016-02-29 15:59:36 +00:00
}
}