Browse Source

User login with email address instead of username

Removed username from users table
Fixed to pass all tests after username removal
pull/1/head
Nafies Luthfi 9 years ago
parent
commit
4f8c156832
  1. 1
      app/Entities/Projects/ProjectsRepository.php
  2. 2
      app/Entities/Users/User.php
  3. 2
      app/Entities/Users/UserPresenter.php
  4. 6
      app/Http/Controllers/AuthController.php
  5. 4
      app/Http/Requests/Accounts/LoginRequest.php
  6. 3
      app/Http/Requests/Accounts/RegisterRequest.php
  7. 1
      app/Http/Requests/Users/CreateRequest.php
  8. 1
      app/Http/Requests/Users/UpdateRequest.php
  9. 1
      database/factories/ModelFactory.php
  10. 1
      database/migrations/2014_10_12_000000_create_users_table.php
  11. 2
      database/seeds/UsersTableSeeder.php
  12. 2
      resources/lang/id/auth.php
  13. 4
      resources/views/auth/login.blade.php
  14. 1
      resources/views/auth/profile.blade.php
  15. 6
      resources/views/auth/register.blade.php
  16. 1
      resources/views/users/create.blade.php
  17. 1
      resources/views/users/delete.blade.php
  18. 1
      resources/views/users/edit.blade.php
  19. 2
      resources/views/users/index.blade.php
  20. 1
      resources/views/users/show.blade.php
  21. 2
      tests/Feature/Auth/MemberChangePasswordTest.php
  22. 6
      tests/Feature/Auth/MemberLoginTest.php
  23. 4
      tests/Feature/Auth/MemberRegistrationTest.php
  24. 2
      tests/Feature/Auth/ResetPasswordTest.php
  25. 9
      tests/Feature/ManageUsersTest.php

1
app/Entities/Projects/ProjectsRepository.php

@ -63,7 +63,6 @@ class ProjectsRepository extends BaseRepository
$newCustomer = new User;
$newCustomer->name = $customerName;
$newCustomer->email = $customerEmail;
$newCustomer->username = str_replace(' ', '_', strtolower($customerName));
$newCustomer->password = Option::get('default_password', 'member');
$newCustomer->remember_token = str_random(10);
$newCustomer->save();

2
app/Entities/Users/User.php

