iam 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|