shibboleth-rails 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,14 +15,18 @@ module Shibboleth::Rails
15
15
  def current_user
16
16
  return @current_user if defined?(@current_user)
17
17
  @current_user = if session[:simulate_id].present?
18
- User.find(session[:simulate_id])
19
- elsif authenticated?
20
- User.find_or_create_from_shibboleth(shibboleth)
21
- end
18
+ User.find(session[:simulate_id])
19
+ elsif authenticated?
20
+ User.find_or_create_from_shibboleth(shibboleth)
21
+ end
22
22
  end
23
23
 
24
24
  def require_shibboleth
25
- unless current_user
25
+ if current_user
26
+ current_user.update_usage_stats(request, :login => session['new'])
27
+ session.delete('new')
28
+ else
29
+ session['new'] = true
26
30
  if Rails.env.production?
27
31
  base = request.protocol + request.host
28
32
  requested_url = base + request.request_uri
@@ -1,15 +1,48 @@
1
1
  module Shibboleth::Rails
2
2
 
3
3
  module ModelAdditions
4
- def find_or_create_from_shibboleth(identity)
5
- user = find_or_create_by_emplid(identity)
4
+ def authenticated_by_shibboleth
5
+ extend ClassMethods
6
+ include InstanceMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def find_or_create_from_shibboleth(identity)
11
+ user = find_or_create_by_emplid(identity)
6
12
 
7
- # names change due to marriage, etc.
8
- # update_attribute is a NOOP if not different
9
- user.update_attribute(:name_n, identity[:name_n])
13
+ # names change due to marriage, etc.
14
+ # update_attribute is a NOOP if not different
15
+ user.update_attribute(:name_n, identity[:name_n])
10
16
 
11
- user
17
+ user
18
+ end
12
19
  end
13
- end
14
20
 
21
+ module InstanceMethods
22
+ def update_usage_stats(request, args = {})
23
+ if args[:login]
24
+ if self.respond_to?(:login_count)
25
+ self.login_count ||= 0
26
+ self.login_count += 1
27
+ end
28
+
29
+ if self.respond_to?(:current_login_at)
30
+ self.last_login_at = self.current_login_at if self.respond_to?(:last_login_at)
31
+ self.current_login_at = Time.now
32
+ end
33
+
34
+ if self.respond_to?(:current_login_ip)
35
+ self.last_login_ip = self.current_login_ip if self.respond_to?(:last_login_ip)
36
+ self.current_login_ip = request.remote_ip
37
+ end
38
+ end
39
+ self.last_request_at = Time.now if self.respond_to?(:last_request_at)
40
+
41
+ save
42
+ end
43
+ end
44
+
45
+ end
15
46
  end
47
+
48
+ ::ActiveRecord::Base.send :extend, Shibboleth::Rails::ModelAdditions
@@ -1,5 +1,5 @@
1
1
  module Shibboleth
2
2
  module Rails
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shibboleth-rails
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - mikegee
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-27 00:00:00 Z
18
+ date: 2011-08-29 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rails