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 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.4'
34
+ gem 'iam', '~> 0.1.5'
35
35
  ```
36
+ ##Configuration
36
37
 
37
- Add helper to your application layout (after `jQuery`):
38
+ Generate configuration file:
38
39
 
39
- ```ruby
40
- <%= include_iam %>
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
@@ -1,4 +1,4 @@
1
- <table id='iam-menu' href='<%= log_in_as_path(id: 'ID') %>'>
1
+ <table id='iam-menu'>
2
2
  <%= render partial: 'iam/account_group', collection: @account_samples.to_a %>
3
3
  <%= render partial: 'iam/settings' %>
4
4
  </table>
data/config/routes.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  Rails.application.routes.draw do
2
- post '/iam_you/:id', controller: :iam, action: :log_in_as, as: :log_in_as
2
+ post 'iam/log_in_as/:id' => 'iam#log_in_as', as: :log_in_as
3
+ get 'iam/menu' => 'iam#menu', as: :iam_menu
3
4
  end
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 'sass'
20
- s.add_dependency 'coffee-rails'
19
+ s.add_dependency 'rack'
21
20
 
22
- s.add_development_dependency 'jquery-rails'
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
@@ -1,6 +1,6 @@
1
+ require 'rack'
2
+
1
3
  require 'iam/configuration'
2
4
  require 'iam/engine'
3
5
  require 'iam/version'
4
- require 'helpers/iam_helper'
5
-
6
- ActionView::Base.send :include, IamHelper
6
+ require 'rack/assets_middleware'
data/lib/iam/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Iam
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.5'
3
3
  end
@@ -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
@@ -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
@@ -0,0 +1,5 @@
1
+ # encoding: utf-8
2
+ require 'rack/asset_helpers'
3
+ require 'rack/assets'
4
+
5
+ require 'rack/railtie' if defined?(Rails::Railtie)
@@ -0,0 +1,7 @@
1
+ module Rack
2
+ class Railtie < ::Rails::Railtie
3
+ initializer 'iam-assets.add_middleware' do |app|
4
+ app.middleware.use Rack::Assets unless Rails.env.production?
5
+ end
6
+ end
7
+ end
@@ -5,7 +5,6 @@
5
5
  <%= stylesheet_link_tag "application", :media => "all" %>
6
6
  <%= javascript_include_tag "application" %>
7
7
  <%= csrf_meta_tags %>
8
- <%= include_iam %>
9
8
  </head>
10
9
  <body>
11
10
 
@@ -1,10 +1,28 @@
1
1
  $ ->
2
2
  $menu = $('#iam-menu')
3
- linkTemplate = $menu.attr 'href'
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
- checkBox = $(".iam-#{key}-settings input")[0]
25
- return false if checkBox.checked != e["#{key}Key"]
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 = linkTemplate.replace(/ID/, input)
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
- processInput input if inputMode
40
- input = ''
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
- $menu.on 'click', 'td', ->
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);
@@ -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
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-03 00:00:00.000000000 Z
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: &15866760 !ruby/object:Gem::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: *15866760
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: sass
27
- requirement: &15865720 !ruby/object:Gem::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: *15865720
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: coffee-rails
38
- requirement: &15864540 !ruby/object:Gem::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: :runtime
54
+ type: :development
45
55
  prerelease: false
46
- version_requirements: *15864540
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: jquery-rails
49
- requirement: &15863720 !ruby/object:Gem::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: *15863720
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: sass
60
- requirement: &15863080 !ruby/object:Gem::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: *15863080
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: &15862420 !ruby/object:Gem::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: *15862420
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: &15861720 !ruby/object:Gem::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: *15861720
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: &15861080 !ruby/object:Gem::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: *15861080
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: &15860400 !ruby/object:Gem::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: *15860400
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.js.coffee
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.11
279
+ rubygems_version: 1.8.24
213
280
  signing_key:
214
281
  specification_version: 3
215
282
  summary: Simple account switcher for Rails.
@@ -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