kadmin 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +44 -44
  3. data/Rakefile +146 -146
  4. data/app/assets/javascripts/modular/app.js +1388 -1388
  5. data/app/assets/javascripts/modular/application.js +3 -3
  6. data/app/assets/javascripts/modular/vendor.js +57671 -57671
  7. data/app/assets/stylesheets/kadmin/typeahead-select.scss +2 -0
  8. data/app/assets/stylesheets/modular/app-blue.css +2795 -2795
  9. data/app/assets/stylesheets/modular/app-custom.css +2795 -2795
  10. data/app/assets/stylesheets/modular/app-green.css +2795 -2795
  11. data/app/assets/stylesheets/modular/app-orange.css +2795 -2795
  12. data/app/assets/stylesheets/modular/app-purple.css +2795 -2795
  13. data/app/assets/stylesheets/modular/app-red.css +2795 -2795
  14. data/app/assets/stylesheets/modular/app-seagreen.css +2795 -2795
  15. data/app/assets/stylesheets/modular/app.css +2795 -2795
  16. data/app/assets/stylesheets/modular/custom.css +51 -19
  17. data/app/assets/stylesheets/modular/vendor.css +12999 -12999
  18. data/app/controllers/kadmin/application_controller.rb +64 -64
  19. data/app/controllers/kadmin/auth_controller.rb +98 -98
  20. data/app/controllers/kadmin/concerns/authorized_user.rb +67 -67
  21. data/app/controllers/kadmin/dash_controller.rb +19 -19
  22. data/app/decorators/kadmin/finder_decorator.rb +50 -50
  23. data/app/decorators/kadmin/pager_decorator.rb +33 -33
  24. data/app/helpers/kadmin/alert_helper.rb +59 -59
  25. data/app/helpers/kadmin/application_helper.rb +4 -4
  26. data/app/helpers/kadmin/bootstrap_helper.rb +23 -23
  27. data/app/helpers/kadmin/form_builder.rb +9 -9
  28. data/app/helpers/kadmin/forms/inverted_check_box.rb +10 -10
  29. data/app/helpers/kadmin/navigation_helper.rb +28 -28
  30. data/app/helpers/kadmin/pagination_helper.rb +95 -95
  31. data/app/views/kadmin/auth/login.html.erb +4 -4
  32. data/app/views/kadmin/components/_finder.html.erb +14 -18
  33. data/app/views/kadmin/components/finder/_empty.html.erb +3 -3
  34. data/app/views/kadmin/components/finder/_form.erb +10 -10
  35. data/app/views/kadmin/components/finder/_header.html.erb +14 -11
  36. data/app/views/kadmin/dash/index.html.erb +5 -5
  37. data/app/views/kadmin/error.html.erb +5 -5
  38. data/app/views/kadmin/helpers/_alerts.html.erb +4 -4
  39. data/app/views/kadmin/helpers/_form_errors.html.erb +10 -10
  40. data/app/views/layouts/modular/application.html.erb +134 -132
  41. data/config/initializers/action_view.rb +2 -2
  42. data/config/initializers/assets.rb +5 -5
  43. data/config/locales/de.yml +25 -25
  44. data/config/locales/en.yml +24 -24
  45. data/config/routes.rb +12 -12
  46. data/lib/kadmin.rb +22 -22
  47. data/lib/kadmin/auth.rb +31 -31
  48. data/lib/kadmin/auth/configuration.rb +66 -66
  49. data/lib/kadmin/auth/unauthorized_error.rb +14 -14
  50. data/lib/kadmin/auth/user.rb +15 -15
  51. data/lib/kadmin/auth/user_store.rb +21 -21
  52. data/lib/kadmin/configuration.rb +18 -18
  53. data/lib/kadmin/engine.rb +15 -15
  54. data/lib/kadmin/error.rb +7 -7
  55. data/lib/kadmin/errors/authorization.rb +15 -15
  56. data/lib/kadmin/finder.rb +66 -66
  57. data/lib/kadmin/form.rb +179 -179
  58. data/lib/kadmin/pager.rb +93 -93
  59. data/lib/kadmin/version.rb +3 -3
  60. data/test/dummy/README.rdoc +28 -28
  61. data/test/dummy/Rakefile +6 -6
  62. data/test/dummy/app/assets/javascripts/application.js +13 -13
  63. data/test/dummy/app/assets/stylesheets/application.css +15 -15
  64. data/test/dummy/app/controllers/admin/application_controller.rb +11 -11
  65. data/test/dummy/app/controllers/admin/people_controller.rb +89 -89
  66. data/test/dummy/app/controllers/admin_controller.rb +4 -4
  67. data/test/dummy/app/controllers/application_controller.rb +5 -5
  68. data/test/dummy/app/controllers/authorized_controller.rb +8 -8
  69. data/test/dummy/app/helpers/application_helper.rb +2 -2
  70. data/test/dummy/app/models/group.rb +8 -8
  71. data/test/dummy/app/models/group_person.rb +6 -6
  72. data/test/dummy/app/models/person.rb +20 -20
  73. data/test/dummy/app/views/admin/index.html.erb +1 -1
  74. data/test/dummy/app/views/admin/people/_form.html.erb +34 -34
  75. data/test/dummy/app/views/admin/people/_table.html.erb +33 -33
  76. data/test/dummy/app/views/admin/people/edit.html.erb +4 -4
  77. data/test/dummy/app/views/admin/people/index.html.erb +3 -3
  78. data/test/dummy/app/views/admin/people/new.html.erb +5 -5
  79. data/test/dummy/app/views/admin/people/show.html.erb +3 -3
  80. data/test/dummy/app/views/authorized/index.html.erb +1 -1
  81. data/test/dummy/app/views/layouts/application.html.erb +14 -14
  82. data/test/dummy/bin/bundle +3 -3
  83. data/test/dummy/bin/rails +4 -4
  84. data/test/dummy/bin/rake +4 -4
  85. data/test/dummy/bin/setup +29 -29
  86. data/test/dummy/config.ru +4 -4
  87. data/test/dummy/config/application.rb +39 -39
  88. data/test/dummy/config/boot.rb +5 -5
  89. data/test/dummy/config/database.yml +22 -22
  90. data/test/dummy/config/environment.rb +5 -5
  91. data/test/dummy/config/environments/development.rb +41 -41
  92. data/test/dummy/config/environments/production.rb +79 -79
  93. data/test/dummy/config/environments/test.rb +42 -42
  94. data/test/dummy/config/initializers/assets.rb +10 -10
  95. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -7
  96. data/test/dummy/config/initializers/cookies_serializer.rb +3 -3
  97. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -4
  98. data/test/dummy/config/initializers/inflections.rb +16 -16
  99. data/test/dummy/config/initializers/kadmin.rb +24 -24
  100. data/test/dummy/config/initializers/mime_types.rb +4 -4
  101. data/test/dummy/config/initializers/session_store.rb +3 -3
  102. data/test/dummy/config/initializers/wrap_parameters.rb +14 -14
  103. data/test/dummy/config/locales/en.yml +17 -17
  104. data/test/dummy/config/routes.rb +13 -13
  105. data/test/dummy/config/secrets.yml +22 -22
  106. data/test/dummy/db/migrate/20161006114509_create_people.rb +11 -11
  107. data/test/dummy/db/migrate/20161006134459_create_groups.rb +11 -11
  108. data/test/dummy/db/migrate/20161006134746_create_group_people.rb +11 -11
  109. data/test/dummy/db/schema.rb +43 -43
  110. data/test/dummy/lib/forms/group_form.rb +16 -16
  111. data/test/dummy/lib/forms/person_form.rb +19 -19
  112. data/test/dummy/public/404.html +67 -67
  113. data/test/dummy/public/422.html +67 -67
  114. data/test/dummy/public/500.html +66 -66
  115. data/test/dummy/test/fixtures/children.yml +11 -11
  116. data/test/dummy/test/fixtures/group_people.yml +11 -11
  117. data/test/dummy/test/fixtures/groups.yml +11 -11
  118. data/test/dummy/test/fixtures/people.yml +11 -11
  119. data/test/dummy/test/models/group_person_test.rb +7 -7
  120. data/test/dummy/test/models/group_test.rb +7 -7
  121. data/test/kadmin/form_test.rb +6 -6
  122. data/test/test_helper.rb +32 -32
  123. metadata +54 -53
