Working on users in L5

This commit is contained in:
Hillel Coren 2015-03-29 15:37:42 +03:00
parent 768f04e3a9
commit 78502f74e4
12 changed files with 227 additions and 118 deletions

View File

@ -1,7 +1,6 @@
<?php namespace App\Http\Controllers;
use Auth;
use Confide;
use Input;
use Redirect;
use Session;
@ -741,7 +740,7 @@ class AccountController extends BaseController
$account = Auth::user()->account;
$account->forceDelete();
Confide::logout();
Auth::logout();
return Redirect::to('/')->with('clearGuestKey', true);
}

View File

@ -95,27 +95,16 @@ class AppController extends BaseController
Artisan::call('migrate', array('--force' => true));
Artisan::call('db:seed', array('--force' => true));
$account = $this->accountRepo->create();
$firstName = trim(Input::get('first_name'));
$lastName = trim(Input::get('last_name'));
$email = trim(strtolower(Input::get('email')));
$password = trim(Input::get('password'));
$account = $this->accountRepo->create($firstName, $lastName, $email, $password);
$user = $account->users()->first();
// Create User
$user = new User;
$user->first_name = trim(Input::get('first_name'));
$user->last_name = trim(Input::get('last_name'));
$user->email = trim(strtolower(Input::get('email')));
//Auth::login($user, true);
// Username getting the error: "The username may only contain letters, numbers, and dashes."
// Not sure where this validation comes from?
$user->username = 'test'; //$user->email;
$user->password = trim(Input::get('password'));
$user->password_confirmation = trim(Input::get('password'));
$user->registered = true;
$user->account()->associate($account);
$user->save();
Auth::login($user, true);
return Redirect::to('/dashboard');
return Redirect::to('/login');
}
private function testDatabase($database)

View File

