Skip to content

Commit 2496e0b

Browse files
author
Joseph Salzano
committed
Added much of member authorization to projects, start of project admin
1 parent dd7e347 commit 2496e0b

File tree

13 files changed

+188
-19
lines changed

13 files changed

+188
-19
lines changed
Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<?php
22
namespace SoftwareHerd\Http\Controllers;
33

4-
use SoftwareHerd\Post;
4+
use SoftwareHerd\Comment;
55
use Illuminate\Http\Request;
66

77
class CommentController extends Controller
88
{
9-
public function projectCreateComment(request $request)
9+
public function createComment(request $request)
1010
{
1111
$comment = new Comment();
12-
$comment->title = $request['title'];
13-
$comment->description = $request['description'];
14-
$comment->posting_project = $request->project()->id;
15-
//$request->projects()->-posts->save($post);
16-
return view('home');
12+
$comment->data = $request['data'];
13+
$comment->post_id = $request->id;
14+
$comment->user_id = $request->user()->id;
15+
$comment->save();
16+
return redirect('/news_post/'.$request->id);
1717
}
1818
}

app/Http/Controllers/PostController.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66

77
class PostController extends Controller
88
{
9-
public function projectCreatePost(request $request)
9+
public function createPost(request $request)
1010
{
11-
$post = new Post();
12-
$post->title = $request['title'];
11+
$post = new Comment();
12+
$post->title = $request['info'];
13+
$post->summary = $request['summary'];
1314
$post->info = $request['info'];
14-
$post->posting_project = $request->project()->id;
15-
save($post);
16-
return view('home');
15+
$post->posting_project = $request->id;
16+
$post->save();
17+
return redirect('/project/'.$request->id);
1718
}
1819

1920
public function post($id) {

app/Http/Controllers/ProjectController.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,10 @@ public function projects() {
3131
return view('project_library', array('projects' => $projects));
3232
}
3333

34+
public function admin($id) {
35+
$project = Project::find($id);
36+
if(!\Auth::user()->can('admin', $project))
37+
return redirect('/project_library');
38+
return view('project_admin', array('project' => $project));
39+
}
3440
}

app/Policies/CommentPolicy.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace SoftwareHerd\Policies;
4+
5+
use SoftwareHerd\User;
6+
use SoftwareHerd\Comment;
7+
use Illuminate\Auth\Access\HandlesAuthorization;
8+
9+
class CommentPolicy
10+
{
11+
use HandlesAuthorization;
12+
13+
/**
14+
* Determine whether the user can update the comment.
15+
*
16+
* @param \SoftwareHerd\User $user
17+
* @param \SoftwareHerd\Comment $comment
18+
* @return mixed
19+
*/
20+
public function update(User $user, Comment $comment)
21+
{
22+
//
23+
}
24+
25+
/**
26+
* Determine whether the user can delete the comment.
27+
*
28+
* @param \SoftwareHerd\User $user
29+
* @param \SoftwareHerd\Comment $comment
30+
* @return mixed
31+
*/
32+
public function delete(User $user, Comment $comment)
33+
{
34+
//
35+
}
36+
}

app/Policies/ProjectPolicy.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
namespace SoftwareHerd\Policies;
4+
5+
use SoftwareHerd\User;
6+
use SoftwareHerd\Project;
7+
use Illuminate\Auth\Access\HandlesAuthorization;
8+
9+
class ProjectPolicy
10+
{
11+
use HandlesAuthorization;
12+
13+
public function admin(User $user, Project $project)
14+
{
15+
$user_projects = \DB::table('user_projects')->where('project_id', $project->id)->where('user_id', $user->id)->first();
16+
if(!$user_projects)
17+
return false;
18+
if($user_projects->level > 0)
19+
return true;
20+
else
21+
return false;
22+
}
23+
24+
public function leader(User $user, Project $project)
25+
{
26+
$user_projects = \DB::table('user_projects')->where('project_id', $project->id)->where('user_id', $user->id)->first();
27+
if(!$user_projects)
28+
return false;
29+
if($user_projects->level > 1)
30+
return true;
31+
else
32+
return false;
33+
}
34+
35+
public function creator(User $user, Project $project)
36+
{
37+
$user_projects = \DB::table('user_projects')->where('project_id', $project->id)->where('user_id', $user->id)->first();
38+
if(!$user_projects)
39+
return false;
40+
if($user_projects->level > 2)
41+
return true;
42+
else
43+
return false;
44+
}
45+
}

app/Project.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Project extends Model
1010

1111
public function user()
1212
{
13-
return $this->belongsTo('SoftwareHerd\User');
13+
return $this->hasMany('SoftwareHerd\User');
1414
}
1515

1616
public function posts()

app/Providers/AppServiceProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
class AppServiceProvider extends ServiceProvider
88
{
9+
910
/**
1011
* Bootstrap any application services.
1112
*

app/Providers/AuthServiceProvider.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ class AuthServiceProvider extends ServiceProvider
1414
*/
1515
protected $policies = [
1616
'SoftwareHerd\Model' => 'SoftwareHerd\Policies\ModelPolicy',
17+
'SoftwareHerd\Project' => 'SoftwareHerd\Policies\ProjectPolicy',
18+
'SoftwareHerd\Comment' => 'SoftwareHerd\Policies\CommentPolicy',
1719
];
1820

1921
/**
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
use Illuminate\Support\Facades\Schema;
4+
use Illuminate\Database\Schema\Blueprint;
5+
use Illuminate\Database\Migrations\Migration;
6+
7+
class AddMemberLevelToProjects extends Migration
8+
{
9+
/**
10+
* Run the migrations.
11+
*
12+
* @return void
13+
*/
14+
public function up()
15+
{
16+
Schema::table('user_projects', function (Blueprint $table) {
17+
$table->smallInteger('level'); // 0=Member, 1=Admin, 2=Leader, 3=Creator
18+
$table->index('project_id', 'project_id_index');
19+
});
20+
}
21+
22+
/**
23+
* Reverse the migrations.
24+
*
25+
* @return void
26+
*/
27+
public function down()
28+
{
29+
Schema::table('user_projects', function (Blueprint $table) {
30+
$table->dropColumn('level');
31+
$table->dropIndex('project_id_index');
32+
});
33+
}
34+
}

resources/views/news_post.blade.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,32 @@
22

33
@section('content')
44

5-
{{$post->title}}<br>
5+
<h4>{{$post->title}}</h4><br>
66
{{$post->created_at}}<br>
77
<?php echo $post->info; ?><br>
88

99

1010
<h2>Comments:</h2>
1111

1212
@foreach ($post->comments as $comment)
13-
{{$comment->user->name}}<br>
13+
<a href="/members/{{$comment->user->id}}">{{$comment->user->name}}</a><br>
1414
{{$comment->created_at}}<br>
15-
{{$comment->data}}</br><br>
15+
{{$comment->data}}<br><br>
1616
@endforeach
1717

18+
@if(Auth::User())
19+
20+
<form method="post">
21+
<div class="form-group">
22+
<textarea class="form-control" name="data" id="new-project" rows="5" placeholder="Post a comment here."></textarea>
23+
</div>
24+
<button type="submit" class="btn btn-primary">Post Comment</button>
25+
<input type="hidden" value="{{ Session::token() }}" name="_token">
26+
{{ csrf_field() }}
27+
</form>
28+
29+
@else
30+
Please <a href="{{ url('/login') }}">login</a> if you want to post a comment.
31+
@endif
32+
1833
@endsection

0 commit comments

Comments
 (0)