@@ -1,2 +1,2 @@
1
- # Allow use of custom field tags for form builder
2
- ActionView::Base.default_form_builder = Kadmin::FormBuilder
1
+ # Allow use of custom field tags for form builder
2
+ ActionView::Base.default_form_builder = Kadmin::FormBuilder
@@ -1,5 +1,5 @@
1
- # Load engine assets
2
- # While loading images by extensions seem to work, loading JS and (S)CSS by extension seems
3
- # to cause issues, although loading them by filename is fine. Go figure.
4
- Rails.application.config.assets.precompile += %w(select2.css select2-bootstrap.css select2.js)
5
- Rails.application.config.assets.precompile += Dir.glob("#{Kadmin::Engine.root}/app/assets/**/*").reject { |fn| File.directory?(fn) }
1
+ # Load engine assets
2
+ # While loading images by extensions seem to work, loading JS and (S)CSS by extension seems
3
+ # to cause issues, although loading them by filename is fine. Go figure.
4
+ Rails.application.config.assets.precompile += %w(select2.css select2-bootstrap.css select2.js)
5
+ Rails.application.config.assets.precompile += Dir.glob("#{Kadmin::Engine.root}/app/assets/**/*").reject { |fn| File.directory?(fn) }
@@ -1,25 +1,25 @@
1
- de:
2
- kadmin:
3
- auth:
4
- error: Ein Fehler ist aufgetreten; bitte versuche es noch einmal
5
- login_required: Eine gültige E-Mail Adresse von Google (@offerista.com) ist erforderlich
6
- please_login: Bitte melde Dich an
7
- unauthorized: Unberechtigter Zugriff
8
- unauthorized_message: Du hast für die gewünschte Seite leider keine Zugriffsrechte; falls Du dies anders siehst, wende Dich bitte an das Apps & Services Team
9
- components:
10
- finder:
11
- clear: Löschen
12
- create: Anlegen
13
- empty: Nichts zu zeigen
14
- filter: Suchen
15
- out_of: von %{total}
16
- dash_message: Schaue Dir die Bereiche in der Navigationsleiste oben an. Sollte es irgenwelche Probleme geben, oder es Dir im Leben an Zugriffsrechten fehlen, wende Dich bitte an das Apps & Services Team
17
- error: Fehler
18
- errors:
19
- not_found: Objekt nicht gefunden
20
- params_missing: Fehlender erforderlicher Parameter
21
- unexpected: Unerwartete Fehler
22
- unexpected_message: Bei dem Betrieb ist ein unerwarteter Fehler aufgetreten. Bitte entweder nochmal versuchen, oder die Apps & Services Team kontaktieren.
23
- forms:
24
- please_correct: "Bitte die folgende Felde korrigieren:"
25
- welcome: Willkommen zurück, %{user}!
1
+ de:
2
+ kadmin:
3
+ auth:
4
+ error: Ein Fehler ist aufgetreten; bitte versuche es noch einmal
5
+ login_required: Eine gültige E-Mail Adresse von Google (@offerista.com) ist erforderlich
6
+ please_login: Bitte melde Dich an
7
+ unauthorized: Unberechtigter Zugriff
8
+ unauthorized_message: Du hast für die gewünschte Seite leider keine Zugriffsrechte; falls Du dies anders siehst, wende Dich bitte an das Apps & Services Team
9
+ components:
10
+ finder:
11
+ clear: Löschen
12
+ create: Anlegen
13
+ empty: Nichts zu zeigen
14
+ filter: Suchen
15
+ out_of: von %{total}
16
+ dash_message: Schaue Dir die Bereiche in der Navigationsleiste oben an. Sollte es irgenwelche Probleme geben, oder es Dir im Leben an Zugriffsrechten fehlen, wende Dich bitte an das Apps & Services Team
17
+ error: Fehler
18
+ errors:
19
+ not_found: Objekt nicht gefunden
20
+ params_missing: Fehlender erforderlicher Parameter
21
+ unexpected: Unerwartete Fehler
22
+ unexpected_message: Bei dem Betrieb ist ein unerwarteter Fehler aufgetreten. Bitte entweder nochmal versuchen, oder die Apps & Services Team kontaktieren.
23
+ forms:
24
+ please_correct: "Bitte die folgende Felde korrigieren:"
25
+ welcome: Willkommen zurück, %{user}!
@@ -1,25 +1,25 @@
1
- en:
2
- kadmin:
3
- auth:
4
- error: An error occurred; please try again
5
- login_required: A valid Google enabled email is necessary to login
6
- please_login: Please authenticate yourself
7
- unauthorized: Unauthorized access
8
- unauthorized_message: You are not authorized to access this resource; if you think you should be, contact the Apps & Services team
9
- components:
10
- finder:
11
- clear: Clear
12
- create: Create
13
- empty: Nothing to show
14
- filter: Filter
15
- out_of: out of %{total}
16
- dash_message: See the top navigation bar for the different admin sections. If you are missing authorizations, or if there is any issue at all, contact the Apps & Services team!
17
- error: Error
18
- errors:
19
- not_found: Requested object not found
20
- params_missing: Missing required parameters
21
- unexpected: Unexpected error
22
- unexpected_message: An unexpected error occurred; you can try again, or contact a member of the Apps & Services team.
23
- forms:
24
- please_correct: "Please correct the following:"
1
+ en:
2
+ kadmin:
3
+ auth:
4
+ error: An error occurred; please try again
5
+ login_required: A valid Google enabled email is necessary to login
6
+ please_login: Please authenticate yourself
7
+ unauthorized: Unauthorized access
8
+ unauthorized_message: You are not authorized to access this resource; if you think you should be, contact the Apps & Services team
9
+ components:
10
+ finder:
11
+ clear: Clear
12
+ create: Create
13
+ empty: Nothing to show
14
+ filter: Filter
15
+ out_of: out of %{total}
16
+ dash_message: See the top navigation bar for the different admin sections. If you are missing authorizations, or if there is any issue at all, contact the Apps & Services team!
17
+ error: Error
18
+ errors:
19
+ not_found: Requested object not found
20
+ params_missing: Missing required parameters
21
+ unexpected: Unexpected error
22
+ unexpected_message: An unexpected error occurred; you can try again, or contact a member of the Apps & Services team.
23
+ forms:
24
+ please_correct: "Please correct the following:"
25
25
  welcome: Moin, moin %{user}!
