cmsso 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e1cdda96a08edd89ab18a92838249e7a0588245
4
- data.tar.gz: d95f5f2e9edca7f17465028d00376785015b7a09
3
+ metadata.gz: 41666d204d02998cf708a5b46a2d562ed67be822
4
+ data.tar.gz: 6e38e785a9a5fd7a20182c70771fd9c37b40fcec
5
5
  SHA512:
6
- metadata.gz: 177e400c3144072b45169e61e4f233e2a09bd5542a2a7112787eeb41e6451c2b46e426b048c4f79664c0dd7bcb4f1dfe034963a6b01778aeb527adaf660b57d7
7
- data.tar.gz: aedbd0e046de6446f2492d4e63cdde46449c1a933c075d0be1748ed8e745bf5baa509202485156201b462551addfe353cb695c592ac29a6cf96ac87112fd0cce
6
+ metadata.gz: afcb28563e46baca814628c995634a43e489123dc584b423e27701b425b191c6e2aa33d3267a03c21620423e7897259a1c2b8755f040ba356875851827fdbe9b
7
+ data.tar.gz: 0900402a2434c27f30e16add07c99c26aa38b38fef932cb266858ab62b8e4e02a88dcdedb4533a5b1c881739d632c950d1f74e737ff3b3101a1abfe9f525ca50
@@ -0,0 +1,5 @@
1
+ ## 0.3.2 (2017-01-26)
2
+
3
+ Features
4
+
5
+ - Allow access to timezone attribute
@@ -0,0 +1,93 @@
1
+ cmsso
2
+ =====
3
+
4
+ Company specific Single Sign On for rails applications.
5
+
6
+ ## Installation
7
+
8
+ Simply add cmsso to your Gemfile and bundle it up.
9
+
10
+ ```Ruby
11
+ gem 'cmsso'
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ Configure cmsso gem with an initializer.
17
+
18
+ ```Ruby
19
+ Cmsso.configure do |config|
20
+ config.module_key = 'my_module_key'
21
+
22
+ # optional settings
23
+ config.base_uri = "http://cmservice-chbs#{environment}.{company}.net:3056/persons"
24
+ config.proxy = "proxy.{company}.net:2010"
25
+ end
26
+ ```
27
+
28
+ This is how your application controller could look like.
29
+
30
+ ```Ruby
31
+ class ApplicationController < ActionController::Base
32
+ include Cmsso
33
+ protect_from_forgery
34
+ before_filter :authorize
35
+ include ApplicationHelper
36
+ helper_method :current_user
37
+
38
+ def current_user
39
+ @current_user ||= current_user_from_session || current_user_from_cmsso
40
+ end
41
+
42
+ private
43
+
44
+ def current_user_from_session
45
+ session[:person]
46
+ end
47
+
48
+ def current_user_from_cmsso
49
+ person = Cmsso::Member.find(request.headers) || Cmsso::Member.create(request.headers)
50
+
51
+ if person
52
+ session[:person] = person
53
+ else
54
+ flash.now[:error] = Cmsso::Member.note
55
+ AL.warn(Cmsso::Member.note)
56
+ return Cmsso::Member.new({full_name: "Unknown"})
57
+ end
58
+ end
59
+
60
+ def authorize
61
+ current_user
62
+ end
63
+
64
+ end
65
+ ```
66
+
67
+ Cmsso::Member.create will create the user with a guest role. This method call is optional.
68
+
69
+ In views you can check roles as follows.
70
+
71
+ ```Ruby
72
+ current_user.administrator? # true if a user has adminintrator role
73
+ current_user.operator? # true if a user has operator role
74
+ current_user.user? # true if a user has user roles
75
+ current_user.guest? # true if a user has guest role
76
+ ```
77
+
78
+ To display the user name in a view do the following:
79
+
80
+ ```Ruby
81
+ current_user.full_name
82
+ ```
83
+
84
+ ### Note
85
+ uses MIT-LICENSE.
86
+
87
+ ## Contributing
88
+
89
+ 1. Fork it
90
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
91
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
92
+ 4. Push to the branch (`git push origin my-new-feature`)
93
+ 5. Create new Pull Request
@@ -9,6 +9,7 @@ module Cmsso
9
9
  attr_accessor :first_name
10
10
  attr_accessor :last_name
11
11
  attr_accessor :email
12
+ attr_accessor :time_zone
12
13
  attr_accessor :roles
13
14
  attr_accessor :reference
14
15
  attr_accessor :status
@@ -34,7 +35,7 @@ module Cmsso
34
35
  end
35
36
 
36
37
  def method_missing(method)
37
- @roles.include?(method[0..-2].to_sym)
38
+ @roles.include?(method[0..-2].to_sym)
38
39
  end
39
40
 
40
41
  def full_name
@@ -56,8 +57,8 @@ module Cmsso
56
57
 
57
58
  # call service
58
59
  person = nil
59
-
60
- # set proxy as defined during configuration
60
+
61
+ # set proxy as defined during configuration
61
62
  ENV['http_proxy'] = Cmsso.configuration.proxy if ENV
62
63
 
63
64
  begin
@@ -73,16 +74,16 @@ module Cmsso
73
74
 
74
75
  end
75
76
 
76
- # parsing error
77
+ # parsing error
77
78
  rescue JSON::ParserError => e
78
- @@type, @@note = :parse,"Error while parsing role service response"
79
+ @@type, @@note = :parse,"Error while parsing role service response"
79
80
  return nil
80
81
 
81
82
  # service specific
82
83
  rescue SocketError, Errno::ECONNREFUSED => e
83
84
  @@type, @@note = :service,"Error while calling role service: #{e.to_s}"
84
85
  return nil
85
-
86
+
86
87
  # unexpected exceptions
87
88
  rescue => e
88
89
  @@type, @@note = :unexpected,"Error while calling role service: #{e.to_s}"
@@ -96,11 +97,11 @@ module Cmsso
96
97
  # get person reference from http header
97
98
  person_from_header = get_person_from_header(headers)
98
99
  return nil unless person_from_header
99
-
100
+
100
101
  # call service
101
102
  person = nil
102
-
103
- # set proxy as defined during configuration
103
+
104
+ # set proxy as defined during configuration
104
105
  ENV['http_proxy'] = Cmsso.configuration.proxy
105
106
 
106
107
 
@@ -111,7 +112,7 @@ module Cmsso
111
112
  RestClient.put Cmsso.configuration.base_uri, request, :content_type => :json do |response,request,result|
112
113
  # parse reponse and return person object
113
114
  person = Member.new(JSON.parse(response)["response"]["persons"][0])
114
-
115
+
115
116
  # check about invalid status
116
117
  unless person.status == 'valid'
117
118
  @@type, @@note = :role_or_person,person.note
@@ -119,17 +120,17 @@ module Cmsso
119
120
  end
120
121
 
121
122
  end
122
-
123
- # parsing error
123
+
124
+ # parsing error
124
125
  rescue JSON::ParserError => e
125
- @@type, @@note = :parse,"Error while parsing role service response"
126
+ @@type, @@note = :parse,"Error while parsing role service response"
126
127
  return nil
127
128
 
128
129
  # service specific
129
130
  rescue SocketError, Errno::ECONNREFUSED => e
130
131
  @@type, @@note = :service,"Error while calling role service: #{e.to_s}"
131
132
  return nil
132
-
133
+
133
134
  # unexpected exceptions
134
135
  rescue => e
135
136
  @@type, @@note = :unexpected,"Error while calling role service: #{e.to_s}"
@@ -147,13 +148,13 @@ module Cmsso
147
148
  if headers["HTTP_NIBR521"].nil? || headers["HTTP_NIBR521"].size == 0
148
149
  @@type, @@note = :header, "Person could not be authenticated. Is Authentication System (Vordel) running fine?"
149
150
  return nil
150
- else
151
+ else
151
152
  person.reference = headers["HTTP_NIBR521"].downcase
152
153
  person.first_name = headers["HTTP_NIBRFIRST"]
153
154
 
154
155
  if headers["HTTP_NIBRLAST"].nil? || headers["HTTP_NIBRLAST"].size == 0 || headers["HTTP_NIBRLAST"] =~ /^null$/
155
156
  person.last_name = person.reference
156
- else
157
+ else
157
158
  person.last_name = headers["HTTP_NIBRLAST"]
158
159
  end
159
160
 
@@ -173,4 +174,4 @@ module Cmsso
173
174
 
174
175
  end
175
176
 
176
- end
177
+ end
@@ -1,3 +1,3 @@
1
1
  module Cmsso
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,30 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmsso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Steiner
8
- - Patrick Kaddu
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-17 00:00:00.000000000 Z
11
+ date: 2017-01-26 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 12.0.0
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 12.0.0
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: rest-client
16
29
  requirement: !ruby/object:Gem::Requirement
17
30
  requirements:
18
- - - '>='
31
+ - - "~>"
19
32
  - !ruby/object:Gem::Version
20
- version: '0'
33
+ version: 2.0.0
21
34
  type: :runtime
22
35
  prerelease: false
23
36
  version_requirements: !ruby/object:Gem::Requirement
24
37
  requirements:
25
- - - '>='
38
+ - - "~>"
26
39
  - !ruby/object:Gem::Version
27
- version: '0'
40
+ version: 2.0.0
28
41
  description: CM Single Sign On
29
42
  email:
30
43
  - thomas.steiner@ikey.ch
@@ -32,13 +45,15 @@ executables: []
32
45
  extensions: []
33
46
  extra_rdoc_files: []
34
47
  files:
48
+ - CHANGELOG.md
49
+ - MIT-LICENSE
50
+ - README.md
51
+ - Rakefile
35
52
  - app/models/cmsso/member.rb
53
+ - lib/cmsso.rb
36
54
  - lib/cmsso/configuration.rb
37
55
  - lib/cmsso/engine.rb
38
56
  - lib/cmsso/version.rb
39
- - lib/cmsso.rb
40
- - MIT-LICENSE
41
- - Rakefile
42
57
  homepage: http://github.com/thomis/cmsso
43
58
  licenses:
44
59
  - MIT
@@ -50,17 +65,17 @@ require_paths:
50
65
  - app
51
66
  required_ruby_version: !ruby/object:Gem::Requirement
52
67
  requirements:
53
- - - '>='
68
+ - - ">="
54
69
  - !ruby/object:Gem::Version
55
70
  version: '0'
56
71
  required_rubygems_version: !ruby/object:Gem::Requirement
57
72
  requirements:
58
- - - '>='
73
+ - - ">="
59
74
  - !ruby/object:Gem::Version
60
75
  version: '0'
61
76
  requirements: []
62
77
  rubyforge_project:
63
- rubygems_version: 2.0.3
78
+ rubygems_version: 2.5.1
64
79
  signing_key:
65
80
  specification_version: 4
66
81
  summary: CM Signle Sign On