Sha256: fc75cd958b4cc28e03e483b12f1a54c3d0c1f1d0da74bb4b7d656eff2f3d5697

Contents?: true

Size: 1.62 KB

Versions: 13

Compression:

Stored size: 1.62 KB

Contents

require "active_support/concern"

module GDS
  module SSO
    module User
      extend ActiveSupport::Concern

      def has_permission?(permission)
        if permissions
          permissions.include?(permission)
        end
      end

      def has_all_permissions?(required_permissions)
        if permissions
          required_permissions.all? do |required_permission|
            permissions.include?(required_permission)
          end
        end
      end

      def self.user_params_from_auth_hash(auth_hash)
        {
          "uid" => auth_hash["uid"],
          "email" => auth_hash["info"]["email"],
          "name" => auth_hash["info"]["name"],
          "permissions" => auth_hash["extra"]["user"]["permissions"],
          "organisation_slug" => auth_hash["extra"]["user"]["organisation_slug"],
          "organisation_content_id" => auth_hash["extra"]["user"]["organisation_content_id"],
          "disabled" => auth_hash["extra"]["user"]["disabled"],
        }
      end

      def clear_remotely_signed_out!
        update_attribute(:remotely_signed_out, false)
      end

      def set_remotely_signed_out!
        update_attribute(:remotely_signed_out, true)
      end

      module ClassMethods
        def find_for_gds_oauth(auth_hash)
          user_params = GDS::SSO::User.user_params_from_auth_hash(auth_hash.to_hash)
          user = where(uid: user_params["uid"]).first ||
            where(email: user_params["email"]).first

          if user
            user.update!(user_params)
            user
          else # Create a new user.
            create!(user_params)
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
gds-sso-19.1.0 lib/gds-sso/user.rb
gds-sso-19.0.0 lib/gds-sso/user.rb
gds-sso-18.1.0 lib/gds-sso/user.rb
gds-sso-18.0.0 lib/gds-sso/user.rb
gds-sso-17.1.1 lib/gds-sso/user.rb
gds-sso-17.1.0 lib/gds-sso/user.rb
gds-sso-17.0.0 lib/gds-sso/user.rb
gds-sso-16.1.0 lib/gds-sso/user.rb
gds-sso-16.0.2 lib/gds-sso/user.rb
gds-sso-16.0.1 lib/gds-sso/user.rb
gds-sso-16.0.0 lib/gds-sso/user.rb
gds-sso-15.1.0 lib/gds-sso/user.rb
gds-sso-15.0.1 lib/gds-sso/user.rb