Skip to content

Commit 9ff40b2

Browse files
committed
Quik Course 29
added enrollment policy, updated enrollments controller with auths, updated users & lessons policies to register when someone can view courses properly when purchased
1 parent 83ffe49 commit 9ff40b2

File tree

7 files changed

+38
-4
lines changed

7 files changed

+38
-4
lines changed

app/controllers/enrollments_controller.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class EnrollmentsController < ApplicationController
55
# GET /enrollments or /enrollments.json
66
def index
77
@enrollments = Enrollment.all
8+
authorize @enrollments
89
end
910

1011
# GET /enrollments/1 or /enrollments/1.json
@@ -18,6 +19,7 @@ def new
1819

1920
# GET /enrollments/1/edit
2021
def edit
22+
authorize @enrollment
2123
end
2224

2325
# POST /enrollments or /enrollments.json
@@ -34,6 +36,7 @@ def create
3436

3537
# PATCH/PUT /enrollments/1 or /enrollments/1.json
3638
def update
39+
authorize @enrollment
3740
respond_to do |format|
3841
if @enrollment.update(enrollment_params)
3942
format.html do
@@ -52,6 +55,7 @@ def update
5255

5356
# DELETE /enrollments/1 or /enrollments/1.json
5457
def destroy
58+
authorize @enrollment
5559
@enrollment.destroy
5660

5761
respond_to do |format|

app/controllers/users_controller.rb

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

77
@q = User.ransack(params[:q])
88
@users = @q.result(distinct: true)
9+
authorize @users
910
end
1011

1112
def show

app/models/course.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ def self.levels
3838
tracked owner: Proc.new { |controller, model| controller.current_user }
3939

4040
def bought(user)
41-
self.enrollments.where(user_id: [user.id, course_id: [self.id].empty?])
41+
self.enrollments.where(user_id: [user.id], course_id: [self.id]).empty?
4242
end
4343
end

app/policies/enrollment_policy.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class EnrollmentPolicy < ApplicationPolicy
2+
class Scope < Scope
3+
def resolve
4+
scope.all
5+
end
6+
end
7+
8+
def index?
9+
@user.has_role?(:admin)
10+
end
11+
12+
def edit?
13+
@record.user_id == @user.id
14+
end
15+
16+
def update?
17+
@record.user_id == @user.id
18+
end
19+
20+
def destroy?
21+
@user.has_role?(:admin)
22+
end
23+
end

app/policies/lesson_policy.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ def resolve
66
end
77

88
def show?
9-
@user&.has_role?(:admin || @record.course.user_id == @user.id)
9+
@user&.has_role?(:admin || @record.course.user_id == @user.id) ||
10+
@record.course.bought(@user) == false
1011
end
1112

1213
def edit?

app/policies/user_policy.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ def resolve
66
end
77
end
88

9+
def index?
10+
@user.has_role?(:admin)
11+
end
12+
913
def edit?
1014
@user.has_role?(:admin)
1115
end

app/views/courses/show.html.haml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
= render 'courses/course', course: @course
1414
.col-lg-6
1515
.fa.fa-plus
16-
= link_to 'Add Lesson', new_course_lesson_path(@course, @lesson), class: 'btn btn-primary btn-sm btn-block'
17-
%p
16+
- if policy(@course).edit?
17+
= link_to 'Add Lesson', new_course_lesson_path(@course, @lesson), class: 'btn btn-primary btn-sm btn-block'
18+
%p
1819
- @lessons.each do |lesson|
1920
= render 'lessons/lesson', lesson: lesson

0 commit comments

Comments
 (0)