@ -20,6 +20,9 @@ class AuthController extends Controller {
use AuthenticatesAndRegistersUsers;
protected $loginPath = '/login';
protected $redirectTo = '/dashboard';
/**
* Create a new authentication controller instance.
*

View File

@ -1,7 +1,6 @@
<?php namespace App\Http\Controllers;
use Auth;
use Confide;
use Config;
use Event;
use Input;
@ -257,6 +256,7 @@ class UserController extends BaseController
* Displays the login form
*
*/
/*
public function login()
{
@ -272,11 +272,13 @@ class UserController extends BaseController
return Redirect::to('/dashboard');
}
*/
/**
* Attempt to do login
*
*/
/*
public function do_login()
{
$input = array(
@ -313,12 +315,14 @@ class UserController extends BaseController
->with('error', $err_msg);
}
}
*/
/**
* Attempt to confirm account with code
*
* @param string $code
*/
/*
public function confirm($code)
{
if (Confide::confirm($code)) {
@ -348,20 +352,24 @@ class UserController extends BaseController
return Redirect::action('UserController@login')->with('error', $error_msg);
}
}
*/
/**
* Displays the forgot password form
*
*/
/*
public function forgot_password()
{
return View::make(Config::get('confide.forgot_password_form'));
}
*/
/**
* Attempt to send change password link to the given email
*
*/
/*
public function do_forgot_password()
{
Confide::forgotPassword(Input::get('email'));
@ -371,21 +379,25 @@ class UserController extends BaseController
return Redirect::action('UserController@login')
->with('message', $notice_msg);
}
*/
/**
* Shows the change password form with the given token
*
*/
/*
public function reset_password($token = false)
{
return View::make(Config::get('confide::reset_password_form'))
->with('token', $token);
}
*/
/**
* Attempt change password of the user
*
*/
/*
public function do_reset_password()
{
if (Auth::check()) {
@ -428,6 +440,7 @@ class UserController extends BaseController
}
}
}
*/
/**
* Log the user out of the application.
@ -445,7 +458,7 @@ class UserController extends BaseController
Session::forget('news_feed_id');
Session::forget('news_feed_message');
Confide::logout();
Auth::logout();
return Redirect::to('/')->with('clearGuestKey', true);
}

View File

@ -35,7 +35,7 @@ class RedirectIfAuthenticated {
{
if ($this->auth->check())
{
return new RedirectResponse(url('/home'));
return new RedirectResponse(url('/'));
}
return $next($request);

View File

@ -54,6 +54,22 @@ Route::get('claim_license', 'PaymentController@claim_license');
Route::post('signup/validate', 'AccountController@checkEmail');
Route::post('signup/submit', 'AccountController@submitSignup');
// Laravel auth routes
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
get('/signup', array('as' => 'signup', 'uses' => 'Auth\AuthController@getRegister'));
post('/signup', array('as' => 'signup', 'uses' => 'Auth\AuthController@postRegister'));
get('/login', array('as' => 'login', 'uses' => 'Auth\AuthController@getLogin'));
post('/login', array('as' => 'login', 'uses' => 'Auth\AuthController@postLogin'));
get('/logout', array('as' => 'logout', 'uses' => 'Auth\AuthController@getLogout'));
get('/forgot', array('as' => 'forgot', 'uses' => 'Auth\AuthController@getLogin'));
post('/forgot', array('as' => 'forgot', 'uses' => 'Auth\AuthController@postLogin'));
/*
// Confide routes
Route::get('login', 'UserController@login');
Route::post('login', 'UserController@do_login');
@ -63,6 +79,7 @@ Route::post('forgot_password', 'UserController@do_forgot_password');
Route::get('user/reset/{token?}', 'UserController@reset_password');
Route::post('user/reset', 'UserController@do_reset_password');
Route::get('logout', 'UserController@logout');
*/
if (\App\Libraries\Utils::isNinja()) {
Route::post('/signup/register', 'AccountController@doRegister');

View File

@ -1,15 +1,15 @@
<?php namespace App\Models;
use Eloquent;
use Utils;
use Zizaco\Confide\ConfideUser;
use Zizaco\Confide\ConfideUserInterface;
use App\Libraries\Utils;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class User extends Eloquent implements ConfideUserInterface {
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use ConfideUser;
protected $softDelete = true;
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
@ -18,13 +18,12 @@ class User extends Eloquent implements ConfideUserInterface {
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['email', 'password','agency_id'];
protected $fillable = ['name', 'email', 'password'];
/**
* The attributes excluded from the model's JSON form.
@ -33,6 +32,8 @@ class User extends Eloquent implements ConfideUserInterface {
*/
protected $hidden = ['password', 'remember_token'];
protected $softDelete = true;
public function account()
{

View File

@ -17,7 +17,7 @@ use App\Models\User;
class AccountRepository
{
public function create()
public function create($firstName = '', $lastName = '', $email = '', $password = '')
{
$account = new Account();
$account->ip = Request::getClientIp();
@ -32,16 +32,21 @@ class AccountRepository
$account->save();
/* $random = str_random(RANDOM_KEY_LENGTH);
// I don't like how this is done with regards to init setup. I think it needs a refresh.
$user = new User();
$user->password = $random;
$user->password_confirmation = $random;
$user->email = 'test@test.com';
$user->username = $random;
if (!$firstName && !$lastName && !$email && !$password) {
$user->password = str_random(RANDOM_KEY_LENGTH);
$user->email = $user->username = str_random(RANDOM_KEY_LENGTH);
} else {
$user->first_name = $firstName;
$user->last_name = $lastName;
$user->email = $user->username = $email;
$user->password = bcrypt($password);
}
$user->confirmed = !Utils::isNinja();
$account->users()->save($user, []);*/
$user->registered = !Utils::isNinja();
$account->users()->save($user);
return $account;
}

View File

@ -12,36 +12,9 @@
"name": "Jeramy Simpson",
"email": "jeramy.n.simpson@gmail.com"
}
],
"repositories": [
{
"type": "package",
"package": {
"name": "calvinfroedge/PHP-Payments",
"version": "dev-master",
"source": {
"url": "https://github.com/calvinfroedge/PHP-Payments",
"type": "git",
"reference": "origin/master"
}
}
},
{
"type": "package",
"package": {
"name": "impleri/confide",
"version": "dev-master",
"source": {
"url": "https://github.com/impleri/confide",
"type": "git",
"reference": "origin/master"
}
}
}
],
"require": {
"laravel/framework": "5.0.*",
"impleri/confide": "dev-master",
"patricktalmadge/bootstrapper": "5.5.x",
"anahkiasen/former": "4.0.*@dev",
"barryvdh/laravel-debugbar": "~2.0.2",
@ -75,8 +48,6 @@
"app/Models",
"app/Ninja",
"app/Ninja/Repositories",
"vendor/calvinfroedge/PHP-Payments/lib",
"vendor/impleri/confide/src",
"database"
],
"psr-4": {

75
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "016ceb374b7f3029826cdcf32ce6b1bf",
"hash": "97252a7d44a5d0588faa1b3a3c4888d3",
"packages": [
{
"name": "alfaproject/omnipay-neteller",
@ -346,12 +346,12 @@
"source": {
"type": "git",
"url": "https://github.com/Chumper/Datatable.git",
"reference": "3b251b9c6d7d266d6af37d3096034cf69c6b50a8"
"reference": "899f5530f98f766eca3a66afba9127ddf239d5c1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Chumper/Datatable/zipball/3b251b9c6d7d266d6af37d3096034cf69c6b50a8",
"reference": "3b251b9c6d7d266d6af37d3096034cf69c6b50a8",
"url": "https://api.github.com/repos/Chumper/Datatable/zipball/899f5530f98f766eca3a66afba9127ddf239d5c1",
"reference": "899f5530f98f766eca3a66afba9127ddf239d5c1",
"shasum": ""
},
"require": {
@ -391,7 +391,7 @@
"jquery",
"laravel"
],
"time": "2015-03-08 23:17:58"
"time": "2015-03-27 12:52:09"
},
{
"name": "classpreloader/classpreloader",
@ -1491,17 +1491,6 @@
],
"time": "2015-01-01 16:31:18"
},
{
"name": "impleri/confide",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/impleri/confide",
"reference": "origin/master"
},
"type": "library",
"time": "2015-03-18 03:04:38"
},
{
"name": "intervention/image",
"version": "dev-master",
@ -1786,16 +1775,16 @@
},
{
"name": "laravel/framework",
"version": "v5.0.20",
"version": "v5.0.23",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "419d3f485ce7946cace4325ef19a30e1d5543951"
"reference": "59219f7afb60be05d74ce01fcb5d2440f7a1b13d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/419d3f485ce7946cace4325ef19a30e1d5543951",
"reference": "419d3f485ce7946cace4325ef19a30e1d5543951",
"url": "https://api.github.com/repos/laravel/framework/zipball/59219f7afb60be05d74ce01fcb5d2440f7a1b13d",
"reference": "59219f7afb60be05d74ce01fcb5d2440f7a1b13d",
"shasum": ""
},
"require": {
@ -1908,7 +1897,7 @@
"framework",
"laravel"
],
"time": "2015-03-24 13:36:37"
"time": "2015-03-28 16:56:59"
},
{
"name": "league/flysystem",
@ -4181,16 +4170,16 @@
},
{
"name": "psy/psysh",
"version": "v0.4.3",
"version": "v0.4.4",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
"reference": "b5dd7660c0ef38e96cd8cd8fa924b6be0e53906a"
"reference": "489816db71649bd95b416e3ed9062d40528ab0ac"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/b5dd7660c0ef38e96cd8cd8fa924b6be0e53906a",
"reference": "b5dd7660c0ef38e96cd8cd8fa924b6be0e53906a",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/489816db71649bd95b416e3ed9062d40528ab0ac",
"reference": "489816db71649bd95b416e3ed9062d40528ab0ac",
"shasum": ""
},
"require": {
@ -4248,7 +4237,7 @@
"interactive",
"shell"
],
"time": "2015-03-17 15:17:33"
"time": "2015-03-26 18:43:54"
},
{
"name": "swiftmailer/swiftmailer",
@ -5387,21 +5376,22 @@
},
{
"name": "phpspec/prophecy",
"version": "v1.3.1",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9"
"reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/9ca52329bcdd1500de24427542577ebf3fc2f1c9",
"reference": "9ca52329bcdd1500de24427542577ebf3fc2f1c9",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5",
"reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5",
"shasum": ""
},
"require": {
"doctrine/instantiator": "~1.0,>=1.0.2",
"phpdocumentor/reflection-docblock": "~2.0"
"doctrine/instantiator": "^1.0.2",
"phpdocumentor/reflection-docblock": "~2.0",
"sebastian/comparator": "~1.1"
},
"require-dev": {
"phpspec/phpspec": "~2.0"
@ -5409,7 +5399,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
"dev-master": "1.4.x-dev"
}
},
"autoload": {
@ -5433,7 +5423,7 @@
}
],
"description": "Highly opinionated mocking framework for PHP 5.3+",
"homepage": "http://phpspec.org",
"homepage": "https://github.com/phpspec/prophecy",
"keywords": [
"Double",
"Dummy",
@ -5442,7 +5432,7 @@
"spy",
"stub"
],
"time": "2014-11-17 16:23:49"
"time": "2015-03-27 19:31:25"
},
{
"name": "phpunit/php-code-coverage",
@ -5690,16 +5680,16 @@
},
{
"name": "phpunit/phpunit",
"version": "4.5.0",
"version": "4.5.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5"
"reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5b578d3865a9128b9c209b011fda6539ec06e7a5",
"reference": "5b578d3865a9128b9c209b011fda6539ec06e7a5",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d6429b0995b24a2d9dfe5587ee3a7071c1161af4",
"reference": "d6429b0995b24a2d9dfe5587ee3a7071c1161af4",
"shasum": ""
},
"require": {
@ -5709,8 +5699,8 @@
"ext-reflection": "*",
"ext-spl": "*",
"php": ">=5.3.3",
"phpspec/prophecy": "~1.3.1",
"phpunit/php-code-coverage": "~2.0",
"phpspec/prophecy": "~1.3,>=1.3.1",
"phpunit/php-code-coverage": "~2.0,>=2.0.11",
"phpunit/php-file-iterator": "~1.3.2",
"phpunit/php-text-template": "~1.2",
"phpunit/php-timer": "~1.0.2",
@ -5758,7 +5748,7 @@
"testing",
"xunit"
],
"time": "2015-02-05 15:51:19"
"time": "2015-03-29 09:24:05"
},
{
"name": "phpunit/phpunit-mock-objects",
@ -6240,7 +6230,6 @@
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"impleri/confide": 20,
"anahkiasen/former": 20,
"chumper/datatable": 20,
"intervention/image": 20,

View File

@ -139,8 +139,6 @@ return [
/*
* Additional Providers
*/
'Zizaco\Confide\ServiceProvider', // Confide to be replaced
'Bootstrapper\BootstrapperL5ServiceProvider',
'Former\FormerServiceProvider',
'Barryvdh\Debugbar\ServiceProvider',
@ -280,7 +278,6 @@ return [
'Countries' => 'Webpatser\Countries\CountriesFacade',
'Carbon' => 'Carbon\Carbon',
'Rocketeer' => 'Rocketeer\Facades\Rocketeer',
'Confide' => 'Zizaco\Confide\Facade',// Confide to be replaced
],

View File

@ -0,0 +1,125 @@
@extends('master')
@section('head')
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
<link href="{{ asset('css/style.css') }}" rel="stylesheet" type="text/css"/>
<style type="text/css">
body {
padding-top: 40px;
padding-bottom: 40px;
}
.modal-header {
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
.modal-header h4 {
margin:0;
}
.modal-header img {
float: left;
margin-right: 20px;
}
.form-signin {
max-width: 400px;
margin: 0 auto;
background: #fff;
}
p.link a {
font-size: 11px;
}
.form-signin .inner {
padding: 20px;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
border-bottom: 1px solid #ddd;
}
.form-signin .checkbox {
font-weight: normal;
}
.form-signin .form-control {
margin-bottom: 17px !important;
}
.form-signin .form-control:focus {
z-index: 2;
}
</style>
@endsection
@section('body')
<div class="container">
{!! Former::open('login')->rules(['email' => 'required|email', 'password' => 'required'])->addClass('form-signin') !!}
<div class="modal-header">
<img src="{{ asset('images/icon-login.png') }}" />
<h4>Invoice Ninja | {{ trans('texts.account_login') }}</h4></div>
<div class="inner">
<p>
{!! Former::text('email')->placeholder(trans('texts.email_address'))->raw() !!}
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
</p>
<p>{!! Button::primary(trans('texts.lets_go'))->withAttributes(array('class' => 'btn-lg'))->submit()->block() !!}</p>
<p class="link">
{!! link_to('forgot_password', trans('texts.forgot_password')) !!}
</p>
@if (count($errors->all()))
<div class="alert alert-danger">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</div>
@endif
@if (Session::has('warning'))
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
@endif
@if (Session::has('message'))
<div class="alert alert-info">{{ Session::get('message') }}</div>
@endif
@if (Session::has('error'))
<div class="alert alert-danger">{{ Session::get('error') }}</div>
@endif
</div>
{!! Former::close() !!}
@if (!Utils::isNinja())
<p/>
<center>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=635126583203143";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-follow" data-href="https://www.facebook.com/invoiceninja" data-colorscheme="light" data-layout="button" data-show-faces="false"></div>&nbsp;&nbsp;
<a href="https://twitter.com/invoiceninja" class="twitter-follow-button" data-show-count="false" data-related="hillelcoren" data-size="medium">Follow @invoiceninja</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<iframe src="https://ghbtns.com/github-btn.html?user=hillelcoren&repo=invoice-ninja&type=star&count=false" frameborder="0" scrolling="0" width="50px" height="20px"></iframe>
</center>
@endif
</div>
@endsection