singularity 0.0.6 → 0.0.7

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTZmY2IxNDdmMzIyYTg2YjM2MGMxY2MwNDgwZTI3NjcwMzZiZWMzNQ==
5
+ data.tar.gz: !binary |-
6
+ MzAyMWEyMjdlNWIzNGYyZGViOTU1ZTE3ZjQyOTg2ZTFkMzcwNTEwMg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODk1MzdmM2FiMzNhMmJjZTk1NWNiZjk4ZDhlZjY3OTIwYjljMTMyMmRlODlm
10
+ ZjA0MTQxNjVjZjNhMTVkYTg2ODdlNjVkMDU0ZDc0YTNiMGI4Mjc3M2U2NTQ1
11
+ ZGFiOWMxNDgzNzU0YTJlYmU2YmQxNDExN2RkYjZhYzM4MzJkOWE=
12
+ data.tar.gz: !binary |-
13
+ MTk0MDdmMGVkYjQ5ZmM1ZjJjYjhiNTZjN2UzZjRkODUxNDE0Y2MxODQ0N2Jh
14
+ NTVmODBjN2RhNDY2NjMxMTQwMjljMmRhYzk5OTQ1ZDQyZTA1MjcyZTJkNTE3
15
+ OTFjYTZkYTJmZjlkMTdjMDIxZThlN2E2YWZlZGJlMTJkYTAxODc=
@@ -8,39 +8,52 @@ var Singularity = (function () {
8
8
  jQuery.extend( true, this, options );
9
9
  }
10
10
 
11
- this.init = function () {
12
- this.logged_in ? this.registerMasterAuth() : this.checkMasterAuth();
11
+ this.init = function ( command ) {
12
+ if ( this.logged_in === true )
13
+ if ( command === 'register' ) {
14
+ this.registerMasterAuth();
15
+ }
16
+
17
+ if ( this.logged_in === false )
18
+ if ( command === 'lookup' ) {
19
+ this.checkMasterAuth();
20
+ }
13
21
  }
14
22
 
15
23
  function login ( result ) {
16
- if ( result['logged_in'] )
17
- $(Singularity).trigger('login.success');
18
- else
19
- $(Singularity).trigger('login.failure');
24
+ $(Singularity).trigger(result['logged_in'] ? 'login.success' : 'login.failure')
20
25
  }
21
26
 
22
27
  function register ( result ) {
23
- if ( result['logged_in'] )
24
- $(Singularity).trigger('register.success');
25
- else
26
- $(Singularity).trigger('register.failure');
28
+ $(Singularity).trigger(result['logged_in'] ? 'register.success' : 'register.failure');
27
29
  }
28
30
 
31
+ var xhr, timeout;
32
+
29
33
  this.checkMasterAuth = function () {
30
- var url = this.master_auth + '?session_token=' + this.session_token + '&callback=?';
31
- $.getJSON( url, login );
34
+ $(this).trigger('lookup');
35
+
36
+ var url = this.master_auth + '/lookup?token=' + this.session_token + '&callback=?';
37
+ xhr = $.getJSON(url).then(login).fail(function () { $(Singularity).trigger('login.failure') });
38
+ timeout = setTimeout(requestTimeout, 5000);
39
+
40
+ return xhr;
41
+ }
42
+
43
+ function requestTimeout () {
44
+ if ( xhr.readyState !== 4 ) xhr.abort();
32
45
  }
33
46
 
34
47
  this.registerMasterAuth = function () {
35
- var url = this.master_auth + '?register_token=' + this.session_token + '&callback=?';
36
- $.getJSON( url, register );
48
+ $(this).trigger('register');
49
+
50
+ var url = this.master_auth + '/register?token=' + this.session_token + '&callback=?';
51
+ return xhr = $.getJSON(url).then(register).fail(function () { $(Singularity).trigger('register.failure') });
37
52
  }
38
53
 
39
- $(this).bind('login.success', function () {
40
- setTimeout(function () { window.location.reload(true); }, 2000);
41
- });
54
+ $(this).on('login.success', function () { window.location.reload(true) });
55
+ $(this).on('login.success login.failure', function () { clearTimeout(timeout) });
42
56
 
43
57
  return this;
44
58
 
45
59
  }).apply({});
46
-
@@ -37,7 +37,8 @@ module Singularity
37
37
  end
38
38
 
39
39
  session_token = SecureRandom.hex(32)
40
- token_expiration = options.fetch(:expires, 1800)
40
+ token_expiration = options.fetch(:expires){ redis.ttl session_key(session_id) }
41
+ token_expiration = 1_800 if token_expiration < 1
41
42
 
42
43
  redis.setex token_key(session_token), token_expiration, session_id
43
44
 
@@ -49,11 +50,11 @@ module Singularity
49
50
  end
50
51
 
51
52
  def session_key(id)
52
- Singularity.session_prefix.nil? ? id : "#{Singularity.session_prefix}:#{id}"
53
+ Singularity.session_prefix ? "#{ Singularity.session_prefix }:#{ id }" : id
53
54
  end
54
55
 
55
56
  def token_key(token)
56
- "#{Singularity.token_prefix}:#{token}"
57
+ "#{ Singularity.token_prefix }:#{ token }"
57
58
  end
