auther 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -0
- data/LICENSE.md +20 -0
- data/README.md +100 -0
- data/app/assets/javascripts/auther/application.js +0 -0
- data/app/assets/stylesheets/auther/application.css.scss +45 -0
- data/app/controllers/auther/application_controller.rb +4 -0
- data/app/controllers/auther/session_controller.rb +31 -0
- data/app/helpers/auther/application_helper.rb +4 -0
- data/app/views/auther/session/new.html.slim +19 -0
- data/app/views/layouts/auther/auth.html.slim +10 -0
- data/bin/rails +8 -0
- data/config/routes.rb +4 -0
- data/lib/auther.rb +4 -0
- data/lib/auther/engine.rb +13 -0
- data/lib/auther/gatekeeper.rb +57 -0
- data/lib/auther/keymaster.rb +42 -0
- data/lib/auther/version.rb +3 -0
- metadata +296 -0
- metadata.gz.sig +0 -0
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
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
|
+
[](http://badge.fury.io/rb/auther)
|
7
|
+
[](https://codeclimate.com/github/bkuhlmann/auther)
|
8
|
+
[](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,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,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
data/lib/auther.rb
ADDED
@@ -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
|
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
|