@ -11,7 +11,7 @@ class User extends Authenticatable
{
use Notifiable, PresentableTrait, HasRoles;
protected $fillable = ['name', 'username', 'email', 'password'];
protected $fillable = ['name', 'email', 'password'];
protected $hidden = ['password', 'remember_token', 'api_token'];
protected $presenter = UserPresenter::class;

2
app/Entities/Users/UserPresenter.php

@ -31,7 +31,7 @@ class UserPresenter extends Presenter
public function usernameRoles()
{
$string = $this->username . ' (';
$string = $this->name . ' (';
foreach($this->roles as $key => $role) {
$string .= ($key != 0) ? ' | ' : '';
$string .= $role->label;

6
app/Http/Controllers/AuthController.php

@ -46,7 +46,7 @@ class AuthController extends Controller {
public function postLogin(LoginRequest $req)
{
$loginData = $req->only('username','password');
$loginData = $req->only('email','password');
if (Auth::attempt($loginData, $req->has('remember')))
{
@ -54,7 +54,7 @@ class AuthController extends Controller {
return redirect()->intended('home');
}
flash()->error('Mohon maaf, anda tidak dapat login, cek kembali username/password anda!');
flash()->error('Mohon maaf, anda tidak dapat login, cek kembali email/password anda!');
return redirect()->back()->withInput();
}
@ -72,7 +72,7 @@ class AuthController extends Controller {
public function postRegister(RegisterRequest $req)
{
$registerData = $req->only('name','username','email','password');
$registerData = $req->only('name','email','password');
$user = User::create($registerData);
$user->assignRole('customer');

4
app/Http/Requests/Accounts/LoginRequest.php

@ -24,7 +24,7 @@ class LoginRequest extends Request
public function rules()
{
return [
'username' => 'required',
'email' => 'required|email',
'password' => 'required',
];
}
@ -32,7 +32,7 @@ class LoginRequest extends Request
public function messages()
{
return [
'username.required' => 'Username harus diisi.',
'email.required' => 'Email harus diisi.',
'password.required' => 'Password harus diisi.',
];
}

3
app/Http/Requests/Accounts/RegisterRequest.php

@ -25,7 +25,6 @@ class RegisterRequest extends Request
{
return [
'name' => 'required',
'username' => 'required|alpha_num',
'email' => 'required|email|unique:users,email',
'password' => 'required|between:6,15|confirmed',
'password_confirmation' => 'required',
@ -36,8 +35,6 @@ class RegisterRequest extends Request
{
return [
'name.required' => 'Nama harus diisi.',
'username.required' => 'Username harus diisi.',
'username.alpha_num' => 'Username harus berupa huruf dan angka.',
'email.required' => 'Email harus diisi.',
'email.email' => 'Email tidak valid.',
'email.unique' => 'Email ini sudah terdaftar.',

1
app/Http/Requests/Users/CreateRequest.php

@ -25,7 +25,6 @@ class CreateRequest extends Request
{
return [
'name' => 'required|min:5',
'username' => 'required|alpha_dash|min:4|unique:users,username',
'email' => 'required|email|unique:users,email',
'role' => 'required|array',
'password' => 'between:6,15|confirmed',

1
app/Http/Requests/Users/UpdateRequest.php

@ -25,7 +25,6 @@ class UpdateRequest extends Request
{
return [
'name' => 'required|min:5',
'username' => 'required|alpha_dash|min:4|unique:users,username,' . $this->segment(2),
'email' => 'required|email|unique:users,email,' . $this->segment(2),
'role' => 'required|array',
'password' => 'nullable|required_with:password_confirmation|between:6,15|confirmed',

1
database/factories/ModelFactory.php

@ -12,7 +12,6 @@ use App\Entities\Users\User;
$factory->define(User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'username' => $faker->unique()->username,
'email' => $faker->unique()->email,
'password' => 'member',
'remember_token' => str_random(10),

1
database/migrations/2014_10_12_000000_create_users_table.php

@ -16,7 +16,6 @@ class CreateUsersTable extends Migration
{
$table->increments('id');
$table->string('name');
$table->string('username', 60)->unique();
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();

2
database/seeds/UsersTableSeeder.php

@ -17,7 +17,6 @@ class UsersTableSeeder extends Seeder
DB::table($this->tableToSeed)->insert([
[
'name' => 'Administrator',
'username' => 'admin',
'email' => 'admin@app.dev',
'password' => bcrypt('admin'),
'remember_token' => str_random(10),
@ -26,7 +25,6 @@ class UsersTableSeeder extends Seeder
],
[
'name' => 'Customer',
'username' => 'member',
'email' => 'member@app.dev',
'password' => bcrypt('member'),
'remember_token' => str_random(10),

2
resources/lang/id/auth.php

@ -15,7 +15,7 @@ return [
'failed' => 'Identitas tersebut tidak cocok dengan data kami.',
'throttle' => 'Terlalu banyak usaha masuk. Silahkan coba lagi dalam :seconds detik.',
'username' => 'Login ID',
'email' => 'Email',
'password' => 'Password',
'login' => 'Login',
'logout' => 'Keluar',

4
resources/views/auth/login.blade.php

@ -13,8 +13,8 @@
<div class="panel-body">
@include('auth.partials._errors')
{!! Form::open(['route'=>'auth.login']) !!}
<div class="form-group {!! $errors->has('username') ? 'has-error' : ''; !!}">
{!! Form::text('username', null, ['class'=>'form-control', 'placeholder'=> trans('auth.username')]) !!}
<div class="form-group {!! $errors->has('email') ? 'has-error' : ''; !!}">
{!! Form::email('email', null, ['class'=>'form-control', 'placeholder'=> trans('auth.email')]) !!}
</div>
<div class="form-group {!! $errors->has('password') ? 'has-error' : ''; !!}">
{!! Form::password('password', ['class'=>'form-control', 'placeholder'=> trans('auth.password')]) !!}

1
resources/views/auth/profile.blade.php

@ -18,7 +18,6 @@
{{ $user->name }}
</td>
</tr>
<tr><th>{{ trans('user.username') }}</th><td>{{ $user->username }}</td></tr>
<tr>
<th>{{ trans('user.roles') }}</th>
<td>{{ $user->present()->displayRoles }}</td>

6
resources/views/auth/register.blade.php

@ -15,12 +15,6 @@
{!! Form::text('name', null, ['class'=>'form-control','placeholder' => trans('app.name')]) !!}
</div>
</div>
<div class="form-group {!! $errors->has('username') ? 'has-error' : ''; !!}">
{!! Form::label('username', trans('auth.username'), ['class'=>'col-md-4 control-label']) !!}
<div class="col-md-6">
{!! Form::text('username', null, ['class'=>'form-control','placeholder'=>trans('auth.username')]) !!}
</div>
</div>
<div class="form-group {!! $errors->has('email') ? 'has-error' : ''; !!}">
{!! Form::label('email', trans('user.email'), ['class'=>'col-md-4 control-label']) !!}
<div class="col-md-6">

1
resources/views/users/create.blade.php

@ -11,7 +11,6 @@
<div class="panel-heading"><h3 class="panel-title">User Data</h3></div>
<div class="panel-body">
{!! FormField::text('name', ['label' => trans('app.name')]) !!}
{!! FormField::text('username', ['label' => trans('auth.username')]) !!}
{!! FormField::email('email', ['label' => trans('user.email')]) !!}
{!! FormField::checkboxes('role', $roles, ['label' => trans('user.role')]) !!}

1
resources/views/users/delete.blade.php

@ -18,7 +18,6 @@
<table class="table table-condensed">
<tbody>
<tr><th>{{ trans('app.name') }}</th><td>{{ $user->name }}</td></tr>
<tr><th>{{ trans('auth.username') }}</th><td>{{ $user->username }}</td></tr>
<tr><th>{{ trans('user.email') }}</th><td>{{ $user->email }}</td></tr>
<tr>
<th>{{ trans('user.role') }}</th>

1
resources/views/users/edit.blade.php

@ -11,7 +11,6 @@
<div class="panel-heading"><h3 class="panel-title">{{ trans('user.show') }}</h3></div>
<div class="panel-body">
{!! FormField::text('name', ['label' => trans('app.name')]) !!}
{!! FormField::text('username', ['label' => trans('auth.username')]) !!}
{!! FormField::email('email', ['label' => trans('user.email')]) !!}
{!! FormField::password('password', [

2
resources/views/users/index.blade.php

@ -22,7 +22,6 @@
<thead>
<th>{{ trans('app.table_no') }}</th>
<th>{{ trans('app.name') }}</th>
<th>{{ trans('auth.username') }}</th>
<th>{{ trans('user.email') }}</th>
<th>{{ trans('user.roles') }}</th>
<th>{{ trans('app.action') }}</th>
@ -32,7 +31,6 @@
<tr>
<td>{{ $users->firstItem() + $key }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->username }}</td>
<td>{{ $user->email }}</td>
<td>{!! $user->present()->roleslink !!}</td>
<td>

1
resources/views/users/show.blade.php

@ -12,7 +12,6 @@
<table class="table table-condensed">
<tbody>
<tr><th>{{ trans('app.name') }}</th><td>{{ $user->name }}</td></tr>
<tr><th>{{ trans('auth.username') }}</th><td>{{ $user->username }}</td></tr>
<tr><th>{{ trans('user.email') }}</th><td>{{ $user->email }}</td></tr>
<tr>
<th>{{ trans('user.role') }}</th>

2
tests/Feature/Auth/MemberChangePasswordTest.php

@ -33,7 +33,7 @@ class MemberChangePasswordTest extends TestCase
// Logout and login using new Password
$this->click('Keluar');
$this->seePageIs(route('auth.login'));
$this->type($user->username,'username');
$this->type($user->email,'email');
$this->type('rahasia','password');
$this->press('Login');
$this->seePageIs(route('home'));

6
tests/Feature/Auth/MemberLoginTest.php

@ -10,11 +10,11 @@ class MemberLoginTest extends TestCase
/** @test */
public function member_register_and_login_successfully()
{
$user = factory(User::class)->create(['name' => 'Nama Member', 'username' => 'namamember', 'email' => 'email@mail.com']);
$user = factory(User::class)->create(['name' => 'Nama Member', 'email' => 'email@mail.com']);
$user->assignRole('customer');
$this->visit(route('auth.login'));
$this->type('namamember','username');
$this->type('email@mail.com','email');
$this->type('member','password');
$this->press(trans('auth.login'));
$this->seePageIs(route('home'));
@ -28,7 +28,7 @@ class MemberLoginTest extends TestCase
public function member_invalid_login()
{
$this->visit(route('auth.login'));
$this->type('namamember','username');
$this->type('email@mail.com','email');
$this->type('password.112','password');
$this->press(trans('auth.login'));
$this->seePageIs(route('auth.login'));

4
tests/Feature/Auth/MemberRegistrationTest.php

@ -12,20 +12,17 @@ class MemberRegistrationTest extends TestCase
{
$this->visit(route('auth.register'));
$this->type('', 'name');
$this->type('', 'username');
$this->type('member@app.dev', 'email');
$this->type('', 'password');
$this->type('', 'password_confirmation');
$this->press('Buat Akun Baru');
$this->seePageIs(route('auth.register'));
$this->see('Nama harus diisi.');
$this->see('Username harus diisi.');
$this->see('Email ini sudah terdaftar.');
$this->see('Password harus diisi.');
$this->see('Konfirmasi password harus diisi.');
$this->type('Nama Member', 'name');
$this->type('namamember', 'username');
$this->type('email', 'email');
$this->type('password', 'password');
$this->type('password..', 'password_confirmation');
@ -40,7 +37,6 @@ class MemberRegistrationTest extends TestCase
{
$this->visit(route('auth.register'));
$this->type('Nama Member', 'name');
$this->type('namamember', 'username');
$this->type('email@mail.com', 'email');
$this->type('password.111', 'password');
$this->type('password.111', 'password_confirmation');

2
tests/Feature/Auth/ResetPasswordTest.php

@ -11,7 +11,7 @@ class ResetPasswordTest extends TestCase
public function user_can_reset_password_by_their_email()
{
// $user = factory(User::class)->create();
$user1 = factory(User::class)->create(['username' => '123456', 'email' => 'testing@app.dev']);
$user1 = factory(User::class)->create(['email' => 'testing@app.dev']);
// Reset Request
$this->visit('password/reset');

9
tests/Feature/ManageUsersTest.php

@ -19,7 +19,6 @@ class ManageUsersTest extends TestCase
$this->seePageIs('users/create');
$this->submitForm(trans('user.create'), [
'name' => 'Nama User',
'username' => 'user_name',
'email' => 'user@mail.com',
'password' => 'password',
'password_confirmation' => 'password',
@ -29,7 +28,7 @@ class ManageUsersTest extends TestCase
$this->see(trans('user.created'));
$this->see('Nama User');
$this->see('user@mail.com');
$this->seeInDatabase('users',['name' => 'Nama User','username' => 'user_name', 'email' => 'user@mail.com']);
$this->seeInDatabase('users',['name' => 'Nama User', 'email' => 'user@mail.com']);
}
/** @test */
@ -44,15 +43,13 @@ class ManageUsersTest extends TestCase
$this->visit('users/' . $user2->id . '/edit');
$this->type('Ganti nama User', 'name');
$this->type('user_name', 'username');
$this->type('member@mail.dev', 'email');
$this->press(trans('user.update'));
$this->seePageIs('users/' . $user2->id . '/edit');
$this->see(trans('user.updated'));
$this->see('Ganti nama User');
$this->see('user_name');
$this->see('member@mail.dev');
$this->seeInDatabase('users', ['id' => $user2->id, 'name' => 'Ganti nama User', 'username' => 'user_name','email' => 'member@mail.dev']);
$this->seeInDatabase('users', ['id' => $user2->id, 'name' => 'Ganti nama User','email' => 'member@mail.dev']);
}
/** @test */
@ -66,7 +63,7 @@ class ManageUsersTest extends TestCase
$user2->assignRole('customer');
$this->visit('users/' . $user2->id . '/edit');
$this->seeInDatabase('users', ['id' => $user2->id, 'name' => $user2->name, 'username' => $user2->username,'email' => $user2->email]);
$this->seeInDatabase('users', ['id' => $user2->id, 'name' => $user2->name,'email' => $user2->email]);
$this->click(trans('app.delete'));
$this->seePageIs('users/' . $user2->id . '/delete');
$this->press(trans('app.delete_confirm_button'));

Loading…
Cancel
Save