62 lines
1.1 KiB
Ruby
62 lines
1.1 KiB
Ruby
class MetapursePolicy
|
|
attr_reader :user, :metapurse
|
|
|
|
def initialize(user, metapurse)
|
|
@user = user || User.new
|
|
@metapurse = metapurse
|
|
end
|
|
|
|
class Scope
|
|
def initialize(user, scope)
|
|
@user = user
|
|
@scope = scope
|
|
end
|
|
|
|
def resolve
|
|
if user.admin?
|
|
scope.all
|
|
else
|
|
scope.where(user_id: nil).or(scope.where(is_private: false)).or(scope.where(user_id: user.id))
|
|
# scope.first
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :user, :scope
|
|
end
|
|
|
|
def index?
|
|
true
|
|
end
|
|
|
|
def show?
|
|
@user.admin? || @metapurse.user == @user || @metapurse.user == nil || @metapurse.is_private == false
|
|
end
|
|
|
|
def data?
|
|
@user.admin? || @metapurse.user == @user || @metapurse.user == nil || @metapurse.is_private == false
|
|
end
|
|
|
|
def create?
|
|
@user.admin? || @user.signed_in? || true
|
|
end
|
|
|
|
def new?
|
|
@user.admin? || @user.signed_in? || true
|
|
end
|
|
|
|
def edit?
|
|
@user.admin? || update?
|
|
end
|
|
|
|
def update?
|
|
@user.admin? || @metapurse.user == @user || @metapurse.user == nil
|
|
end
|
|
|
|
def destroy?
|
|
@user.admin? || @metapurse.user == @user || @metapurse.user == nil
|
|
end
|
|
|
|
end
|