first commit, largely copied volunteers
This commit is contained in:
53
app/policies/application_policy.rb
Normal file
53
app/policies/application_policy.rb
Normal file
@ -0,0 +1,53 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class ApplicationPolicy
|
||||
attr_reader :member, :record
|
||||
|
||||
def initialize(member, record)
|
||||
@member = member
|
||||
@record = record
|
||||
end
|
||||
|
||||
def index?
|
||||
false
|
||||
end
|
||||
|
||||
def show?
|
||||
false
|
||||
end
|
||||
|
||||
def create?
|
||||
false
|
||||
end
|
||||
|
||||
def new?
|
||||
create?
|
||||
end
|
||||
|
||||
def update?
|
||||
false
|
||||
end
|
||||
|
||||
def edit?
|
||||
update?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
false
|
||||
end
|
||||
|
||||
class Scope
|
||||
def initialize(member, scope)
|
||||
@member = member
|
||||
@scope = scope
|
||||
end
|
||||
|
||||
def resolve
|
||||
raise NotImplementedError, "You must define #resolve in #{self.class}"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :member, :scope
|
||||
end
|
||||
end
|
14
app/policies/edit_own_policy.rb
Normal file
14
app/policies/edit_own_policy.rb
Normal file
@ -0,0 +1,14 @@
|
||||
# allows to edit/detroy own data
|
||||
# which can be viewed by anyone
|
||||
class EditOwnPolicy < ApplicationPolicy
|
||||
def edit?
|
||||
return true if member.admin?
|
||||
owner?
|
||||
end
|
||||
def owner?
|
||||
member == record.member
|
||||
end
|
||||
alias :update? :edit?
|
||||
alias :destroy? :edit?
|
||||
|
||||
end
|
3
app/policies/picture_policy.rb
Normal file
3
app/policies/picture_policy.rb
Normal file
@ -0,0 +1,3 @@
|
||||
class PicturePolicy < EditOwnPolicy
|
||||
|
||||
end
|
3
app/policies/story_policy.rb
Normal file
3
app/policies/story_policy.rb
Normal file
@ -0,0 +1,3 @@
|
||||
class StoryPolicy < EditOwnPolicy
|
||||
|
||||
end
|
Reference in New Issue
Block a user