Sha256: bcd793501c6cda589b41ac2239bdd7e3eb9aafcd59c3f8d006319761e6cd3791

Contents?: true

Size: 1.38 KB

Versions: 6

Compression:

Stored size: 1.38 KB

Contents

require 'active_support/concern'

module GDS
  module SSO
    module User
      extend ActiveSupport::Concern

      included do
        attr_accessible :uid, :email, :name, :permissions, :organisation_slug, as: :oauth
      end

      def has_permission?(permission)
        if permissions
          permissions.include?(permission)
        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'],
        }
      end

      def clear_remotely_signed_out!
        self.update_attribute(:remotely_signed_out, false)
      end

      def set_remotely_signed_out!
        self.update_attribute(:remotely_signed_out, true)
      end

      module ClassMethods
        def find_for_gds_oauth(auth_hash)
          if user = self.where(:uid => auth_hash["uid"]).first
            user.update_attributes(GDS::SSO::User.user_params_from_auth_hash(auth_hash.to_hash), as: :oauth)
            user
          else # Create a new user.
            self.create!(GDS::SSO::User.user_params_from_auth_hash(auth_hash.to_hash), as: :oauth)
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
gds-sso-9.2.1 lib/gds-sso/user.rb
gds-sso-9.2.0 lib/gds-sso/user.rb
gds-sso-9.1.2 lib/gds-sso/user.rb
gds-sso-9.1.1 lib/gds-sso/user.rb
gds-sso-9.1.0 lib/gds-sso/user.rb
gds-sso-9.0.0 lib/gds-sso/user.rb