iam 0.1.4 → 0.1.5
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 +10 -4
- data/Rakefile +20 -0
- data/app/controllers/iam_controller.rb +19 -0
- data/app/views/iam/{_menu.html.erb → menu.html.erb} +1 -1
- data/config/routes.rb +2 -1
- data/iam.gemspec +4 -3
- data/lib/iam.rb +3 -3
- data/lib/iam/version.rb +1 -1
- data/lib/rack/asset_helpers.rb +28 -0
- data/lib/rack/assets.rb +35 -0
- data/lib/rack/assets_middleware.rb +5 -0
- data/lib/rack/railtie.rb +7 -0
- data/spec/rails_app/app/views/layouts/application.html.erb +0 -1
- data/vendor/assets/javascripts/{iam.js.coffee → iam.coffee} +30 -18
- data/vendor/assets/javascripts/iam.js +101 -0
- data/vendor/assets/stylesheets/.sass-cache/99c7326b15538dc9b4651af91a5f076fe779d5ec/iam.css.sassc +0 -0
- data/vendor/assets/stylesheets/iam.css +34 -0
- data/vendor/assets/stylesheets/iam.css.sass +3 -1
- metadata +96 -29
- data/lib/helpers/iam_helper.rb +0 -21
data/README.md
CHANGED
@@ -31,15 +31,21 @@ Also you may log in using user_id (e.g. 42):
|
|
31
31
|
Add gem to your gemfile:
|
32
32
|
|
33
33
|
```ruby
|
34
|
-
gem 'iam', '~> 0.1.
|
34
|
+
gem 'iam', '~> 0.1.5'
|
35
35
|
```
|
36
|
+
##Configuration
|
36
37
|
|
37
|
-
|
38
|
+
Generate configuration file:
|
38
39
|
|
39
|
-
```
|
40
|
-
|
40
|
+
```bash
|
41
|
+
rails g iam:initializer
|
41
42
|
```
|
42
43
|
|
44
|
+
All major configuration params available are described there.
|
45
|
+
|
46
|
+
Also each developer can configure control keys (alt ctrl shift) to make up iam-menu show/hide combination.
|
47
|
+
These configurations are saved into cookies and you may forget these settings after first customization.
|
48
|
+
|
43
49
|
##License
|
44
50
|
|
45
51
|
MIT
|
data/Rakefile
CHANGED
@@ -11,3 +11,23 @@ Rake::TestTask.new(:test) do |t|
|
|
11
11
|
t.pattern = 'spec/**/*_test.rb'
|
12
12
|
t.verbose = true
|
13
13
|
end
|
14
|
+
|
15
|
+
desc 'Precompile vendor assets'
|
16
|
+
task :precompile do |t|
|
17
|
+
precompile_sass
|
18
|
+
precompile_coffee
|
19
|
+
end
|
20
|
+
|
21
|
+
def precompile_sass
|
22
|
+
Dir[File.join('**', '*.sass')].each do |file|
|
23
|
+
system "sass #{file} > #{file.gsub('.sass', '')}"
|
24
|
+
p "File #{file} precompiled"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def precompile_coffee
|
29
|
+
Dir[File.join('**', '*.coffee')].each do |file|
|
30
|
+
system "coffee -c #{file}"
|
31
|
+
p "File #{file} precompiled"
|
32
|
+
end
|
33
|
+
end
|
@@ -1,9 +1,28 @@
|
|
1
1
|
class IamController < ApplicationController
|
2
|
+
layout false
|
3
|
+
|
4
|
+
def menu
|
5
|
+
@account_samples = account_samples
|
6
|
+
end
|
7
|
+
|
2
8
|
def log_in_as
|
9
|
+
return if Rails.env == 'production'
|
10
|
+
|
3
11
|
account = Iam::Configuration.account_class.constantize.find(params[:id])
|
4
12
|
sign_in Iam::Configuration.account_class.downcase, account
|
5
13
|
|
6
14
|
name = Iam::Configuration.account_attributes.map{ |key| account.public_send(key)}.join(' ')
|
7
15
|
render json: { notice: I18n.t('iam.success', name: name) }
|
8
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def account_samples
|
20
|
+
role_class = Iam::Configuration.role_class.constantize
|
21
|
+
account_class = Iam::Configuration.account_class.constantize
|
22
|
+
|
23
|
+
role_class.all.inject({}) do |account_groups, role|
|
24
|
+
account_group = account_class.where(role_class.to_s.foreign_key => role.id).order(:id).limit(Iam::Configuration.accounts_for_each_role)
|
25
|
+
account_groups.merge role => account_group
|
26
|
+
end
|
27
|
+
end
|
9
28
|
end
|
data/config/routes.rb
CHANGED
data/iam.gemspec
CHANGED
@@ -16,11 +16,12 @@ 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 '
|
20
|
-
s.add_dependency 'coffee-rails'
|
19
|
+
s.add_dependency 'rack'
|
21
20
|
|
22
|
-
s.add_development_dependency '
|
21
|
+
s.add_development_dependency 'pry'
|
23
22
|
s.add_development_dependency 'sass'
|
23
|
+
s.add_development_dependency 'coffee-rails'
|
24
|
+
s.add_development_dependency 'jquery-rails'
|
24
25
|
s.add_development_dependency 'sqlite3'
|
25
26
|
s.add_development_dependency 'devise'
|
26
27
|
s.add_development_dependency 'rails', '~> 3.1'
|
data/lib/iam.rb
CHANGED
data/lib/iam/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Rack
|
2
|
+
module AssetHelpers
|
3
|
+
def html_code
|
4
|
+
css_code << js_code
|
5
|
+
end
|
6
|
+
|
7
|
+
private
|
8
|
+
def css_code
|
9
|
+
'<style type="text/css">' << typed_asset('stylesheets', 'iam.css') << '</style>'
|
10
|
+
end
|
11
|
+
|
12
|
+
def js_code
|
13
|
+
'<script type="text/javascript">' << typed_asset('javascripts', 'iam.js', 'jquery.cookie.js') << '</script>'
|
14
|
+
end
|
15
|
+
|
16
|
+
def typed_asset(type, *files)
|
17
|
+
files.map { |f| asset type, f }.reduce :<<
|
18
|
+
end
|
19
|
+
|
20
|
+
def asset(type, file)
|
21
|
+
@assets ||= {}
|
22
|
+
output = ::File.open(::File.join(::File.dirname(__FILE__), '..', '..', 'vendor', 'assets', type, file), 'r:UTF-8') do |f|
|
23
|
+
f.read
|
24
|
+
end
|
25
|
+
@assets[file] ||= output
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/rack/assets.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
module Rack
|
2
|
+
class Assets
|
3
|
+
include AssetHelpers
|
4
|
+
|
5
|
+
def initialize(app)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
status, headers, response = @app.call(env)
|
11
|
+
return [status, headers, response] unless check_html?(headers, response) && status == 200
|
12
|
+
|
13
|
+
if response.respond_to?(:body)
|
14
|
+
response_body = response.body
|
15
|
+
else
|
16
|
+
response_body = response.first
|
17
|
+
end
|
18
|
+
|
19
|
+
# Inject the html, css and js code to the view
|
20
|
+
response_body.gsub!('</body>', "#{html_code}</body>")
|
21
|
+
|
22
|
+
headers['Content-Length'] = response_body.bytesize.to_s
|
23
|
+
|
24
|
+
[status, headers, [response_body]]
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def check_html?(headers, response)
|
29
|
+
body = response.respond_to?(:body) ? response.body : response.first
|
30
|
+
headers['Content-Type'] and
|
31
|
+
headers['Content-Type'].include? 'text/html' and
|
32
|
+
body =~ %r{<html.*</html>}m
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/rack/railtie.rb
ADDED
@@ -1,10 +1,28 @@
|
|
1
1
|
$ ->
|
2
2
|
$menu = $('#iam-menu')
|
3
|
-
|
3
|
+
templateLink = '/iam/log_in_as/:id'
|
4
|
+
menuLink = '/iam/menu'
|
4
5
|
inputMode = false # account id is anticipated to be typed
|
5
6
|
input = '' # typed string
|
6
7
|
controlKeys = ['alt', 'ctrl', 'shift']
|
7
8
|
|
9
|
+
initialize = ->
|
10
|
+
$('.iam-settings-header').on 'click', ->
|
11
|
+
$('.iam-settings').toggle()
|
12
|
+
|
13
|
+
$('#iam-menu').on 'click', 'td', ->
|
14
|
+
$tr = $(@).parents 'tr'
|
15
|
+
link = $tr.attr 'href'
|
16
|
+
logInByLink link if link
|
17
|
+
|
18
|
+
$.each controlKeys, ->
|
19
|
+
$checkbox = $(".iam-#{@}-settings input")
|
20
|
+
cookieName = "iam-#{@}-checked"
|
21
|
+
|
22
|
+
$checkbox[0].checked = $.cookie(cookieName) == 'true'
|
23
|
+
|
24
|
+
$checkbox.on 'click', -> $.cookie cookieName, @.checked
|
25
|
+
|
8
26
|
iamNotice = (notice) ->
|
9
27
|
$notice = $("<div class='iam-notice'>#{notice}</div>")
|
10
28
|
$('body').append $notice
|
@@ -21,8 +39,8 @@ $ ->
|
|
21
39
|
|
22
40
|
controlKeysMatch = (e) ->
|
23
41
|
for key in controlKeys
|
24
|
-
|
25
|
-
return false if
|
42
|
+
keyOn = $.cookie("iam-#{key}-checked") == 'true'
|
43
|
+
return false if keyOn != e["#{key}Key"]
|
26
44
|
true
|
27
45
|
|
28
46
|
inputSelected = ->
|
@@ -30,19 +48,21 @@ $ ->
|
|
30
48
|
|
31
49
|
processInput = (input) ->
|
32
50
|
if input.match(/^\d+$/)
|
33
|
-
link =
|
51
|
+
link = templateLink.replace(/:id/, input)
|
34
52
|
logInByLink link
|
35
53
|
else
|
36
54
|
iamNotice "#{input} is invalid id." if input
|
37
55
|
|
38
56
|
logInByInput = ->
|
39
|
-
|
40
|
-
|
57
|
+
if inputMode
|
58
|
+
processInput input
|
59
|
+
$('#iam-menu').remove()
|
60
|
+
else
|
61
|
+
$.get menuLink, (menu) ->
|
62
|
+
$('body').append menu
|
63
|
+
initialize()
|
41
64
|
|
42
|
-
|
43
|
-
$tr = $(@).parents 'tr'
|
44
|
-
link = $tr.attr 'href'
|
45
|
-
logInByLink link if link
|
65
|
+
input = ''
|
46
66
|
|
47
67
|
$(document).on 'keydown', (e) ->
|
48
68
|
if !inputSelected() && isTilde(e.keyCode) && controlKeysMatch(e)
|
@@ -52,11 +72,3 @@ $ ->
|
|
52
72
|
$menu.toggle()
|
53
73
|
else
|
54
74
|
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,101 @@
|
|
1
|
+
// Generated by CoffeeScript 1.3.3
|
2
|
+
(function() {
|
3
|
+
|
4
|
+
$(function() {
|
5
|
+
var $menu, controlKeys, controlKeysMatch, iamNotice, initialize, input, inputMode, inputSelected, isTilde, logInByInput, logInByLink, menuLink, processInput, templateLink;
|
6
|
+
$menu = $('#iam-menu');
|
7
|
+
templateLink = '/iam/log_in_as/:id';
|
8
|
+
menuLink = '/iam/menu';
|
9
|
+
inputMode = false;
|
10
|
+
input = '';
|
11
|
+
controlKeys = ['alt', 'ctrl', 'shift'];
|
12
|
+
initialize = function() {
|
13
|
+
$('.iam-settings-header').on('click', function() {
|
14
|
+
return $('.iam-settings').toggle();
|
15
|
+
});
|
16
|
+
$('#iam-menu').on('click', 'td', function() {
|
17
|
+
var $tr, link;
|
18
|
+
$tr = $(this).parents('tr');
|
19
|
+
link = $tr.attr('href');
|
20
|
+
if (link) {
|
21
|
+
return logInByLink(link);
|
22
|
+
}
|
23
|
+
});
|
24
|
+
return $.each(controlKeys, function() {
|
25
|
+
var $checkbox, cookieName;
|
26
|
+
$checkbox = $(".iam-" + this + "-settings input");
|
27
|
+
cookieName = "iam-" + this + "-checked";
|
28
|
+
$checkbox[0].checked = $.cookie(cookieName) === 'true';
|
29
|
+
return $checkbox.on('click', function() {
|
30
|
+
return $.cookie(cookieName, this.checked);
|
31
|
+
});
|
32
|
+
});
|
33
|
+
};
|
34
|
+
iamNotice = function(notice) {
|
35
|
+
var $notice;
|
36
|
+
$notice = $("<div class='iam-notice'>" + notice + "</div>");
|
37
|
+
$('body').append($notice);
|
38
|
+
return $notice.fadeIn(200).delay(1000).fadeOut(600);
|
39
|
+
};
|
40
|
+
logInByLink = function(link) {
|
41
|
+
return $.post(link, function(data) {
|
42
|
+
$menu.hide();
|
43
|
+
window.location.reload();
|
44
|
+
return iamNotice(data.notice);
|
45
|
+
});
|
46
|
+
};
|
47
|
+
isTilde = function(code) {
|
48
|
+
return String.fromCharCode(code) === 'À';
|
49
|
+
};
|
50
|
+
controlKeysMatch = function(e) {
|
51
|
+
var key, keyOn, _i, _len;
|
52
|
+
for (_i = 0, _len = controlKeys.length; _i < _len; _i++) {
|
53
|
+
key = controlKeys[_i];
|
54
|
+
keyOn = $.cookie("iam-" + key + "-checked") === 'true';
|
55
|
+
if (keyOn !== e["" + key + "Key"]) {
|
56
|
+
return false;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
return true;
|
60
|
+
};
|
61
|
+
inputSelected = function() {
|
62
|
+
return $(document.getSelection().focusNode).find('input, textarea').length > 0;
|
63
|
+
};
|
64
|
+
processInput = function(input) {
|
65
|
+
var link;
|
66
|
+
if (input.match(/^\d+$/)) {
|
67
|
+
link = templateLink.replace(/:id/, input);
|
68
|
+
return logInByLink(link);
|
69
|
+
} else {
|
70
|
+
if (input) {
|
71
|
+
return iamNotice("" + input + " is invalid id.");
|
72
|
+
}
|
73
|
+
}
|
74
|
+
};
|
75
|
+
logInByInput = function() {
|
76
|
+
if (inputMode) {
|
77
|
+
processInput(input);
|
78
|
+
$('#iam-menu').remove();
|
79
|
+
} else {
|
80
|
+
$.get(menuLink, function(menu) {
|
81
|
+
$('body').append(menu);
|
82
|
+
return initialize();
|
83
|
+
});
|
84
|
+
}
|
85
|
+
return input = '';
|
86
|
+
};
|
87
|
+
return $(document).on('keydown', function(e) {
|
88
|
+
var _ref;
|
89
|
+
if (!inputSelected() && isTilde(e.keyCode) && controlKeysMatch(e)) {
|
90
|
+
logInByInput();
|
91
|
+
inputMode = !inputMode;
|
92
|
+
return $menu.toggle();
|
93
|
+
} else {
|
94
|
+
if ((48 <= (_ref = e.keyCode) && _ref <= 57)) {
|
95
|
+
return input += String.fromCharCode(e.keyCode);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
});
|
99
|
+
});
|
100
|
+
|
101
|
+
}).call(this);
|
data/vendor/assets/stylesheets/.sass-cache/99c7326b15538dc9b4651af91a5f076fe779d5ec/iam.css.sassc
ADDED
Binary file
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#iam-menu {
|
2
|
+
text-align: center;
|
3
|
+
background: #d9ead3;
|
4
|
+
border-spacing: 0;
|
5
|
+
position: fixed;
|
6
|
+
top: 0;
|
7
|
+
left: 0;
|
8
|
+
cursor: pointer;
|
9
|
+
width: 250px;
|
10
|
+
z-index: 1000; }
|
11
|
+
#iam-menu td {
|
12
|
+
border: 1px solid #c9dac3;
|
13
|
+
margin: 0;
|
14
|
+
padding: 2px; }
|
15
|
+
#iam-menu .role-name, #iam-menu .iam-settings-header {
|
16
|
+
cursor: default;
|
17
|
+
padding: 5px;
|
18
|
+
font-size: 120%;
|
19
|
+
font-weight: bold; }
|
20
|
+
#iam-menu .iam-setting {
|
21
|
+
text-align: left;
|
22
|
+
padding-left: 10px; }
|
23
|
+
#iam-menu .iam-settings {
|
24
|
+
display: none; }
|
25
|
+
|
26
|
+
.iam-notice {
|
27
|
+
position: fixed;
|
28
|
+
left: 200px;
|
29
|
+
top: 0;
|
30
|
+
background: #d9ead3;
|
31
|
+
padding: 5px;
|
32
|
+
display: none;
|
33
|
+
width: 300px;
|
34
|
+
z-index: 1000; }
|
@@ -5,7 +5,6 @@
|
|
5
5
|
position: fixed
|
6
6
|
top: 0
|
7
7
|
left: 0
|
8
|
-
display: none
|
9
8
|
cursor: pointer
|
10
9
|
width: 250px
|
11
10
|
z-index: 1000
|
@@ -25,6 +24,9 @@
|
|
25
24
|
text-align: left
|
26
25
|
padding-left: 10px
|
27
26
|
|
27
|
+
.iam-settings
|
28
|
+
display: none
|
29
|
+
|
28
30
|
.iam-notice
|
29
31
|
position: fixed
|
30
32
|
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.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.1'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement:
|
31
|
+
name: rack
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,21 +37,31 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
47
|
+
name: pry
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: '0'
|
44
|
-
type: :
|
54
|
+
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement:
|
63
|
+
name: sass
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement:
|
79
|
+
name: coffee-rails
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,31 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: jquery-rails
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
69
110
|
- !ruby/object:Gem::Dependency
|
70
111
|
name: sqlite3
|
71
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
72
113
|
none: false
|
73
114
|
requirements:
|
74
115
|
- - ! '>='
|
@@ -76,10 +117,15 @@ dependencies:
|
|
76
117
|
version: '0'
|
77
118
|
type: :development
|
78
119
|
prerelease: false
|
79
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
80
126
|
- !ruby/object:Gem::Dependency
|
81
127
|
name: devise
|
82
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
83
129
|
none: false
|
84
130
|
requirements:
|
85
131
|
- - ! '>='
|
@@ -87,10 +133,15 @@ dependencies:
|
|
87
133
|
version: '0'
|
88
134
|
type: :development
|
89
135
|
prerelease: false
|
90
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
91
142
|
- !ruby/object:Gem::Dependency
|
92
143
|
name: rails
|
93
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
94
145
|
none: false
|
95
146
|
requirements:
|
96
147
|
- - ~>
|
@@ -98,10 +149,15 @@ dependencies:
|
|
98
149
|
version: '3.1'
|
99
150
|
type: :development
|
100
151
|
prerelease: false
|
101
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '3.1'
|
102
158
|
- !ruby/object:Gem::Dependency
|
103
159
|
name: rspec-rails
|
104
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
105
161
|
none: false
|
106
162
|
requirements:
|
107
163
|
- - ~>
|
@@ -109,7 +165,12 @@ dependencies:
|
|
109
165
|
version: '2.10'
|
110
166
|
type: :development
|
111
167
|
prerelease: false
|
112
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '2.10'
|
113
174
|
description: Simple account switcher for Rails that automatically retrieves a few
|
114
175
|
user accounts for each role and provides single-click login feature.
|
115
176
|
email: fut.wrk@gmail.com
|
@@ -126,18 +187,21 @@ files:
|
|
126
187
|
- app/views/iam/_account_attribute.html.erb
|
127
188
|
- app/views/iam/_account_group.html.erb
|
128
189
|
- app/views/iam/_key_setting.html.erb
|
129
|
-
- app/views/iam/_menu.html.erb
|
130
190
|
- app/views/iam/_settings.html.erb
|
191
|
+
- app/views/iam/menu.html.erb
|
131
192
|
- config/locales/iam.en.yml
|
132
193
|
- config/routes.rb
|
133
194
|
- iam.gemspec
|
134
195
|
- lib/generators/iam/initializer_generator.rb
|
135
196
|
- lib/generators/templates/iam.rb
|
136
|
-
- lib/helpers/iam_helper.rb
|
137
197
|
- lib/iam.rb
|
138
198
|
- lib/iam/configuration.rb
|
139
199
|
- lib/iam/engine.rb
|
140
200
|
- lib/iam/version.rb
|
201
|
+
- lib/rack/asset_helpers.rb
|
202
|
+
- lib/rack/assets.rb
|
203
|
+
- lib/rack/assets_middleware.rb
|
204
|
+
- lib/rack/railtie.rb
|
141
205
|
- spec/rails_app/.gitignore
|
142
206
|
- spec/rails_app/Rakefile
|
143
207
|
- spec/rails_app/app/assets/images/rails.png
|
@@ -185,8 +249,11 @@ files:
|
|
185
249
|
- spec/rails_app/script/rails
|
186
250
|
- spec/spec_helper.rb
|
187
251
|
- spec/support/database_cleaner.rb
|
188
|
-
- vendor/assets/javascripts/iam.
|
252
|
+
- vendor/assets/javascripts/iam.coffee
|
253
|
+
- vendor/assets/javascripts/iam.js
|
189
254
|
- vendor/assets/javascripts/jquery.cookie.js
|
255
|
+
- vendor/assets/stylesheets/.sass-cache/99c7326b15538dc9b4651af91a5f076fe779d5ec/iam.css.sassc
|
256
|
+
- vendor/assets/stylesheets/iam.css
|
190
257
|
- vendor/assets/stylesheets/iam.css.sass
|
191
258
|
homepage: http://github.com/FUT/iam
|
192
259
|
licenses:
|
@@ -209,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
276
|
version: '0'
|
210
277
|
requirements: []
|
211
278
|
rubyforge_project: iam
|
212
|
-
rubygems_version: 1.8.
|
279
|
+
rubygems_version: 1.8.24
|
213
280
|
signing_key:
|
214
281
|
specification_version: 3
|
215
282
|
summary: Simple account switcher for Rails.
|
data/lib/helpers/iam_helper.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module IamHelper
|
2
|
-
def include_iam
|
3
|
-
return if Rails.env == 'production'
|
4
|
-
|
5
|
-
@account_samples = account_samples
|
6
|
-
stylesheet_link_tag('iam') +
|
7
|
-
javascript_include_tag('iam', 'jquery.cookie') +
|
8
|
-
render('iam/menu')
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
def account_samples
|
13
|
-
role_class = Iam::Configuration.role_class.constantize
|
14
|
-
account_class = Iam::Configuration.account_class.constantize
|
15
|
-
|
16
|
-
role_class.all.inject({}) do |account_groups, role|
|
17
|
-
account_group = account_class.where(role_class.to_s.foreign_key => role.id).order(:id).limit(Iam::Configuration.accounts_for_each_role)
|
18
|
-
account_groups.merge role => account_group
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|