Browse Source

Add delete user feature (w/o dependency checks)

pull/16/head
Nafies Luthfi 8 years ago
parent
commit
17227f4884
  1. 18
      app/Http/Controllers/UsersController.php
  2. 3
      resources/lang/en/user.php
  3. 3
      resources/lang/id/user.php
  4. 25
      resources/views/users/edit.blade.php
  5. 1
      routes/web.php
  6. 32
      tests/Feature/UsersDeletionTest.php

18
app/Http/Controllers/UsersController.php

@ -161,12 +161,24 @@ class UsersController extends Controller
/**
* Remove the specified User from storage.
*
* @param \App\User $user
* @param \Illuminate\Http\Request $request
* @param \App\User $user
*
* @return \Illuminate\Http\Response
*/
public function destroy(User $user)
public function destroy(Request $request, User $user)
{
//
$this->authorize('delete', $user);
request()->validate([
'user_id' => 'required',
]);
if (request('user_id') == $user->id && $user->delete()) {
return redirect()->route('users.search');
}
return back();
}
/**

3
resources/lang/en/user.php

@ -28,6 +28,9 @@ return [
'add_husband' => 'Add Husband',
'add_child' => 'Add Child',
'add_child_from_existing_couples' => 'Parent (select spouse of :name)',
'delete' => 'Delete User',
'delete_confirm' => 'Are you sure to delete this user?',
'delete_confirm_button' => 'Yes, I am sure',
// Attributes
'name' => 'Name',

3
resources/lang/id/user.php

@ -28,6 +28,9 @@ return [
'add_husband' => 'Tambah Suami',
'add_child' => 'Tambah Anak',
'add_child_from_existing_couples' => 'Dari Pernikahan (pilih pasangan :name)',
'delete' => 'Hapus User',
'delete_confirm' => 'Anda yakin akan menghapus user ini?',
'delete_confirm_button' => 'Saya yakin hapus user ini',
// Attributes
'name' => 'Nama',

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

@ -1,6 +1,27 @@
@extends('layouts.app')
@section('content')
@if (request('action') == 'delete' && $user)
@can('delete', $user)
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">{{ __('user.delete') }} : {{ $user->name }}</h3></div>
<div class="panel-body">{{ __('user.delete_confirm') }}</div>
<div class="panel-footer">
{!! FormField::delete(
['route' => ['users.destroy', $user]],
__('user.delete_confirm_button'),
['class'=>'btn btn-danger'],
['user_id' => $user->id]
) !!}
{{ link_to_route('users.edit', __('app.cancel'), [$user], ['class' => 'btn btn-default']) }}
</div>
</div>
</div>
</div>
@endcan
@else
<h2 class="page-header">
<div class="pull-right">
{{ link_to_route('users.show', trans('app.show_profile').' '.$user->name, [$user->id], ['class' => 'btn btn-default']) }}
@ -64,6 +85,10 @@
</div>
{{ Form::close() }}
</div>
@can('delete', $user)
{{ link_to_route('users.edit', __('user.delete'), [$user, 'action' => 'delete'], ['class' => 'btn btn-danger pull-right', 'id' => 'del-user-'.$user->id]) }}
@endcan
</div>
</div>
@endif
@endsection

1
routes/web.php

@ -31,6 +31,7 @@ Route::patch('users/{user}', 'UsersController@update')->name('users.update');
Route::get('users/{user}/chart', 'UsersController@chart')->name('users.chart');
Route::get('users/{user}/tree', 'UsersController@tree')->name('users.tree');
Route::patch('users/{user}/photo-upload', 'UsersController@photoUpload')->name('users.photo-upload');
Route::delete('users/{user}', 'UsersController@destroy')->name('users.destroy');
Route::get('users/{user}/marriages', 'UserMarriagesController@index')->name('users.marriages');

32
tests/Feature/UsersDeletionTest.php

@ -0,0 +1,32 @@
<?php
namespace Tests\Feature;
use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class UsersDeletionTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function manager_can_delete_a_user()
{
$manager = $this->loginAsUser();
$user = factory(User::class)->create(['manager_id' => $manager->id]);
$this->visit(route('users.edit', $user));
$this->seeElement('a', ['id' => 'del-user-'.$user->id]);
$this->click('del-user-'.$user->id);
$this->seePageIs(route('users.edit', [$user, 'action' => 'delete']));
$this->see(__('user.delete_confirm_button'));
$this->press(__('user.delete_confirm_button'));
$this->dontSeeInDatabase('users', [
'id' => $user->id,
]);
}
}
Loading…
Cancel
Save