singularity 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)