iam 0.1.3 → 0.1.4
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.
- data/README.md +1 -1
- data/app/views/iam/_account_group.html.erb +2 -1
- data/app/views/iam/_key_setting.html.erb +4 -0
- data/app/views/iam/_menu.html.erb +1 -0
- data/app/views/iam/_settings.html.erb +11 -0
- data/iam.gemspec +5 -2
- data/lib/helpers/iam_helper.rb +1 -1
- data/lib/iam/version.rb +1 -1
- data/spec/rails_app/app/assets/javascripts/application.js +0 -1
- data/spec/rails_app/app/assets/stylesheets/application.css +0 -1
- data/spec/rails_app/app/views/layouts/application.html.erb +1 -1
- data/vendor/assets/javascripts/iam.js.coffee +38 -20
- data/vendor/assets/javascripts/jquery.cookie.js +72 -0
- data/vendor/assets/stylesheets/iam.css.sass +5 -1
- metadata +43 -37
data/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
<% role, accounts = account_group %>
|
2
2
|
|
3
3
|
<tr>
|
4
|
-
<td class='role-name' colspan=<%= Iam::Configuration.account_attributes.count
|
4
|
+
<td class='role-name' colspan=<%= Iam::Configuration.account_attributes.count %>>
|
5
5
|
<%= role.public_send Iam::Configuration.role_name_attribute %>
|
6
6
|
</td>
|
7
7
|
</tr>
|
8
|
+
|
8
9
|
<%= render partial: 'iam/account', collection: accounts %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<tr>
|
2
|
+
<td class='iam-settings-header' colspan=<%= Iam::Configuration.account_attributes.count %>>
|
3
|
+
<%= t 'iam.settings' %>
|
4
|
+
</td>
|
5
|
+
</tr>
|
6
|
+
|
7
|
+
<tr>
|
8
|
+
<td class='iam-settings' colspan=<%= Iam::Configuration.account_attributes.count %>>
|
9
|
+
<%= render partial: 'iam/key_setting', collection: %w{alt ctrl shift} %>
|
10
|
+
</td>
|
11
|
+
</tr>
|
data/iam.gemspec
CHANGED
@@ -16,10 +16,13 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.require_path = 'lib'
|
17
17
|
|
18
18
|
s.add_dependency 'activesupport', '~> 3.1'
|
19
|
-
s.add_dependency 'coffee-rails', '~> 3.2.1'
|
20
19
|
s.add_dependency 'sass'
|
21
|
-
s.add_dependency '
|
20
|
+
s.add_dependency 'coffee-rails'
|
22
21
|
|
22
|
+
s.add_development_dependency 'jquery-rails'
|
23
|
+
s.add_development_dependency 'sass'
|
24
|
+
s.add_development_dependency 'sqlite3'
|
25
|
+
s.add_development_dependency 'devise'
|
23
26
|
s.add_development_dependency 'rails', '~> 3.1'
|
24
27
|
s.add_development_dependency 'rspec-rails', '~> 2.10'
|
25
28
|
|
data/lib/helpers/iam_helper.rb
CHANGED
data/lib/iam/version.rb
CHANGED
@@ -1,44 +1,62 @@
|
|
1
1
|
$ ->
|
2
2
|
$menu = $('#iam-menu')
|
3
3
|
linkTemplate = $menu.attr 'href'
|
4
|
-
inputMode = false
|
5
|
-
input = ''
|
4
|
+
inputMode = false # account id is anticipated to be typed
|
5
|
+
input = '' # typed string
|
6
|
+
controlKeys = ['alt', 'ctrl', 'shift']
|
6
7
|
|
7
8
|
iamNotice = (notice) ->
|
8
9
|
$notice = $("<div class='iam-notice'>#{notice}</div>")
|
9
10
|
$('body').append $notice
|
10
11
|
$notice.fadeIn(200).delay(1000).fadeOut 600
|
11
12
|
|
12
|
-
|
13
|
+
logInByLink = (link) ->
|
13
14
|
$.post link, (data) ->
|
14
15
|
$menu.hide()
|
15
16
|
window.location.reload()
|
16
17
|
iamNotice data.notice
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
isTilde = (code) ->
|
20
|
+
String.fromCharCode(code) == 'À' # tilde with any control key (alt shift ctrl)
|
21
|
+
|
22
|
+
controlKeysMatch = (e) ->
|
23
|
+
for key in controlKeys
|
24
|
+
checkBox = $(".iam-#{key}-settings input")[0]
|
25
|
+
return false if checkBox.checked != e["#{key}Key"]
|
26
|
+
true
|
27
|
+
|
28
|
+
inputSelected = ->
|
29
|
+
$(document.getSelection().focusNode).find('input, textarea').length > 0
|
30
|
+
|
31
|
+
processInput = (input) ->
|
32
|
+
if input.match(/^\d+$/)
|
33
|
+
link = linkTemplate.replace(/ID/, input)
|
34
|
+
logInByLink link
|
35
|
+
else
|
36
|
+
iamNotice "#{input} is invalid id." if input
|
37
|
+
|
38
|
+
logInByInput = ->
|
39
|
+
processInput input if inputMode
|
25
40
|
input = ''
|
26
41
|
|
27
42
|
$menu.on 'click', 'td', ->
|
28
43
|
$tr = $(@).parents 'tr'
|
29
44
|
link = $tr.attr 'href'
|
30
|
-
if link
|
31
|
-
log_in_by_link link
|
32
|
-
inputMode = false
|
33
|
-
input = ''
|
45
|
+
logInByLink link if link
|
34
46
|
|
35
|
-
$(document).on '
|
36
|
-
|
37
|
-
|
38
|
-
if $selectedInput.length == 0 && (e.keyCode == 96 || e.keyCode == 1105) # '`' || 'ё'
|
39
|
-
log_in_by_input()
|
47
|
+
$(document).on 'keydown', (e) ->
|
48
|
+
if !inputSelected() && isTilde(e.keyCode) && controlKeysMatch(e)
|
49
|
+
logInByInput()
|
40
50
|
|
41
51
|
inputMode = !inputMode
|
42
52
|
$menu.toggle()
|
43
53
|
else
|
44
|
-
input += String.fromCharCode e.keyCode
|
54
|
+
input += String.fromCharCode e.keyCode if 48 <= e.keyCode <= 57
|
55
|
+
|
56
|
+
$.each controlKeys, ->
|
57
|
+
$checkbox = $(".iam-#{@}-settings input")
|
58
|
+
cookieName = "iam-#{@}-checked"
|
59
|
+
|
60
|
+
$checkbox[0].checked = $.cookie(cookieName) == 'true'
|
61
|
+
|
62
|
+
$checkbox.on 'click', -> $.cookie cookieName, @.checked
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/*!
|
2
|
+
* jQuery Cookie Plugin v1.3
|
3
|
+
* https://github.com/carhartl/jquery-cookie
|
4
|
+
*
|
5
|
+
* Copyright 2011, Klaus Hartl
|
6
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
7
|
+
* http://www.opensource.org/licenses/mit-license.php
|
8
|
+
* http://www.opensource.org/licenses/GPL-2.0
|
9
|
+
*/
|
10
|
+
(function ($, document, undefined) {
|
11
|
+
|
12
|
+
var pluses = /\+/g;
|
13
|
+
|
14
|
+
function raw(s) {
|
15
|
+
return s;
|
16
|
+
}
|
17
|
+
|
18
|
+
function decoded(s) {
|
19
|
+
return decodeURIComponent(s.replace(pluses, ' '));
|
20
|
+
}
|
21
|
+
|
22
|
+
var config = $.cookie = function (key, value, options) {
|
23
|
+
|
24
|
+
// write
|
25
|
+
if (value !== undefined) {
|
26
|
+
options = $.extend({}, config.defaults, options);
|
27
|
+
|
28
|
+
if (value === null) {
|
29
|
+
options.expires = -1;
|
30
|
+
}
|
31
|
+
|
32
|
+
if (typeof options.expires === 'number') {
|
33
|
+
var days = options.expires, t = options.expires = new Date();
|
34
|
+
t.setDate(t.getDate() + days);
|
35
|
+
}
|
36
|
+
|
37
|
+
value = config.json ? JSON.stringify(value) : String(value);
|
38
|
+
|
39
|
+
return (document.cookie = [
|
40
|
+
encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
|
41
|
+
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
42
|
+
options.path ? '; path=' + options.path : '',
|
43
|
+
options.domain ? '; domain=' + options.domain : '',
|
44
|
+
options.secure ? '; secure' : ''
|
45
|
+
].join(''));
|
46
|
+
}
|
47
|
+
|
48
|
+
// read
|
49
|
+
var decode = config.raw ? raw : decoded;
|
50
|
+
var cookies = document.cookie.split('; ');
|
51
|
+
for (var i = 0, l = cookies.length; i < l; i++) {
|
52
|
+
var parts = cookies[i].split('=');
|
53
|
+
if (decode(parts.shift()) === key) {
|
54
|
+
var cookie = decode(parts.join('='));
|
55
|
+
return config.json ? JSON.parse(cookie) : cookie;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
return null;
|
60
|
+
};
|
61
|
+
|
62
|
+
config.defaults = {};
|
63
|
+
|
64
|
+
$.removeCookie = function (key, options) {
|
65
|
+
if ($.cookie(key) !== null) {
|
66
|
+
$.cookie(key, null, options);
|
67
|
+
return true;
|
68
|
+
}
|
69
|
+
return false;
|
70
|
+
};
|
71
|
+
|
72
|
+
})(jQuery, document);
|
@@ -15,12 +15,16 @@
|
|
15
15
|
margin: 0
|
16
16
|
padding: 2px
|
17
17
|
|
18
|
-
.role-name
|
18
|
+
.role-name, .iam-settings-header
|
19
19
|
cursor: default
|
20
20
|
padding: 5px
|
21
21
|
font-size: 120%
|
22
22
|
font-weight: bold
|
23
23
|
|
24
|
+
.iam-setting
|
25
|
+
text-align: left
|
26
|
+
padding-left: 10px
|
27
|
+
|
24
28
|
.iam-notice
|
25
29
|
position: fixed
|
26
30
|
left: 200px
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-12-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &15866760 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,63 +21,76 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: *15866760
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: sass
|
27
|
+
requirement: &15865720 !ruby/object:Gem::Requirement
|
25
28
|
none: false
|
26
29
|
requirements:
|
27
|
-
- -
|
30
|
+
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *15865720
|
30
36
|
- !ruby/object:Gem::Dependency
|
31
37
|
name: coffee-rails
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &15864540 !ruby/object:Gem::Requirement
|
33
39
|
none: false
|
34
40
|
requirements:
|
35
|
-
- -
|
41
|
+
- - ! '>='
|
36
42
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
43
|
+
version: '0'
|
38
44
|
type: :runtime
|
39
45
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 3.2.1
|
46
|
+
version_requirements: *15864540
|
46
47
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
48
|
+
name: jquery-rails
|
49
|
+
requirement: &15863720 !ruby/object:Gem::Requirement
|
49
50
|
none: false
|
50
51
|
requirements:
|
51
52
|
- - ! '>='
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: '0'
|
54
|
-
type: :
|
55
|
+
type: :development
|
55
56
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
+
version_requirements: *15863720
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: sass
|
60
|
+
requirement: &15863080 !ruby/object:Gem::Requirement
|
57
61
|
none: false
|
58
62
|
requirements:
|
59
63
|
- - ! '>='
|
60
64
|
- !ruby/object:Gem::Version
|
61
65
|
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *15863080
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
+
name: sqlite3
|
71
|
+
requirement: &15862420 !ruby/object:Gem::Requirement
|
65
72
|
none: false
|
66
73
|
requirements:
|
67
74
|
- - ! '>='
|
68
75
|
- !ruby/object:Gem::Version
|
69
76
|
version: '0'
|
70
|
-
type: :
|
77
|
+
type: :development
|
71
78
|
prerelease: false
|
72
|
-
version_requirements:
|
79
|
+
version_requirements: *15862420
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: devise
|
82
|
+
requirement: &15861720 !ruby/object:Gem::Requirement
|
73
83
|
none: false
|
74
84
|
requirements:
|
75
85
|
- - ! '>='
|
76
86
|
- !ruby/object:Gem::Version
|
77
87
|
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *15861720
|
78
91
|
- !ruby/object:Gem::Dependency
|
79
92
|
name: rails
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &15861080 !ruby/object:Gem::Requirement
|
81
94
|
none: false
|
82
95
|
requirements:
|
83
96
|
- - ~>
|
@@ -85,15 +98,10 @@ dependencies:
|
|
85
98
|
version: '3.1'
|
86
99
|
type: :development
|
87
100
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '3.1'
|
101
|
+
version_requirements: *15861080
|
94
102
|
- !ruby/object:Gem::Dependency
|
95
103
|
name: rspec-rails
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &15860400 !ruby/object:Gem::Requirement
|
97
105
|
none: false
|
98
106
|
requirements:
|
99
107
|
- - ~>
|
@@ -101,12 +109,7 @@ dependencies:
|
|
101
109
|
version: '2.10'
|
102
110
|
type: :development
|
103
111
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ~>
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '2.10'
|
112
|
+
version_requirements: *15860400
|
110
113
|
description: Simple account switcher for Rails that automatically retrieves a few
|
111
114
|
user accounts for each role and provides single-click login feature.
|
112
115
|
email: fut.wrk@gmail.com
|
@@ -122,7 +125,9 @@ files:
|
|
122
125
|
- app/views/iam/_account.html.erb
|
123
126
|
- app/views/iam/_account_attribute.html.erb
|
124
127
|
- app/views/iam/_account_group.html.erb
|
128
|
+
- app/views/iam/_key_setting.html.erb
|
125
129
|
- app/views/iam/_menu.html.erb
|
130
|
+
- app/views/iam/_settings.html.erb
|
126
131
|
- config/locales/iam.en.yml
|
127
132
|
- config/routes.rb
|
128
133
|
- iam.gemspec
|
@@ -181,6 +186,7 @@ files:
|
|
181
186
|
- spec/spec_helper.rb
|
182
187
|
- spec/support/database_cleaner.rb
|
183
188
|
- vendor/assets/javascripts/iam.js.coffee
|
189
|
+
- vendor/assets/javascripts/jquery.cookie.js
|
184
190
|
- vendor/assets/stylesheets/iam.css.sass
|
185
191
|
homepage: http://github.com/FUT/iam
|
186
192
|
licenses:
|
@@ -203,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
209
|
version: '0'
|
204
210
|
requirements: []
|
205
211
|
rubyforge_project: iam
|
206
|
-
rubygems_version: 1.8.
|
212
|
+
rubygems_version: 1.8.11
|
207
213
|
signing_key:
|
208
214
|
specification_version: 3
|
209
215
|
summary: Simple account switcher for Rails.
|