Sha256: d4f55eb961c8c2597842d278e83530ee3e86827b57648eda718bd540d19d38e9

Contents?: true

Size: 789 Bytes

Versions: 1

Compression:

Stored size: 789 Bytes

Contents

# frozen_string_literal: true

require 'ditty/policies/application_policy'

module Ditty
  class UserLoginTraitPolicy < ApplicationPolicy
    def create?
      user&.super_admin?
    end

    def list?
      !!user
    end

    def read?
      user && (record.user_id || user.super_admin?)
    end

    def update?
      user&.super_admin?
    end

    def delete?
      user&.super_admin?
    end

    def permitted_attributes
      attribs = %i[ip_address os browser]
      attribs << :user_id if user.super_admin?
      attribs
    end

    class Scope < ApplicationPolicy::Scope
      def resolve
        if user&.super_admin?
          scope
        elsif user
          scope.where(user_id: user.id)
        else
          scope.where(id: -1)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ditty-0.8.0 lib/ditty/policies/user_login_trait_policy.rb