auther 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 093c3e3b89c2368100edded3b52d2d3a11461031
4
+ data.tar.gz: 7e351f9e60c11c0e4336c4795dff68e4f0fdd5dd
5
+ SHA512:
6
+ metadata.gz: 40258f7e43264a953509038a46472a43f1ee56acd71818cda863446bbdc356aae0dba2ac70672cd042ea9917a346eec42b03669d7ce00607fa014b4a700fe85d
7
+ data.tar.gz: 3e8a937baaa20506299883b701f35aeb268200c318d468ddc0fb66c993026f989ba6a0843b0ec167c83a32d18733d1a23e33bfe00f09fcb0d5cd10fb3aa28285
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ 2��B ��.��f���q�<�͠�%�m��)e ��\��9�+�k�ʙ邽\ޅ��JLs�A�X��0=�,�= D{�D��$�4�[����.m�9�Ӝ����sߴ�ѻ�������]q`�s##��-��)��љ�G�VT���m/�ڢ�h���.��6�#B+)�Hj9�h�_$A1�k�_�7A�'�[�ff���
2
+ �u����Ƿ�]�
data/LICENSE.md ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2014 [Red Alchemist](http://www.redalchemist.com).
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # Overview
2
+
3
+ Provides simple, form-based authentication for apps that need security but don't want to use the clunky UI of
4
+ HTTP Basic Authentication and/or want to be compatible with password managers.
5
+
6
+ [![Gem Version](https://badge.fury.io/rb/auther.png)](http://badge.fury.io/rb/auther)
7
+ [![Code Climate GPA](https://codeclimate.com/github/bkuhlmann/auther.png)](https://codeclimate.com/github/bkuhlmann/auther)
8
+ [![Travis CI Status](https://secure.travis-ci.org/bkuhlmann/auther.png)](http://travis-ci.org/bkuhlmann/auther)
9
+
10
+ # Features
11
+
12
+ * Form-based authentication compatible with password managers like [1Password](https://agilebits.com/onepassword).
13
+ * Multiple account support with account specific blacklisted paths.
14
+ * Auto-redirection to blacklisted path (once credentials have been verified).
15
+ * Customizable session view.
16
+ * Customizable session controller.
17
+
18
+ # Requirements
19
+
20
+ 0. [Ruby 2.x.x](http://www.ruby-lang.org).
21
+ 0. [Ruby on Rails 4.x.x](http://rubyonrails.org).
22
+
23
+ # Setup
24
+
25
+ Type the following from the command line to securely install (recommended):
26
+
27
+ gem cert --add <(curl -Ls http://www.redalchemist.com/gem-public.pem)
28
+ gem install auther -P HighSecurity
29
+
30
+ ...or type the following to insecurely install (not recommended):
31
+
32
+ gem install auther
33
+
34
+ Add the following to your Gemfile:
35
+
36
+ gem "auther"
37
+
38
+ # Usage
39
+
40
+ Edit your routes.rb as follows:
41
+
42
+ Rails.application.routes.draw do
43
+ mount Auther::Engine => "/auther"
44
+ end
45
+
46
+ Edit your application.rb as follows:
47
+
48
+ module Example
49
+ class Application < Rails::Application
50
+ config.auther_settings = {
51
+ accounts: [
52
+ {
53
+ name: "test",
54
+ login: "test@test.com",
55
+ password: "password",
56
+ paths: ["/admin"]
57
+ }
58
+ ],
59
+ auth_url: "/auther/session/new"
60
+ }
61
+ end
62
+ end
63
+
64
+ # Customization
65
+
66
+ Don't like the default authorization form? No problem, simply create the following file within your Rails application
67
+ to override the form provided by this engine and customize as you see fit:
68
+
69
+ app/views/auther/session/new.html
70
+
71
+ # Tests
72
+
73
+ To test, do the following:
74
+
75
+ 0. cd to the gem root.
76
+ 0. bundle install
77
+ 0. bundle exec rspec spec
78
+
79
+ # Resources
80
+
81
+ * [Simplest Auth](https://github.com/vigetlabs/simplest_auth) - For situations where you need user and email reset
82
+ support beyond what this engine can provide.
83
+
84
+ # Contributions
85
+
86
+ Read CONTRIBUTING for details.
87
+
88
+ # Credits
89
+
90
+ Developed by [Brooke Kuhlmann](http://www.redalchemist.com) at [Red Alchemist](http://www.redalchemist.com).
91
+
92
+ # License
93
+
94
+ Copyright (c) 2014 [Red Alchemist](http://www.redalchemist.com).
95
+ Read the LICENSE for details.
96
+
97
+ # History
98
+
99
+ Read the CHANGELOG for details.
100
+ Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
File without changes
@@ -0,0 +1,45 @@
1
+ .auther-form {
2
+ font-family: "Helvetica","Times New Roman","Georgia","Serif";
3
+ background-color: rgba(198,198,198,1);
4
+ border: solid black 0.1em;
5
+ width: 20em;
6
+ margin: 0 auto;
7
+ padding: 1em;
8
+ -webkit-border-radius: 0.5em; -moz-border-radius: 0.5em; border-radius: 0.5em;
9
+
10
+ .row {
11
+ &:after {
12
+ content: "";
13
+ display: table;
14
+ clear: both;
15
+ }
16
+ }
17
+
18
+ .title {
19
+ margin-top: 0;
20
+ text-align: center;
21
+ }
22
+
23
+ .label {
24
+ margin: 0 0 1em 0;
25
+ float: left;
26
+ }
27
+
28
+ .input {
29
+ margin: 0 0 1em 0;
30
+ float: right;
31
+ input {
32
+ width: 15em;
33
+ }
34
+ }
35
+
36
+ .actions {
37
+ text-align: center;
38
+ input {
39
+ color: rgba(255,255,255,1);
40
+ background-color: rgba(0,140,186,1);
41
+ width: 15em;
42
+ }
43
+ }
44
+ }
45
+
@@ -0,0 +1,4 @@
1
+ module Auther
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,31 @@
1
+ class Auther::SessionController < ApplicationController
2
+ layout "auther/auth"
3
+
4
+ def show
5
+ redirect_to action: :new
6
+ end
7
+
8
+ def new
9
+ end
10
+
11
+ def create
12
+ settings = Rails.application.config.auther_settings
13
+ account = settings.fetch(:accounts).select { |account| account.fetch(:login) == params[:login] }.first
14
+
15
+ if account
16
+ keymaster = Auther::Keymaster.new account[:name]
17
+ session[keymaster.login_key] = params[:login]
18
+ session[keymaster.password_key] = params[:password]
19
+ redirect_to session["auther_redirect_url"] || '/'
20
+ else
21
+ render template: "auther/session/new"
22
+ end
23
+ end
24
+
25
+ def destroy
26
+ keymaster = Auther::Keymaster.new params[:account_name]
27
+ session.delete keymaster.login_key
28
+ session.delete keymaster.password_key
29
+ redirect_to action: :new
30
+ end
31
+ end
@@ -0,0 +1,4 @@
1
+ module Auther
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,19 @@
1
+ = form_tag "/auther/session", class: "auther-form"
2
+ .row
3
+ h1.title Authorization
4
+
5
+ .row
6
+ .label
7
+ = label_tag :login, "Login:"
8
+ .input
9
+ = text_field_tag :login, nil
10
+
11
+ .row
12
+ .label
13
+ = label_tag :password, "Password:"
14
+ .input
15
+ = password_field_tag :password, nil
16
+
17
+ .row
18
+ .actions
19
+ = submit_tag "Login", class: "btn btn-primary"
@@ -0,0 +1,10 @@
1
+ head
2
+ meta charset="utf-8"
3
+ meta name="viewport" content="width=device-width, initial-scale=1.0"
4
+ title Authorization
5
+
6
+ = stylesheet_link_tag "auther/application", media: "all"
7
+ = csrf_meta_tags
8
+ body
9
+ = yield
10
+ = javascript_include_tag "auther/application"
data/bin/rails ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/auther/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ Auther::Engine.routes.draw do
2
+ root to: "session#new"
3
+ resource :session, controller: "session", only: [:show, :new, :create, :destroy]
4
+ end
data/lib/auther.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "slim-rails"
2
+ require "auther/keymaster"
3
+ require "auther/gatekeeper"
4
+ require "auther/engine"
@@ -0,0 +1,13 @@
1
+ module Auther
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace Auther
4
+
5
+ # Set defaults. Can be overwritten in app config.
6
+ config.auther_settings = {}
7
+
8
+ initializer "auther.initialize" do |app|
9
+ # Initialize Gatekeeper middleware.
10
+ app.config.app_middleware.use Auther::Gatekeeper, app.config.auther_settings
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,57 @@
1
+ module Auther
2
+ class Gatekeeper
3
+ attr_reader :application, :settings
4
+
5
+ def initialize application, settings = []
6
+ @application = application
7
+ @settings = settings
8
+ end
9
+
10
+ def call env
11
+ session = env.fetch "rack.session"
12
+ request_path = env["PATH_INFO"]
13
+
14
+ if authorized?(env, request_path)
15
+ application.call env
16
+ else
17
+ session[Auther::Keymaster.redirect_url_key] = request_path
18
+ response = Rack::Response.new
19
+ response.redirect settings[:auth_url]
20
+ response.finish
21
+ end
22
+ end
23
+
24
+ private
25
+
26
+ def find_account env
27
+ session = env.fetch "rack.session"
28
+ session["auther_init"] = true # Force session to initialize.
29
+ account_name = Auther::Keymaster.get_account_name session
30
+ settings.fetch(:accounts).select { |account| account.fetch(:name) == account_name }.first
31
+ end
32
+
33
+ def blacklisted_path? path
34
+ blacklisted_paths = settings.fetch(:accounts).map {|account| account.fetch :paths }.flatten
35
+ blacklisted_paths.map { |blacklisted_path| path.include? blacklisted_path }.any?
36
+ end
37
+
38
+ def blacklisted_account? account, path
39
+ account.fetch(:paths).include? path
40
+ end
41
+
42
+ def authenticated? env, account
43
+ session = env.fetch "rack.session"
44
+ keymaster = Auther::Keymaster.new account.fetch(:name)
45
+ session[keymaster.login_key] == account.fetch(:login) && session[keymaster.password_key] == account.fetch(:password)
46
+ end
47
+
48
+ def authorized? env, path
49
+ if blacklisted_path?(path)
50
+ account = find_account env
51
+ account && authenticated?(env, account) && !blacklisted_account?(account, path)
52
+ else
53
+ true
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,42 @@
1
+ module Auther
2
+ class Keymaster
3
+ attr_reader :account_name
4
+
5
+ def self.namespace
6
+ "auther"
7
+ end
8
+
9
+ def self.redirect_url_key delimiter: '_'
10
+ [namespace, "redirect", "url"] * delimiter
11
+ end
12
+
13
+ def self.get_account_name session = {}
14
+ matching_keys = session.keys.select { |key| key.to_s =~ /auther.+login/ }
15
+ key = matching_keys.first || ''
16
+ key.gsub("#{namespace}_", '').gsub "_login", ''
17
+ end
18
+
19
+ def self.get_account_login session = {}
20
+ account_name = get_account_name session
21
+ session[new(account_name).login_key]
22
+ end
23
+
24
+ def initialize account_name = nil
25
+ @account_name = account_name
26
+ end
27
+
28
+ def login_key
29
+ build_key "login"
30
+ end
31
+
32
+ def password_key
33
+ build_key "password"
34
+ end
35
+
36
+ private
37
+
38
+ def build_key key_name, delimiter: '_'
39
+ [self.class.namespace, account_name, key_name].compact * delimiter
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module Auther
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: auther
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Brooke Kuhlmann
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDhTCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQ8wDQYDVQQDDAZicm9v
14
+ a2UxHDAaBgoJkiaJk/IsZAEZFgxyZWRhbGNoZW1pc3QxEzARBgoJkiaJk/IsZAEZ
15
+ FgNjb20wHhcNMTMwNjI1MDEzOTUyWhcNMTQwNjI1MDEzOTUyWjBEMQ8wDQYDVQQD
16
+ DAZicm9va2UxHDAaBgoJkiaJk/IsZAEZFgxyZWRhbGNoZW1pc3QxEzARBgoJkiaJ
17
+ k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCoICuy
18
+ DEfASTaScwJxS+wuGY729rx9X6KWktpiee5UT0hSZ8RBum1PU5pfgXdZcZ9rOiGC
19
+ 66qjTN7I08FWpnoz/11M9Wcqd5k1aJXnXeCKRjWmgrnqY2ecbM6CR2OhSIe63l1I
20
+ wNg9ZTx6h2S8AcdJa2cs1kGO0/NZ5PqKn8ZSFUfByJIIP6ygas7MFIh9EuDs+bTU
21
+ OVrOAtfC8rZKZ7iFhPwMeRfn4PnR/q0xfK6UXjjr7ES67/qjAbioZaNfubbe+bc7
22
+ aRcWYGTG8cFuM0PnX4dr2p3ZRXmOYwt+dcZxRZxG099v4IsC0hwttgES64BfDiQc
23
+ PrqZFq63Lzc/j+eBAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAd
24
+ BgNVHQ4EFgQU43tA2HIdqx0YsONzs1fL6z8l4WQwIgYDVR0RBBswGYEXYnJvb2tl
25
+ QHJlZGFsY2hlbWlzdC5jb20wIgYDVR0SBBswGYEXYnJvb2tlQHJlZGFsY2hlbWlz
26
+ dC5jb20wDQYJKoZIhvcNAQEFBQADggEBADZi/zTFe3ZJ87QbGmqIadqGeqy27/KZ
27
+ tIO5rX7kPoFwIdFyW8XekozEPaWDpwRQ/E0LVz1f/7U6VEmp30tpOgXqHS7GkAlz
28
+ Q1bZjlDMkosXIYd737LfjaQB5YqzoUMWdbPmX5oKXmQMy416GrcLZXW22u5HtrHN
29
+ AT6fTCYrKaY9LWcugrGU7puOo0itBjLUC0YxtBnDGV8h0Fop9DHQ6gATPweQ7R1j
30
+ SJpzzzZ8gO6BKn4fhd+ENNQ333Qy3nuNk07TVIaNnlgeHhowUDuD9T7Z8Lka0pt3
31
+ 4PteiTppsf0SSVAM9zSO5IuFngXMRwWgvjOfXE70f43RDuUVTCSyylc=
32
+ -----END CERTIFICATE-----
33
+ date: 2014-01-10 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rails
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '4.0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '4.0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: slim-rails
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: sass-rails
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '4.0'
77
+ - !ruby/object:Gem::Dependency
78
+ name: rake
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '10.0'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '10.0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: pry
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ - !ruby/object:Gem::Dependency
106
+ name: pry-byebug
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ - !ruby/object:Gem::Dependency
120
+ name: pry-remote
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: pry-rescue
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: pry-stack_explorer
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ - !ruby/object:Gem::Dependency
162
+ name: pry-vterm_aliases
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: pry-git
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ - !ruby/object:Gem::Dependency
190
+ name: pry-doc
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ type: :development
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ - !ruby/object:Gem::Dependency
204
+ name: rspec-rails
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ - !ruby/object:Gem::Dependency
218
+ name: rb-fsevent
219
+ requirement: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ type: :development
225
+ prerelease: false
226
+ version_requirements: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ - !ruby/object:Gem::Dependency
232
+ name: guard-rspec
233
+ requirement: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ type: :development
239
+ prerelease: false
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ description: A Rails Engine with simple, form-based authentication, session, and blacklist
246
+ route support.
247
+ email:
248
+ - brooke@redalchemist.com
249
+ executables: []
250
+ extensions: []
251
+ extra_rdoc_files:
252
+ - README.md
253
+ - LICENSE.md
254
+ files:
255
+ - LICENSE.md
256
+ - README.md
257
+ - app/assets/javascripts/auther/application.js
258
+ - app/assets/stylesheets/auther/application.css.scss
259
+ - app/controllers/auther/application_controller.rb
260
+ - app/controllers/auther/session_controller.rb
261
+ - app/helpers/auther/application_helper.rb
262
+ - app/views/auther/session/new.html.slim
263
+ - app/views/layouts/auther/auth.html.slim
264
+ - bin/rails
265
+ - config/routes.rb
266
+ - lib/auther.rb
267
+ - lib/auther/engine.rb
268
+ - lib/auther/gatekeeper.rb
269
+ - lib/auther/keymaster.rb
270
+ - lib/auther/version.rb
271
+ homepage: http://www.redalchemist.com
272
+ licenses:
273
+ - MIT
274
+ metadata: {}
275
+ post_install_message:
276
+ rdoc_options: []
277
+ require_paths:
278
+ - lib
279
+ required_ruby_version: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: '2.0'
284
+ required_rubygems_version: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: '0'
289
+ requirements: []
290
+ rubyforge_project:
291
+ rubygems_version: 2.2.0
292
+ signing_key:
293
+ specification_version: 4
294
+ summary: A Rails Engine with simple, form-based authentication support.
295
+ test_files: []
296
+ has_rdoc:
metadata.gz.sig ADDED
Binary file