58
59
 
59
60
  def find_session_id_by_token(session_token)
@@ -63,11 +64,11 @@ module Singularity
63
64
  end
64
65
 
65
66
  def fetch_key_from_session(session_id, key)
66
- redis.hget session_key(session_id), key
67
+ redis.hget session_key(session_id), key if session_id
67
68
  end
68
69
 
69
70
  def store_key_in_session(session_id, key, value)
70
- redis.hset session_key(session_id), key, value
71
+ redis.hset session_key(session_id), key, value if session_id
71
72
  end
72
73
 
73
74
  def destroy_session(*ids)
@@ -1,4 +1,5 @@
1
1
  require 'openssl'
2
+ require 'rack/utils'
2
3
 
3
4
  module Singularity
4
5
  class PasswordHash
@@ -1,3 +1,3 @@
1
1
  module Singularity
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -15,8 +15,8 @@ Gem::Specification.new do |s|
15
15
  s.require_path = "lib"
16
16
 
17
17
  s.add_dependency "redis-native_hash", ">= 0"
18
- s.add_dependency "railties", "~> 3.1"
19
- s.add_dependency "jquery-rails", "~> 1.0"
18
+ s.add_dependency "railties", ">= 3.1"
19
+ s.add_dependency "jquery-rails"
20
20
 
21
21
  s.add_development_dependency "bundler", "~> 1.0.0"
22
22
  s.add_development_dependency "rspec", "~> 2.3.0"
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: singularity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Carl Zulauf
@@ -10,12 +9,11 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-10-15 00:00:00.000000000 Z
12
+ date: 2013-12-07 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: redis-native_hash
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - ! '>='
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - ! '>='
29
26
  - !ruby/object:Gem::Version
@@ -31,39 +28,34 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: railties
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
- - - ~>
32
+ - - ! '>='
37
33
  - !ruby/object:Gem::Version
38
34
  version: '3.1'
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
- - - ~>
39
+ - - ! '>='
45
40
  - !ruby/object:Gem::Version
46
41
  version: '3.1'
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: jquery-rails
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
- - - ~>
46
+ - - ! '>='
53
47
  - !ruby/object:Gem::Version
54
- version: '1.0'
48
+ version: '0'
55
49
  type: :runtime
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
- - - ~>
53
+ - - ! '>='
61
54
  - !ruby/object:Gem::Version
62
- version: '1.0'
55
+ version: '0'
63
56
  - !ruby/object:Gem::Dependency
64
57
  name: bundler
65
58
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
59
  requirements:
68
60
  - - ~>
69
61
  - !ruby/object:Gem::Version
@@ -71,7 +63,6 @@ dependencies:
71
63
  type: :development
72
64
  prerelease: false
73
65
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
66
  requirements:
76
67
  - - ~>
77
68
  - !ruby/object:Gem::Version
@@ -79,7 +70,6 @@ dependencies:
79
70
  - !ruby/object:Gem::Dependency
80
71
  name: rspec
81
72
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
73
  requirements:
84
74
  - - ~>
85
75
  - !ruby/object:Gem::Version
@@ -87,7 +77,6 @@ dependencies:
87
77
  type: :development
88
78
  prerelease: false
89
79
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
80
  requirements:
92
81
  - - ~>
93
82
  - !ruby/object:Gem::Version
@@ -111,31 +100,29 @@ files:
111
100
  - lib/singularity/engine.rb
112
101
  - lib/singularity/password_hash.rb
113
102
  - lib/singularity/version.rb
114
- - lib/warden/strategies/singularity.rb
115
103
  - singularity.gemspec
116
104
  homepage: https://github.com/lyconic/singularity
117
105
  licenses:
118
106
  - MIT
107
+ metadata: {}
119
108
  post_install_message:
120
109
  rdoc_options: []
121
110
  require_paths:
122
111
  - lib
123
112
  required_ruby_version: !ruby/object:Gem::Requirement
124
- none: false
125
113
  requirements:
126
114
  - - ! '>='
127
115
  - !ruby/object:Gem::Version
128
116
  version: '0'
129
117
  required_rubygems_version: !ruby/object:Gem::Requirement
130
- none: false
131
118
  requirements:
132
119
  - - ! '>='
133
120
  - !ruby/object:Gem::Version
134
121
  version: '0'
135
122
  requirements: []
136
123
  rubyforge_project:
137
- rubygems_version: 1.8.24
124
+ rubygems_version: 2.1.10
138
125
  signing_key:
139
- specification_version: 3
126
+ specification_version: 4
140
127
  summary: multi-domain single sign on
141
128
  test_files: []
@@ -1,21 +0,0 @@
1
- module Warden
2
- module Strategies
3
- class Singularity < Base
4
- def valid?
5
- params["login"] || params["password"]
6
- end
7
-
8
- def authenticate!
9
- IG::User.includes(:authorizations).find_by_login(params['login'].strip).tap do |user|
10
- if user.try(:can_login?) && user.try(:password?, params['password'])
11
- success! user
12
- else
13
- fail! 'Invalid username/password'
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
20
-
21
- Warden::Strategies.add(:singularity, Warden::Strategies::Singularity)