Update for Signup and Login

This commit is contained in:
Mark Walet 2016-03-09 23:05:39 +01:00
parent 6120216257
commit b318a9dd23
9 changed files with 182 additions and 151 deletions

View File

@ -4,9 +4,9 @@ namespace App\Http\Controllers;
use Auth;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Http\Request;
use Input;
use Redirect;
use Request;
use View;
class UserLoginController extends Controller
@ -19,14 +19,20 @@ class UserLoginController extends Controller
$this->middleware('guest');
}
public function showLogin()
/**
* Shows login form.
*
* @param Request $request
*
* @return mixed
*/
public function showLogin(Request $request)
{
/*
* If there's an ajax request to the login page assume the person has been
* logged out and redirect them to the login page
*/
if (Request::ajax()) {
if ($request->ajax()) {
return Response::json([
'status' => 'success',
'redirectUrl' => route('login'),
@ -37,20 +43,29 @@ class UserLoginController extends Controller
}
/**
* Handle the login.
* Handles the login request.
*
* @return void
* @param Request $request
*
* @return mixed
*/
public function postLogin()
public function postLogin(Request $request)
{
$email = Input::get('email');
$password = Input::get('password');
$email = $request->get('email');
$password = $request->get('password');
if ($this->auth->attempt(['email' => $email, 'password' => $password], true)) {
return Redirect::to(route('showSelectOrganiser'));
if (empty($email) || empty($password)) {
return Redirect::back()
->with(['message' => 'Please fill in your email and password', 'failed' => true])
->withInput();
}
return Redirect::to('login?failed=yup')->with('message', 'Your username/password combination was incorrect')
->withInput();
if ($this->auth->attempt(['email' => $email, 'password' => $password], true) === false) {
return Redirect::back()
->with(['message' => 'Your username/password combination was incorrect', 'failed' => true])
->withInput();
}
return Redirect::to(route('showSelectOrganiser'));
}
}

View File

@ -5,15 +5,10 @@ namespace App\Http\Controllers;
use App\Attendize\Utils;
use App\Models\Account;
use App\Models\User;
use Auth;
use Hash;
use Illuminate\Contracts\Auth\Guard;
use Input;
use Illuminate\Http\Request;
use Mail;
use Redirect;
use Session;
use Validator;
use View;
use Hash;
class UserSignupController extends Controller
{
@ -22,7 +17,7 @@ class UserSignupController extends Controller
public function __construct(Guard $auth)
{
if (Account::count() > 0 && !Utils::isAttendize()) {
return Redirect::route('login');
return redirect()->route('login');
}
$this->auth = $auth;
@ -31,67 +26,51 @@ class UserSignupController extends Controller
public function showSignup()
{
return View::make('Public.LoginAndRegister.Signup');
$is_attendize = Utils::isAttendize();
return view('Public.LoginAndRegister.Signup', compact('is_attendize'));
}
/**
* Creates an account.
*
* @return void
* @param Request $request
*
* @return Redirect
*/
public function postSignup()
public function postSignup(Request $request)
{
$rules = [
'email' => ['required', 'email', 'unique:users'],
'password' => ['required', 'min:5', 'confirmed'],
'first_name' => ['required'],
'terms_agreed' => Utils::isAttendize() ? ['required'] : '',
];
$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' : '',
]);
$messages = [
'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 = config('attendize.default_currency');
$account->timezone_id = config('attendize.default_timezone');
$account->save();
$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);
$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();
$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 (Utils::isAttendize()) {
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'))
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'))
->subject('Thank you for registering for Attendize');
});
}
Session::flash('message', 'Success! You can now login.');
session()->flash('message', 'Success! You can now login.');
return Redirect::to('login');
return redirect('login');
}
public function confirmEmail($confirmation_code)
@ -99,7 +78,7 @@ class UserSignupController extends Controller
$user = User::whereConfirmationCode($confirmation_code)->first();
if (!$user) {
return \View::make('Public.Errors.Generic', [
return view('Public.Errors.Generic', [
'message' => 'The confirmation code is missing or malformed.',
]);
}
@ -108,19 +87,10 @@ class UserSignupController extends Controller
$user->confirmation_code = null;
$user->save();
\Session::flash('message', 'Success! Your email is now verified. You can now login.');
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);
return redirect()->route('login');
}
}

View File

@ -15,8 +15,38 @@ class Account extends MyBaseModel
'email' => ['required', 'email'],
];
public $dates = ['deleted_at'];
protected $messages = [];
protected $fillable = [
'first_name',
'last_name',
'email',
'timezone_id',
'date_format_id',
'datetime_format_id',
'currency_id',
'name',
'last_ip',
'last_login_date',
'address1',
'address2',
'city',
'state',
'postal_code',
'country_id',
'email_footer',
'is_active',
'is_banned',
'is_beta',
'stripe_access_token',
'stripe_refresh_token',
'stripe_secret_key',
'stripe_publishable_key',
'stripe_data_raw'
];
public function users()
{
return $this->hasMany('\App\Models\User');

View File

@ -20,6 +20,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
*/
protected $table = 'users';
public $dates = ['deleted_at'];
/**
* The attributes excluded from the model's JSON form.
*
@ -27,6 +28,20 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
*/
protected $hidden = ['password'];
protected $fillable = [
'account_id',
'first_name',
'last_name',
'phone',
'email',
'password',
'confirmation_code',
'is_registered',
'is_confirmed',
'is_parent',
'remember_token'
];
public function account()
{
return $this->belongsTo('\App\Models\Account');

View File

@ -86,9 +86,9 @@ return [
*/
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
'terms_agreed' => [
'required' => 'Please agree to our Terms of Service.'
]
],
/*

View File

@ -35,7 +35,7 @@ Forgot Password
<div class="form-group">
{!! Form::label('email', 'Your Email') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
{!! Form::text('email', null, ['class' => 'form-control', 'autofocus' => true]) !!}
</div>
<div class="form-group nm">

View File

@ -1,9 +1,6 @@
@extends('Shared.Layouts.MasterWithoutMenus')
@section('title')
Login
@stop
@section('title', 'Login')
@section('content')
@ -21,7 +18,7 @@
{!!HTML::image('assets/images/logo-100x100-lightBg.png')!!}
</div>
@if(Input::get('failed'))
@if(Session::has('failed'))
<h4 class="text-danger mt0">Whoops! </h4>
<ul class="list-group">
<li class='list-group-item'>Please check your details and try again.</li>
@ -29,13 +26,12 @@
@endif
<div class="form-group">
{!! Form::label('email', 'Email') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
{!! Form::label('email', 'Email', ['class' => 'control-label']) !!}
{!! Form::text('email', null, ['class' => 'form-control', 'autofocus' => true]) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'Password') !!}
(<a class="forgotPassword" href="{{route('forgotPassword')}}">Forgot password?</a>)
{!! Form::label('password', 'Password', ['class' => 'control-label']) !!}
(<a class="forgotPassword" href="{{route('forgotPassword')}}" tabindex="-1">Forgot password?</a>)
{!! Form::password('password', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
@ -44,15 +40,11 @@
@if(Utils::isAttendize())
<div class="signup">
<span>Don't have any account? <a class="semibold" href="/signup">Sign up</a></span>
<span>Don't have any account? <a class="semibold" href="{{ url('signup') }}">Sign up</a></span>
</div>
@endif
</div>
</div>
</div>
</div>
{!! Form::close() !!}

View File

@ -38,15 +38,15 @@ Forgot Password
@endif
<div class="form-group">
{!! Form::label('email', 'Your Email') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
{!! Form::label('email', 'Your Email', ['class' => 'control-label']) !!}
{!! Form::text('email', null, ['class' => 'form-control', 'autofocus' => true]) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'New Password') !!}
{!! Form::label('password', 'New Password', ['class' => 'control-label']) !!}
{!! Form::password('password', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('password_confirmation', 'Confirm Password') !!}
{!! Form::label('password_confirmation', 'Confirm Password', ['class' => 'control-label']) !!}
{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
</div>
{!! Form::hidden('token', $token) !!}

View File

@ -8,12 +8,9 @@ Sign Up
@section('content')
<div class="row">
<div class="col-lg-4 col-lg-offset-4">
{!! Form::open(array('url' => 'signup', 'class' => 'panel')) !!}
<div class="col-md-7 col-md-offset-2">
{!! Form::open(array('url' => 'signup', 'class' => 'panel')) !!}
<div class="panel-body">
<div class="logo">
{!!HTML::image('assets/images/logo-100x100-lightBg.png')!!}
</div>
@ -22,47 +19,59 @@ Sign Up
<div class="alert alert-info">
You're almost there. Just create a user account and you're ready to go.
</div>
@endif
@if($errors->has())
<h4 class="text-danger mt0">Whoops! </h4>
<ul class="list-group">
@foreach ($errors->all() as $error)
<li class='list-group-item'>{{ $error }}</li>
@endforeach
</ul>
@endif
<div class="form-group">
{!! Form::label('first_name', 'First Name') !!}
{!! Form::text('first_name', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('last_name', 'Last Name') !!}
{!! Form::text('last_name', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('email', 'Email') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('password', 'Password') !!}
{!! Form::password('password', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('password_confirmation', 'Password again') !!}
{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
@endif
<div class="row">
<div class="col-md-6">
<div class="form-group {{ ($errors->has('first_name')) ? 'has-error' : '' }}">
{!! Form::label('first_name', 'First Name', ['class' => 'control-label required']) !!}
{!! Form::text('first_name', null, ['class' => 'form-control']) !!}
@if($errors->has('first_name'))
<p class="help-block">{{ $errors->first('first_name') }}</p>
@endif
</div>
</div>
<div class="col-md-6">
<div class="form-group {{ ($errors->has('last_name')) ? 'has-error' : '' }}">
{!! Form::label('last_name', 'Last Name', ['class' => 'control-label']) !!}
{!! Form::text('last_name', null, ['class' => 'form-control']) !!}
@if($errors->has('last_name'))
<p class="help-block">{{ $errors->first('last_name') }}</p>
@endif
</div>
</div>
</div>
@if(Utils::isAttendize())
<div class="form-group">
<div class="row">
<div class="col-xs-12">
<div class="checkbox custom-checkbox">
{!! Form::checkbox('terms_agreed', Input::old('terms_agreed'), false, ['id' => 'terms_agreed']) !!}
{!! Form::rawLabel('terms_agreed', '&nbsp;&nbsp;I agree to <a target="_blank" href="'.route('termsAndConditions').'"> Terms & Conditions </a>') !!}
</div>
</div>
<div class="form-group {{ ($errors->has('email')) ? 'has-error' : '' }}">
{!! Form::label('email', 'Email', ['class' => 'control-label required']) !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
@if($errors->has('email'))
<p class="help-block">{{ $errors->first('email') }}</p>
@endif
</div>
<div class="form-group {{ ($errors->has('password')) ? 'has-error' : '' }}">
{!! Form::label('password', 'Password', ['class' => 'control-label required']) !!}
{!! Form::password('password', ['class' => 'form-control']) !!}
@if($errors->has('password'))
<p class="help-block">{{ $errors->first('password') }}</p>
@endif
</div>
<div class="form-group {{ ($errors->has('password_confirmation')) ? 'has-error' : '' }}">
{!! Form::label('password_confirmation', 'Password again', ['class' => 'control-label required']) !!}
{!! Form::password('password_confirmation', ['class' => 'form-control']) !!}
@if($errors->has('password_confirmation'))
<p class="help-block">{{ $errors->first('password_confirmation') }}</p>
@endif
</div>
@if($is_attendize)
<div class="form-group {{ ($errors->has('terms_agreed')) ? 'has-error' : '' }}">
<div class="checkbox custom-checkbox">
{!! Form::checkbox('terms_agreed', Input::old('terms_agreed'), false, ['id' => 'terms_agreed']) !!}
{!! Form::rawLabel('terms_agreed', '&nbsp;&nbsp;I agree to <a target="_blank" href="'.route('termsAndConditions').'"> Terms & Conditions </a>') !!}
@if ($errors->has('terms_agreed'))
<p class="help-block">{{ $errors->first('terms_agreed') }}</p>
@endif
</div>
</div>
@endif
@ -71,13 +80,13 @@ Sign Up
{!! Form::submit('Sign Up', array('class'=>"btn btn-block btn-success")) !!}
</div>
@if(Utils::isAttendize())
<div class="signup">
<span>Already have account? <a class="semibold" href="/login">Sign In</a></span>
@if($is_attendize)
<div class="signup">
<span>Already have account? <a class="semibold" href="/login">Sign In</a></span>
</div>
@endif
</div>
@endif
</div>
{!! Form::close() !!}
{!! Form::close() !!}
</div>
</div>