thirteen-tien-len/app/policies/metapurse_policy.rb
2024-03-25 17:57:17 +00:00

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