@@ -1,12 +1,12 @@
1
- Kadmin::Engine.routes.draw do
2
- get '/', controller: :dash, action: :index
3
-
4
- scope '/auth', controller: :auth, as: 'auth', defaults: { format: 'html' } do
5
- get '/login', action: :login, as: :login
6
- get '/logout', action: :logout, as: :logout
7
- get '/:provider/callback', action: :save
8
- post '/:provider/callback', action: :save
9
- get '/failure', action: :failure, as: :failure
10
- get '/unauthorized', action: :unauthorized, as: :unauthorized
11
- end
12
- end
1
+ Kadmin::Engine.routes.draw do
2
+ get '/', controller: :dash, action: :index
3
+
4
+ scope '/auth', controller: :auth, as: 'auth', defaults: { format: 'html' } do
5
+ get '/login', action: :login, as: :login
6
+ get '/logout', action: :logout, as: :logout
7
+ get '/:provider/callback', action: :save
8
+ post '/:provider/callback', action: :save
9
+ get '/failure', action: :failure, as: :failure
10
+ get '/unauthorized', action: :unauthorized, as: :unauthorized
11
+ end
12
+ end
@@ -1,22 +1,22 @@
1
- require 'kadmin/configuration'
2
- require 'kadmin/error'
3
- require 'kadmin/engine'
4
- require 'kadmin/auth'
5
- require 'kadmin/form'
6
- require 'kadmin/finder'
7
- require 'kadmin/pager'
8
-
9
- module Kadmin
10
- class << self
11
- delegate :logger, :logger=, to: :config
12
-
13
- def config
14
- return @config ||= Kadmin::Configuration.new
15
- end
16
-
17
- def configure
18
- yield(config) if block_given?
19
- return config
20
- end
21
- end
22
- end
1
+ require 'kadmin/configuration'
2
+ require 'kadmin/error'
3
+ require 'kadmin/engine'
4
+ require 'kadmin/auth'
5
+ require 'kadmin/form'
6
+ require 'kadmin/finder'
7
+ require 'kadmin/pager'
8
+
9
+ module Kadmin
10
+ class << self
11
+ delegate :logger, :logger=, to: :config
12
+
13
+ def config
14
+ return @config ||= Kadmin::Configuration.new
15
+ end
16
+
17
+ def configure
18
+ yield(config) if block_given?
19
+ return config
20
+ end
21
+ end
22
+ end
@@ -1,31 +1,31 @@
1
- # Third party dependency
2
- require 'omniauth-google-oauth2'
3
-
4
- # Core files
5
- require 'kadmin/auth/unauthorized_error'
6
- require 'kadmin/auth/configuration'
7
- require 'kadmin/auth/user'
8
- require 'kadmin/auth/user_store'
9
-
10
- module Kadmin
11
- module Auth
12
- class << self
13
- def users
14
- @users ||= config.user_store_class.new
15
- end
16
-
17
- def config
18
- return @config ||= Kadmin::Auth::Configuration.new
19
- end
20
-
21
- def configure
22
- yield(config) if block_given?
23
- return config
24
- end
25
-
26
- def omniauth_provider
27
- return config.oauth_credentials.present? ? :google_oauth2 : :developer
28
- end
29
- end
30
- end
31
- end
1
+ # Third party dependency
2
+ require 'omniauth-google-oauth2'
3
+
4
+ # Core files
5
+ require 'kadmin/auth/unauthorized_error'
6
+ require 'kadmin/auth/configuration'
7
+ require 'kadmin/auth/user'
8
+ require 'kadmin/auth/user_store'
9
+
10
+ module Kadmin
11
+ module Auth
12
+ class << self
13
+ def users
14
+ @users ||= config.user_store_class.new
15
+ end
16
+
17
+ def config
18
+ return @config ||= Kadmin::Auth::Configuration.new
19
+ end
20
+
21
+ def configure
22
+ yield(config) if block_given?
23
+ return config
24
+ end
25
+
26
+ def omniauth_provider
27
+ return config.oauth_credentials.present? ? :google_oauth2 : :developer
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,66 +1,66 @@
1
- module Kadmin
2
- module Auth
3
- class Configuration
4
- OAuthCredentials = Struct.new(:id, :secret)
5
-
6
- # @return [Kadmin::Auth::Configuration::OAuthCredentials] credentials for OAuth2 authentication; if absent, fallback to :developer provider
7
- attr_accessor :oauth_credentials
8
-
9
- # @return [Class<Kadmin::Auth::User>] class to use for authenticated users (mostly for resource authorization)
10
- attr_accessor :user_class
11
-
12
- # @return [Class<Kadmin::Auth::UserStore>] class for user lookup/registration
13
- attr_accessor :user_store_class
14
-
15
- def initialize
16
- @oauth_credentials = nil
17
- @user_class = Kadmin::Auth::User
18
- @user_store_class = Kadmin::Auth::UserStore
19
- @enabled = false
20
- end
21
-
22
- # @return [Boolean] true if enabled, false otherwise
23
- def enabled?
24
- return @enabled
25
- end
26
-
27
- # Enables authentication and adds OmniAuth middlewares
28
- def enable!
29
- unless @enabled
30
- append_omniauth_middleware
31
- @enabled = true
32
- end
33
- end
34
-
35
- # Disables authentication and removes OmniAuth middlewares
36
- def disable!
37
- if @enabled
38
- delete_omniauth_middleware
39
- @enabled = false
40
- end
41
- end
42
-
43
- def append_omniauth_middleware
44
- OmniAuth.config.logger = Kadmin.logger
45
- OmniAuth.config.path_prefix = File.join(Kadmin.config.mount_path, OmniAuth.config.path_prefix)
46
-
47
- provider_args = case Kadmin::Auth.omniauth_provider
48
- when :google_oauth2
49
- [:google_oauth2, @oauth_credentials.id, @oauth_credentials.secret]
50
- else
51
- [:developer, fields: [:email]]
52
- end
53
-
54
- Rails.application.config.middleware.use OmniAuth::Builder do
55
- provider(*provider_args)
56
- end
57
- end
58
- private :append_omniauth_middleware
59
-
60
- def delete_omniauth_middleware
61
- Rails.application.config.middleware.delete OmniAuth::Builder
62
- end
63
- private :delete_omniauth_middleware
64
- end
65
- end
66
- end
1
+ module Kadmin
2
+ module Auth
3
+ class Configuration
4
+ OAuthCredentials = Struct.new(:id, :secret)
5
+
6
+ # @return [Kadmin::Auth::Configuration::OAuthCredentials] credentials for OAuth2 authentication; if absent, fallback to :developer provider
7
+ attr_accessor :oauth_credentials
8
+
9
+ # @return [Class<Kadmin::Auth::User>] class to use for authenticated users (mostly for resource authorization)
10
+ attr_accessor :user_class
11
+
12
+ # @return [Class<Kadmin::Auth::UserStore>] class for user lookup/registration
13
+ attr_accessor :user_store_class
14
+
15
+ def initialize
16
+ @oauth_credentials = nil
17
+ @user_class = Kadmin::Auth::User
18
+ @user_store_class = Kadmin::Auth::UserStore
19
+ @enabled = false
20
+ end
21
+
22
+ # @return [Boolean] true if enabled, false otherwise
23
+ def enabled?
24
+ return @enabled
25
+ end
26
+
27
+ # Enables authentication and adds OmniAuth middlewares
28
+ def enable!
29
+ unless @enabled
30
+ append_omniauth_middleware
31
+ @enabled = true
32
+ end
33
+ end
34
+
35
+ # Disables authentication and removes OmniAuth middlewares
36
+ def disable!
37
+ if @enabled
38
+ delete_omniauth_middleware
39
+ @enabled = false
40
+ end
41
+ end
42
+
43
+ def append_omniauth_middleware
44
+ OmniAuth.config.logger = Kadmin.logger
45
+ OmniAuth.config.path_prefix = File.join(Kadmin.config.mount_path, OmniAuth.config.path_prefix)
46
+
47
+ provider_args = case Kadmin::Auth.omniauth_provider
48
+ when :google_oauth2
49
+ [:google_oauth2, @oauth_credentials.id, @oauth_credentials.secret]
50
+ else
51
+ [:developer, fields: [:email]]
52
+ end
53
+
54
+ Rails.application.config.middleware.use OmniAuth::Builder do
55
+ provider(*provider_args)
56
+ end
57
+ end
58
+ private :append_omniauth_middleware
59
+
60
+ def delete_omniauth_middleware
61
+ Rails.application.config.middleware.delete OmniAuth::Builder
62
+ end
63
+ private :delete_omniauth_middleware
64
+ end
65
+ end
66
+ end
@@ -1,14 +1,14 @@
1
- module Kadmin
2
- module Auth
3
- class UnauthorizedError < Kadmin::Error
4
- # Attempts to translate message, if not found returns message as a string
5
- def message
6
- I18n.t(@message, default: @message)
7
- end
8
-
9
- def title
10
- I18n.t('kadmin.auth.unauthorized')
11
- end
12
- end
13
- end
14
- end
1
+ module Kadmin
2
+ module Auth
3
+ class UnauthorizedError < Kadmin::Error
4
+ # Attempts to translate message, if not found returns message as a string
5
+ def message
6
+ I18n.t(@message, default: @message)
7
+ end
8
+
9
+ def title
10
+ I18n.t('kadmin.auth.unauthorized')
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,15 +1,15 @@
1
- module Kadmin
2
- module Auth
3
- class User
4
- attr_accessor :email
5
-
6
- def initialize(email)
7
- @email = email
8
- end
9
-
10
- def authorized?(_request)
11
- return true
12
- end
13
- end
14
- end
15
- end
1
+ module Kadmin
2
+ module Auth
3
+ class User
4
+ attr_accessor :email
5
+
6
+ def initialize(email)
7
+ @email = email
8
+ end
9
+
10
+ def authorized?(_request)
11
+ return true
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,21 +1,21 @@
1
- module Kadmin
2
- module Auth
3
- class UserStore
4
- def initialize
5
- @store = {}
6
- end
7
-
8
- def get(email)
9
- return @store[email.downcase]
10
- end
11
-
12
- def set(email, user)
13
- @store[email.downcase] = user
14
- end
15
-
16
- def exists?(email)
17
- @store.key?(email.downcase)
18
- end
19
- end
20
- end
21
- end
1
+ module Kadmin
2
+ module Auth
3
+ class UserStore
4
+ def initialize
5
+ @store = {}
6
+ end
7
+
8
+ def get(email)
9
+ return @store[email.downcase]
10
+ end
11
+
12
+ def set(email, user)
13
+ @store[email.downcase] = user
14
+ end
15
+
16
+ def exists?(email)
17
+ @store.key?(email.downcase)
18
+ end
19
+ end
20
+ end
21
+ end