Skip to content

Commit cbdddff

Browse files
committed
refactor
1 parent 8dc5138 commit cbdddff

File tree

14 files changed

+199
-160
lines changed

14 files changed

+199
-160
lines changed

app/Http/Controllers/TaskController.php

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@
33
namespace App\Http\Controllers;
44

55
use App\Task;
6-
use App\User;
7-
use Illuminate\Http\Request;
8-
use Illuminate\Support\Facades\Auth;
9-
use App\Http\Requests\UpdateUserTask;
6+
use App\Http\Requests\TaskRequest;
107

118
class TaskController extends Controller
129
{
10+
public function __construct()
11+
{
12+
$this->authorizeResource(Task::class, 'task');
13+
}
14+
1315
/**
1416
* Display a listing of the resource.
1517
*
1618
* @return \Illuminate\Http\Response
1719
*/
1820
public function index()
1921
{
20-
$tasks = Task::where('user_id', Auth::id())->latest()->paginate(10);
22+
$tasks = auth()->user()->tasks()->latest()->paginate(10);
2123
return view('tasks.index')->with('tasks', $tasks);
2224
}
2325

@@ -34,21 +36,14 @@ public function create()
3436
/**
3537
* Store a newly created resource in storage.
3638
*
37-
* @param \Illuminate\Http\Request $request
39+
* @param \Illuminate\Http\Request $request
3840
* @return \Illuminate\Http\Response
3941
*/
40-
public function store(Request $request)
42+
public function store(TaskRequest $request)
4143
{
42-
43-
$task = $this->validate(request(), [
44-
'name' => 'required|max:150;',
45-
]);
46-
47-
48-
Task::create([
44+
auth()->user()->tasks()->create([
4945
'name' => request('name'),
5046
'description' => request('description'),
51-
'user_id' => Auth::id(),
5247
]);
5348

5449
return back()->with('success', 'task has been added');
@@ -57,79 +52,69 @@ public function store(Request $request)
5752
/**
5853
* Display the specified resource.
5954
*
60-
* @param \App\Task $task
55+
* @param \App\Task $task
6156
* @return \Illuminate\Http\Response
6257
*/
6358
public function show(Task $task)
6459
{
65-
if($task->user_id == Auth::id()){
66-
return view('tasks.show')->with('task', $task);
67-
}
60+
return view('tasks.show')->with('task', $task);
6861
}
6962

7063
/**
7164
* Show the form for editing the specified resource.
7265
*
73-
* @param \App\Task $task
66+
* @param \App\Task $task
7467
* @return \Illuminate\Http\Response
7568
*/
7669
public function edit(Task $task)
7770
{
78-
if($task->user_id == Auth::id()){
79-
return view('tasks.edit')->with('task', $task);
80-
}
71+
return view('tasks.edit')->with('task', $task);
8172
}
8273

8374
/**
8475
* Update the specified resource in storage.
8576
*
86-
* @param integer $id
87-
* @param \Illuminate\Http\Request $request
77+
* @param \App\Task $task
78+
* @param \Illuminate\Http\Request $request
8879
* @return \Illuminate\Http\Response
8980
*/
90-
public function update($id, UpdateUserTask $request)
91-
{
92-
$task = Task::findOrFail($id);
93-
if($request->user_id == Auth::id()){
94-
$task->update($request->all());
95-
}
81+
public function update(Task $task, TaskRequest $request)
82+
{
83+
$task->update($request->all());
84+
9685
return back()->with('success', 'task has been updated');
9786
}
9887

9988
/**
10089
* Remove the specified resource from storage.
10190
*
102-
* @param integer $id
91+
* @param \App\Task $task
10392
* @return \Illuminate\Http\Response
10493
*/
105-
public function destroy($id)
94+
public function destroy(Task $task)
10695
{
107-
$task = Task::find($id);
108-
if($task->user_id == Auth::id()){
109-
$task->delete();
96+
$task->delete();
11097

111-
return redirect('/tasks')->with('success', 'Task has been deleted!!');
112-
}
98+
return redirect('/tasks')->with('success', 'Task has been deleted!');
11399
}
114-
100+
115101
/**
116102
* complete the task
117103
*
118-
* @param integer $id
104+
* @param integer $id
119105
* @return \Illuminate\Http\Response
120106
*/
121107
public function complete($id)
122108
{
123-
$task = Task::find($id);
124-
if($task->user_id == Auth::id()){
125-
if(!$task->complete){
126-
$task->complete = true;
127-
}else{
128-
$task->complete = false;
129-
}
130-
$task->save();
131-
132-
return redirect('/tasks')->with('success', 'Task has been completed!');
109+
$task = auth()->user()->tasks()->findOrFail($id);
110+
111+
if (!$task->is_completed) {
112+
$task->is_completed = true;
113+
} else {
114+
$task->is_completed = false;
133115
}
116+
$task->save();
117+
118+
return redirect('/tasks')->with('success', 'Task has been completed!');
134119
}
135120
}

app/Http/Requests/UpdateUserTask.php renamed to app/Http/Requests/TaskRequest.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33
namespace App\Http\Requests;
44

55
use Illuminate\Foundation\Http\FormRequest;
6-
use Illuminate\Support\Facades\Auth;
76

8-
9-
class UpdateUserTask extends FormRequest
7+
class TaskRequest extends FormRequest
108
{
119
/**
1210
* Determine if the user is authorized to make this request.
@@ -26,8 +24,7 @@ public function authorize()
2624
public function rules()
2725
{
2826
return [
29-
'name' => 'required|max:150;',
30-
'description' => '',
27+
'name' => 'required|max:150',
3128
];
3229
}
3330
}

app/Policies/TaskPolicy.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
namespace App\Policies;
4+
5+
use App\User;
6+
use App\Task;
7+
use Illuminate\Auth\Access\HandlesAuthorization;
8+
9+
class TaskPolicy
10+
{
11+
use HandlesAuthorization;
12+
13+
/**
14+
* Determine whether the user can view the task.
15+
*
16+
* @param \App\User $user
17+
* @param \App\Task $task
18+
* @return mixed
19+
*/
20+
public function view(User $user, Task $task)
21+
{
22+
return true;
23+
}
24+
25+
/**
26+
* Determine whether the user can create tasks.
27+
*
28+
* @param \App\User $user
29+
* @return mixed
30+
*/
31+
public function create(User $user)
32+
{
33+
return true;
34+
}
35+
36+
/**
37+
* Determine whether the user can update the task.
38+
*
39+
* @param \App\User $user
40+
* @param \App\Task $task
41+
* @return mixed
42+
*/
43+
public function update(User $user, Task $task)
44+
{
45+
return $user->id == $task->user_id;
46+
}
47+
48+
/**
49+
* Determine whether the user can delete the task.
50+
*
51+
* @param \App\User $user
52+
* @param \App\Task $task
53+
* @return mixed
54+
*/
55+
public function delete(User $user, Task $task)
56+
{
57+
return $user->id == $task->user_id;
58+
}
59+
}

app/Providers/AuthServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class AuthServiceProvider extends ServiceProvider
1313
* @var array
1414
*/
1515
protected $policies = [
16-
'App\Model' => 'App\Policies\ModelPolicy',
16+
'App\Task' => 'App\Policies\TaskPolicy',
1717
];
1818

1919
/**

app/Statuses.php

Lines changed: 0 additions & 10 deletions
This file was deleted.

app/Task.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
class Task extends Model
88
{
9-
protected $fillable = ['name','description','user_id'];
9+
protected $fillable = ['name', 'description', 'user_id', 'is_completed'];
1010
}

app/User.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,9 @@ class User extends Authenticatable
2727
protected $hidden = [
2828
'password', 'remember_token',
2929
];
30+
31+
public function tasks()
32+
{
33+
return $this->hasMany('App\Task');
34+
}
3035
}

database/migrations/2018_01_28_113443_create_tasks_table.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function up()
1717
$table->increments('id');
1818
$table->string('name');
1919
$table->text('description')->nullable();
20-
$table->boolean('complete')->default(false);
20+
$table->boolean('is_completed')->default(false);
2121
$table->integer('user_id');
2222
$table->timestamps();
2323
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@if ($errors->any())
2+
<div class="alert alert-danger">
3+
<ul class="mb-auto">
4+
@foreach ($errors->all() as $error)
5+
<li>{{ $error }}</li>
6+
@endforeach
7+
</ul>
8+
</div><br/>
9+
@endif

resources/views/particles/nav.blade.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
<a class="navbar-brand" href="{{ Auth::user() ? '/tasks' : '/' }}">
33
Todolist app
44
</a>
5-
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01"
5+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbar"
66
aria-expanded="false" aria-label="Toggle navigation" style="">
77
<span class="navbar-toggler-icon"></span>
88
</button>
99

10-
<div class="collapse navbar-collapse" id="navbarColor01">
10+
<div class="collapse navbar-collapse" id="navbar">
1111
<ul class="navbar-nav mr-auto">
1212
</ul>
13-
<ul class="navbar-nav my-2 my-lg-0">
13+
<ul class="navbar-nav my-2 my-lg-0">
1414
@auth
1515
<li class="nav-item">
1616
<span class="navbar-text">
@@ -25,8 +25,7 @@
2525
<form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
2626
{{ csrf_field() }}
2727
</form>
28-
@endauth
29-
@guest
28+
@else
3029
<li class="nav-item active">
3130
<a class="nav-link" href="{{route('login')}}">Login
3231
<span class="sr-only">(current)</span>
@@ -37,7 +36,7 @@
3736
<span class="sr-only">(current)</span>
3837
</a>
3938
</li>
40-
@endguest
39+
@endauth
4140
</ul>
4241
</div>
4342
</nav>

0 commit comments

Comments
 (0)