iam 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/app/controllers/iam_controller.rb +9 -0
- data/app/helpers/iam_helper.rb +17 -0
- data/app/views/iam/_account.html.erb +3 -0
- data/app/views/iam/_account_attribute.html.erb +5 -0
- data/app/views/iam/_account_group.html.erb +8 -0
- data/app/views/iam/_menu.html.erb +3 -0
- data/iam.gemspec +27 -0
- data/lib/iam/version.rb +1 -1
- data/spec/rails_app/.gitignore +15 -0
- data/spec/rails_app/.sass-cache/465c165ef21fa54af136b469241496dfb6e2a334/iam.css.sassc +0 -0
- data/spec/rails_app/.sass-cache/465c165ef21fa54af136b469241496dfb6e2a334/menu.css.sassc +0 -0
- data/spec/rails_app/app/mailers/.gitkeep +0 -0
- data/spec/rails_app/app/models/.gitkeep +0 -0
- data/spec/rails_app/lib/assets/.gitkeep +0 -0
- data/spec/rails_app/lib/tasks/.gitkeep +0 -0
- data/vendor/assets/javascripts/iam.js.coffee +38 -0
- data/vendor/assets/stylesheets/iam.css.sass +28 -0
- metadata +59 -41
data/.rspec
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
class IamController < ApplicationController
|
2
|
+
def log_in_as
|
3
|
+
account = Iam::Configuration.account_class.constantize.find(params[:id])
|
4
|
+
sign_in Iam::Configuration.account_class.downcase, account
|
5
|
+
|
6
|
+
account_attributes = account.attributes.slice(*Iam::Configuration.account_attributes).values.join(' ')
|
7
|
+
render json: { notice: "Successfully logged in as:\n#{account_attributes}" }
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module IamHelper
|
2
|
+
ROLE_CLASS = Iam::Configuration.role_class.constantize
|
3
|
+
ACCOUNT_CLASS = Iam::Configuration.account_class.constantize
|
4
|
+
|
5
|
+
def iam
|
6
|
+
@account_samples = account_samples
|
7
|
+
render 'iam/menu'
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def account_samples
|
12
|
+
ROLE_CLASS.all.inject({}) do |account_groups, role|
|
13
|
+
account_group = ACCOUNT_CLASS.where(ROLE_CLASS.to_s.foreign_key => role.id).limit(Iam::Configuration.accounts_for_each_role)
|
14
|
+
account_groups.merge role => account_group
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/iam.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path('../lib/iam/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'iam'
|
6
|
+
s.version = Iam::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.license = 'MIT'
|
9
|
+
s.author = 'Yury Kaliada'
|
10
|
+
s.email = 'fut.wrk@gmail.com'
|
11
|
+
s.description = 'Simple account switcher for Rails that automatically retrieves a few user accounts for each role and provides single-click login feature.'
|
12
|
+
s.homepage = 'http://github.com/FUT/iam'
|
13
|
+
s.summary = 'Simple account switcher for Rails.'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.require_path = 'lib'
|
17
|
+
|
18
|
+
s.add_dependency 'activesupport', '~> 3.1'
|
19
|
+
s.add_dependency 'coffee-rails', '~> 3.2.1'
|
20
|
+
s.add_dependency 'sass'
|
21
|
+
s.add_dependency 'devise'
|
22
|
+
|
23
|
+
s.add_development_dependency 'rails', '~> 3.1'
|
24
|
+
s.add_development_dependency 'rspec-rails', '~> 2.10'
|
25
|
+
|
26
|
+
s.rubyforge_project = s.name
|
27
|
+
end
|
data/lib/iam/version.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
+
|
7
|
+
# Ignore bundler config
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the default SQLite database.
|
11
|
+
/db/*.sqlite3
|
12
|
+
|
13
|
+
# Ignore all logfiles and tempfiles.
|
14
|
+
/log/*.log
|
15
|
+
/tmp
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
$ ->
|
2
|
+
$menu = $('#iam-menu')
|
3
|
+
linkTemplate = $menu.attr 'href'
|
4
|
+
inputMode = false
|
5
|
+
input = ''
|
6
|
+
|
7
|
+
iamNotice = (notice) ->
|
8
|
+
$notice = $("<div class='iam-notice'>#{notice}</div>")
|
9
|
+
$('body').append $notice
|
10
|
+
$notice.fadeIn(200).delay(1000).fadeOut 600
|
11
|
+
|
12
|
+
log_in_by_link = (link) ->
|
13
|
+
$.post link, (data) ->
|
14
|
+
$menu.hide()
|
15
|
+
iamNotice data.notice
|
16
|
+
|
17
|
+
log_in_by_input = ->
|
18
|
+
if inputMode
|
19
|
+
if input.match(/^\d+$/)
|
20
|
+
link = linkTemplate.replace(/ID/, input)
|
21
|
+
log_in_by_link link
|
22
|
+
else
|
23
|
+
iamNotice "#{input} is invalid id."
|
24
|
+
input = ''
|
25
|
+
|
26
|
+
$menu.on 'click', 'td', ->
|
27
|
+
$tr = $(@).parents 'tr'
|
28
|
+
link = $tr.attr 'href'
|
29
|
+
log_in_by_link link if link
|
30
|
+
|
31
|
+
$(document).on 'keypress', (e) ->
|
32
|
+
if e.keyCode == 96 || e.keyCode == 1105 # '`' || 'ё'
|
33
|
+
log_in_by_input()
|
34
|
+
|
35
|
+
inputMode = !inputMode
|
36
|
+
$menu.toggle()
|
37
|
+
else
|
38
|
+
input += String.fromCharCode e.keyCode
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#iam-menu
|
2
|
+
text-align: center
|
3
|
+
background: #d9ead3
|
4
|
+
border-spacing: 0
|
5
|
+
position: fixed
|
6
|
+
top: 0
|
7
|
+
left: 0
|
8
|
+
display: none
|
9
|
+
cursor: pointer
|
10
|
+
|
11
|
+
td
|
12
|
+
border: 1px solid #c9dac3
|
13
|
+
margin: 0
|
14
|
+
padding: 2px
|
15
|
+
|
16
|
+
.role-name
|
17
|
+
cursor: default
|
18
|
+
padding: 5px
|
19
|
+
font-size: 120%
|
20
|
+
font-weight: bold
|
21
|
+
|
22
|
+
.iam-notice
|
23
|
+
position: fixed
|
24
|
+
left: 200px
|
25
|
+
top: 0
|
26
|
+
background: #d9ead3
|
27
|
+
padding: 5px
|
28
|
+
display: none
|
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.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -114,58 +114,76 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
117
|
+
- .gitignore
|
118
|
+
- .rspec
|
119
|
+
- Gemfile
|
120
|
+
- README.md
|
121
|
+
- Rakefile
|
122
|
+
- app/controllers/iam_controller.rb
|
123
|
+
- app/helpers/iam_helper.rb
|
124
|
+
- app/views/iam/_account.html.erb
|
125
|
+
- app/views/iam/_account_attribute.html.erb
|
126
|
+
- app/views/iam/_account_group.html.erb
|
127
|
+
- app/views/iam/_menu.html.erb
|
128
|
+
- config/routes.rb
|
129
|
+
- iam.gemspec
|
121
130
|
- lib/generators/iam/initializer_generator.rb
|
122
131
|
- lib/generators/templates/iam.rb
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
- spec/rails_app
|
128
|
-
- spec/rails_app/
|
129
|
-
- spec/rails_app/
|
130
|
-
- spec/rails_app/
|
131
|
-
- spec/rails_app/config/initializers/session_store.rb
|
132
|
-
- spec/rails_app/config/initializers/wrap_parameters.rb
|
133
|
-
- spec/rails_app/config/initializers/backtrace_silencers.rb
|
134
|
-
- spec/rails_app/config/initializers/secret_token.rb
|
135
|
-
- spec/rails_app/config/initializers/devise.rb
|
136
|
-
- spec/rails_app/config/environments/development.rb
|
137
|
-
- spec/rails_app/config/environments/production.rb
|
138
|
-
- spec/rails_app/config/environments/test.rb
|
139
|
-
- spec/rails_app/config/application.rb
|
140
|
-
- spec/rails_app/config/environment.rb
|
141
|
-
- spec/rails_app/config/locales/en.yml
|
142
|
-
- spec/rails_app/config/locales/devise.en.yml
|
143
|
-
- spec/rails_app/config/database.yml
|
144
|
-
- spec/rails_app/config/routes.rb
|
145
|
-
- spec/rails_app/config/boot.rb
|
132
|
+
- lib/iam.rb
|
133
|
+
- lib/iam/configuration.rb
|
134
|
+
- lib/iam/engine.rb
|
135
|
+
- lib/iam/version.rb
|
136
|
+
- spec/rails_app/.gitignore
|
137
|
+
- spec/rails_app/.sass-cache/465c165ef21fa54af136b469241496dfb6e2a334/iam.css.sassc
|
138
|
+
- spec/rails_app/.sass-cache/465c165ef21fa54af136b469241496dfb6e2a334/menu.css.sassc
|
139
|
+
- spec/rails_app/Rakefile
|
146
140
|
- spec/rails_app/app/assets/images/rails.png
|
147
141
|
- spec/rails_app/app/assets/javascripts/application.js
|
148
142
|
- spec/rails_app/app/assets/stylesheets/application.css
|
149
|
-
- spec/rails_app/app/views/layouts/application.html.erb
|
150
|
-
- spec/rails_app/app/views/pages/index.html.erb
|
151
|
-
- spec/rails_app/app/models/user.rb
|
152
|
-
- spec/rails_app/app/models/role.rb
|
153
|
-
- spec/rails_app/app/controllers/pages_controller.rb
|
154
143
|
- spec/rails_app/app/controllers/application_controller.rb
|
144
|
+
- spec/rails_app/app/controllers/pages_controller.rb
|
155
145
|
- spec/rails_app/app/helpers/application_helper.rb
|
156
|
-
- spec/rails_app/
|
146
|
+
- spec/rails_app/app/mailers/.gitkeep
|
147
|
+
- spec/rails_app/app/models/.gitkeep
|
148
|
+
- spec/rails_app/app/models/role.rb
|
149
|
+
- spec/rails_app/app/models/user.rb
|
150
|
+
- spec/rails_app/app/views/layouts/application.html.erb
|
151
|
+
- spec/rails_app/app/views/pages/index.html.erb
|
157
152
|
- spec/rails_app/config.ru
|
158
|
-
- spec/rails_app/
|
159
|
-
- spec/rails_app/
|
160
|
-
- spec/rails_app/
|
153
|
+
- spec/rails_app/config/application.rb
|
154
|
+
- spec/rails_app/config/boot.rb
|
155
|
+
- spec/rails_app/config/database.yml
|
156
|
+
- spec/rails_app/config/environment.rb
|
157
|
+
- spec/rails_app/config/environments/development.rb
|
158
|
+
- spec/rails_app/config/environments/production.rb
|
159
|
+
- spec/rails_app/config/environments/test.rb
|
160
|
+
- spec/rails_app/config/initializers/backtrace_silencers.rb
|
161
|
+
- spec/rails_app/config/initializers/devise.rb
|
162
|
+
- spec/rails_app/config/initializers/inflections.rb
|
163
|
+
- spec/rails_app/config/initializers/mime_types.rb
|
164
|
+
- spec/rails_app/config/initializers/secret_token.rb
|
165
|
+
- spec/rails_app/config/initializers/session_store.rb
|
166
|
+
- spec/rails_app/config/initializers/wrap_parameters.rb
|
167
|
+
- spec/rails_app/config/locales/devise.en.yml
|
168
|
+
- spec/rails_app/config/locales/en.yml
|
169
|
+
- spec/rails_app/config/routes.rb
|
170
|
+
- spec/rails_app/db/migrate/20121202072519_create_role.rb
|
171
|
+
- spec/rails_app/db/migrate/20121202072527_create_user.rb
|
172
|
+
- spec/rails_app/db/migrate/20121202131821_add_devise_to_users.rb
|
173
|
+
- spec/rails_app/db/schema.rb
|
174
|
+
- spec/rails_app/db/seeds.rb
|
175
|
+
- spec/rails_app/lib/assets/.gitkeep
|
176
|
+
- spec/rails_app/lib/tasks/.gitkeep
|
161
177
|
- spec/rails_app/public/404.html
|
162
|
-
- spec/rails_app/public/
|
178
|
+
- spec/rails_app/public/422.html
|
163
179
|
- spec/rails_app/public/500.html
|
180
|
+
- spec/rails_app/public/favicon.ico
|
181
|
+
- spec/rails_app/public/robots.txt
|
182
|
+
- spec/rails_app/script/rails
|
164
183
|
- spec/spec_helper.rb
|
165
184
|
- spec/support/database_cleaner.rb
|
166
|
-
-
|
167
|
-
-
|
168
|
-
- Rakefile
|
185
|
+
- vendor/assets/javascripts/iam.js.coffee
|
186
|
+
- vendor/assets/stylesheets/iam.css.sass
|
169
187
|
homepage: http://github.com/FUT/iam
|
170
188
|
licenses:
|
171
189
|
- MIT
|