auther 7.1.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58723a40896b8a889ace2dcb4da89faefd810959
4
- data.tar.gz: 9c44b675c2f1084bce2bb390168d2a69c47b0085
3
+ metadata.gz: 9b255589ee50005b28e3d71d9af78bdea017cafd
4
+ data.tar.gz: 8011faaa46c102996f969a9804bee444c0b2fe96
5
5
  SHA512:
6
- metadata.gz: bc3dfee201a469b1aeafb4d722280d88931a5c53351a8720deb8ea508462df27486093b2b0f50323d8ba0815ab801fba4ef739c9e65914879b221d943404fa7c
7
- data.tar.gz: af33a40a3ee921ec1f00a22e30806dc8d04cd62c2e63ab7e6dc437d227d060e8032b1741c26f0f1a8ccbc84068f010bb304b21de9045775f29746b5f036a0fd8
6
+ metadata.gz: ca2c0e51984a53536a86208352caed9fefe5597599bf4842e6a417eca272c8ef736f14908591e737c38924ae7ac036efe1c59a3ee935390a653bede8d05aae48
7
+ data.tar.gz: 7239e284321dcee0a61977875b5133282d8b6a2bc47071e13d503296b1b6888915867bca0c9b3a6f72c3c420f5caf0cf664b9f25b954a83526e3f6a9ee66ee35
@@ -0,0 +1 @@
1
+ �{�Ѳ��=��V�X��~/so�f��$�<�|˂d�����ម}����������j�Ƃ&����5�#x�I>-��Ǔ�2=^��$fw��[��D�:�[Ak�p��������I��o�����<�+Mk�n�����Ag����H,t�.����'?�Yϡ� (���y�;��A�u�"E��c �zn�r^G�������^<i���}��Կ���)]��.�:&+���\��/Hj�ǖ� �5�T
@@ -0,0 +1 @@
1
+ �VTo��NN��v�.���Փ�����W'�����s�ż?���1�M��� ��i�iB�f�����撟0�EGSɂ� �OL�>j��p�9q�������[�X^>%���*\;ѯꆷ�v�R��e��o�G����"��(zM1�~`{l4�0�&�ŧ墸+��1�_%nek +Zn"D.0����0�(u��
data/README.md CHANGED
@@ -4,68 +4,62 @@
4
4
  [![Code Climate GPA](https://codeclimate.com/github/bkuhlmann/auther.svg)](https://codeclimate.com/github/bkuhlmann/auther)
5
5
  [![Code Climate Coverage](https://codeclimate.com/github/bkuhlmann/auther/coverage.svg)](https://codeclimate.com/github/bkuhlmann/auther)
6
6
  [![Gemnasium Status](https://gemnasium.com/bkuhlmann/auther.svg)](https://gemnasium.com/bkuhlmann/auther)
7
- [![Travis CI Status](https://secure.travis-ci.org/bkuhlmann/auther.svg)](https://travis-ci.org/bkuhlmann/auther)
7
+ [![Circle CI Status](https://circleci.com/gh/bkuhlmann/auther.svg?style=svg)](https://circleci.com/gh/bkuhlmann/auther)
8
8
  [![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/bkuhlmann)
9
9
 
10
10
  Provides simple, form-based authentication for apps that need security but don't want to deal with
11
11
  the clunky UI of HTTP Basic Authentication or something as heavyweight as
12
12
  [Devise](https://github.com/plataformatec/devise). It doesn't require a database and is compatible
13
- with password managers like [1Password](https://agilebits.com/onepassword) making for a pleasent
13
+ with password managers like [1Password](https://agilebits.com/onepassword) making for a pleasant
14
14
  user experience.
15
15
 
16
16
  <!-- Tocer[start]: Auto-generated, don't remove. -->
17
17
 
18
- # Table of Contents
19
-
20
- - [Features](#features)
21
- - [Requirements](#requirements)
22
- - [Setup](#setup)
23
- - [Usage](#usage)
24
- - [Initializer](#initializer)
25
- - [Routes](#routes)
26
- - [Model](#model)
27
- - [Presenter](#presenter)
28
- - [View](#view)
29
- - [Controller](#controller)
30
- - [Logging](#logging)
31
- - [Troubleshooting](#troubleshooting)
32
- - [Tests](#tests)
33
- - [Versioning](#versioning)
34
- - [Code of Conduct](#code-of-conduct)
35
- - [Contributions](#contributions)
36
- - [License](#license)
37
- - [History](#history)
38
- - [Credits](#credits)
18
+ ## Table of Contents
19
+
20
+ - [Features](#features)
21
+ - [Requirements](#requirements)
22
+ - [Setup](#setup)
23
+ - [Usage](#usage)
24
+ - [Initializer](#initializer)
25
+ - [Routes](#routes)
26
+ - [Model](#model)
27
+ - [Presenter](#presenter)
28
+ - [View](#view)
29
+ - [Controller](#controller)
30
+ - [Logging](#logging)
31
+ - [Troubleshooting](#troubleshooting)
32
+ - [Tests](#tests)
33
+ - [Versioning](#versioning)
34
+ - [Code of Conduct](#code-of-conduct)
35
+ - [Contributions](#contributions)
36
+ - [License](#license)
37
+ - [History](#history)
38
+ - [Credits](#credits)
39
39
 
40
40
  <!-- Tocer[finish]: Auto-generated, don't remove. -->
41
41
 
42
- # Features
42
+ ## Features
43
43
 
44
44
  - Supports form-based authentication compatible with password managers like
45
45
  [1Password](https://agilebits.com/onepassword).
46
46
 
47
- [![Screenshot - Large Valid](doc/screenshots/large-valid.png)](https://github.com/bkuhlmann/auther)
48
- [![Screenshot - Large Invalid](doc/screenshots/large-invalid.png)](https://github.com/bkuhlmann/auther)
47
+ [![Screenshot - Form Without Errors](doc/screenshots/form-without_errors.png)](https://github.com/bkuhlmann/auther)
48
+ [![Screenshot - For With Errors](doc/screenshots/form-with_errors.png)](https://github.com/bkuhlmann/auther)
49
49
 
50
- - Supports mobile layouts and small screens:
51
-
52
- [![Screenshot - Mobile Valid](doc/screenshots/mobile-valid.png)](https://github.com/bkuhlmann/auther)
53
- [![Screenshot - Mobile Invalid](doc/screenshots/mobile-invalid.png)](https://github.com/bkuhlmann/auther)
54
-
55
- - Uses [Bourbon](http://bourbon.io), [Neat](http://neat.bourbon.io), and
56
- [Bitters](http://bitters.bourbon.io) for lightweight styling.
50
+ - Uses CSS Flexbox for lightweight styling.
57
51
  - Uses encrypted account credentials to keep sensitive information secure.
58
52
  - Supports multiple accounts with account specific blacklists.
59
53
  - Supports customizable routes, models, presenters, views, controllers, and loggers.
60
54
  - Provides a generator for easy install and setup within an existing project.
61
55
  - Provides auto-redirection to requested path for verified credentials.
62
56
 
63
- # Requirements
57
+ ## Requirements
64
58
 
65
59
  0. [Ruby 2.4.x](https://www.ruby-lang.org).
66
60
  0. [Ruby on Rails 5.x.x](http://rubyonrails.org).
67
61
 
68
- # Setup
62
+ ## Setup
69
63
 
70
64
  For a secure install, type the following from the command line (recommended):
71
65
 
@@ -88,14 +82,14 @@ Run the generator to configure and initialize your application:
88
82
 
89
83
  rails generate auther:install
90
84
 
91
- # Usage
85
+ ## Usage
92
86
 
93
- Assuming you are using the [dotenv](https://github.com/bkeepers/dotenv) gem, add the following to
94
- your `.env` settings:
87
+ Assuming you are using something like [direnv](https://direnv.net), add the following to your `.env`
88
+ file:
95
89
 
96
- AUTHER_SECRET=\x14\xCE\xCB\xECc\xCFl$.\xCE\xA7J}\xEE\xD5\xEA}\x86\xE7\xF6\xE3\xF3DA\x8F\x90m\xED\xA5\xA4=Z
97
- AUTHER_ADMIN_LOGIN=cEgyd2hHSit6NkpwN000aUNiU3BkNThxcjRRd1AyT1RmbFFqaGJRR0FjVT0tLWR6Mm1sUmxscHlxQU1leHF2d3ZoZ2c9PQ==--6d4b8bfadc54bfba6a41164675b14980caf01445
98
- AUTHER_ADMIN_PASSWORD=LzlDekNYVW5UK05rRXZnekJuN1g5OXNhYUFRLy96TWI1NEMzbHFnVHpqND0tLUJUSGJTS1djQjlFR0ZkS0VCcE14VEE9PQ==--6331922bb9dace39e402818ce4ebf87ab9a73317
90
+ AUTHER_SECRET=281047a438dcd3f1f1401954d779025e496dc938ba79703bcf6ca0605ca350e7
91
+ AUTHER_ADMIN_LOGIN=V0lMaDFBK2o3SngvSHUySUZOYVJ3dC82QmlQaDRWcUhKOEFkUjFsYkF3ND0tLXpMZDBhdCtJaHVsVnpWNkFWVWUxVVE9PQ==--d8595331720f8475090763d5a3a3103b3f6a9259
92
+ AUTHER_ADMIN_PASSWORD=Tk05VzlWNTdoQW5sbEtzWlA5T25VVHRFb3FkS0xGbjA2ZVU5bjVqN3RHST0tLVBOaVcyWnp3ZFY5ais0eWtrNXhobXc9PQ==--a83d6d7644085a972d847181b5f486bf245fd16b
99
93
 
100
94
  Launch your Rails application and visit the following:
101
95
 
@@ -106,7 +100,9 @@ Use these credentials to login:
106
100
  - Login: test@test.com
107
101
  - Password: nevermore
108
102
 
109
- ## Initializer
103
+ That's it, you'll be logged in at this point.
104
+
105
+ ### Initializer
110
106
 
111
107
  The initializer (installed during setup) can be found here:
112
108
 
@@ -115,22 +111,23 @@ The initializer (installed during setup) can be found here:
115
111
  The initializer comes installed with the following settings:
116
112
 
117
113
  Rails.application.config.auther_settings = {
118
- secret: ENV["AUTHER_SECRET"],
119
114
  accounts: [
120
115
  name: "admin",
121
116
  encrypted_login: ENV["AUTHER_ADMIN_LOGIN"],
122
117
  encrypted_password: ENV["AUTHER_ADMIN_PASSWORD"],
123
118
  paths: ["/admin"]
124
- ]
119
+ ],
120
+ secret: [ENV["AUTHER_SECRET"]].pack("H*")
125
121
  }
126
122
 
127
- **IMPORTANT**: The encrypted secret, login, and password credentials used in the `.env` setup above
128
- must be re-encrypted before deploying to production! To encrypt/decrypt account credentials, launch
129
- a rails console and run the following:
123
+ **IMPORTANT**: The encrypted secret, login, and password used in the `.env` setup above must be
124
+ unique and re-encrypted before deploying to production (don't use the provided examples)! To
125
+ encrypt/decrypt account credentials, launch a rails console and run the following:
130
126
 
131
- # Best is generated via `SecureRandom.random_bytes 32`. `32` bytes is the minimum but using a
132
- # number higher than `32` is recommend. Must be equal to what is defined in `auther_settings`.
133
- cipher = Auther::Cipher.new "\x14\xCE\xCB\xECc\xCFl$.\xCE\xA7J}\xEE\xD5\xEA}\x86\xE7\xF6\xE3\xF3DA\x8F\x90m\xED\xA5\xA4=Z"
127
+ # Best if generated via `SecureRandom.hex 32`. Exactly `32` bytes is required or you'll
128
+ # get a `ArgumentError: key must be 32 bytes`. Must be equal to the secret as defined in
129
+ # `auther_settings`.
130
+ cipher = Auther::Cipher.new "f106a7169a5cfb90f016105b31b595282011a1090d843b7868103c770e35e38e"
134
131
 
135
132
  # Do this to encrypt an unecrypted value.
136
133
  cipher.encrypt "test@test.com"
@@ -162,7 +159,7 @@ The initializer can be customized as follows:
162
159
  - *logger* - Optional. The logger used to log path/account authorization messages. Default:
163
160
  `Auther::NullLogger`.
164
161
 
165
- ## Routes
162
+ ### Routes
166
163
 
167
164
  The routes can be customized as follows (installed, by default, via the install generator):
168
165
 
@@ -172,31 +169,31 @@ The routes can be customized as follows (installed, by default, via the install
172
169
  delete "/logout", to: "auther/session#destroy", as: "logout"
173
170
  end
174
171
 
175
- ## Model
172
+ ### Model
176
173
 
177
174
  The [Auther::Account](app/models/auther/account.rb) is a plain old Ruby object that uses ActiveModel
178
175
  validations to aid in attribute validation. This model could potentially be replaced with a
179
176
  database-backed object (would require controller customization)...but you should question if you
180
177
  have outgrown the use of this gem and need a different solution altogether if it comes to that.
181
178
 
182
- ## Presenter
179
+ ### Presenter
183
180
 
184
181
  The [Auther::Presenter::Account](app/presenters/auther/account.rb) is a plain old Ruby object that
185
182
  uses ActiveModel validations to aid in form validation. This presenter makes it easy to construct
186
183
  form data for input and validation.
187
184
 
188
- ## View
185
+ ### View
189
186
 
190
187
  The view can be customized by creating the following file within your Rails application (assumes
191
188
  that the default Auther::SessionController implementation is sufficient):
192
189
 
193
190
  app/views/auther/session/new.html
194
191
 
195
- The form uses `@account` instance variable which is an instance of the Auther::Presenter::Account
196
- presenter (as mentioned above). The form can be stylized by attaching new styles to the
197
- .authorization class (see [auther.scss](app/assets/stylesheets/auther/auther.scss) for details).
192
+ The form uses the `@account` instance variable which is an instance of the
193
+ Auther::Presenter::Account presenter (as mentioned above). The form can be stylized by modifying the
194
+ styles found in the [auther.scss](app/assets/stylesheets/auther/auther.scss) stylesheet.
198
195
 
199
- ## Controller
196
+ ### Controller
200
197
 
201
198
  The [Auther::SessionController](app/controllers/auther/session_controller.rb) inherits from the
202
199
  [Auther::BaseController](app/controllers/auther/base_controller.rb). To customize, it is recommended
@@ -211,7 +208,7 @@ This allows customization of session controller behavior to serve any special bu
211
208
  the `Auther::BaseController` for additional details or the `Auther::SessionController` for default
212
209
  implementation.
213
210
 
214
- ## Logging
211
+ ### Logging
215
212
 
216
213
  As mentioned in the setup above, the logger can be customized as follows:
217
214
 
@@ -227,10 +224,8 @@ debug custom Auther settings:
227
224
  - Account authentication pass/fail.
228
225
  - Account and path authorization pass/fail.
229
226
 
230
- ## Troubleshooting
227
+ ### Troubleshooting
231
228
 
232
- - With Ruby 2.4.0, it's imporant that the secret is generated via `SecureRandom.random_bytes`. Use
233
- `32` bytes or higher for a secure secret.
234
229
  - If upgrading Rails, changing the cookie/session settings, generating a new secret base key, etc.
235
230
  this might cause Auther authentication to fail. Make sure to clear your browser cookies in this
236
231
  situation or use Google Chrome (incognito mode) to verify.
@@ -241,13 +236,13 @@ debug custom Auther settings:
241
236
  you have customized this to something else, you might want to read the usage documentation
242
237
  (mentioned above) to rebuild the authentication view/form for your specific business needs.
243
238
 
244
- # Tests
239
+ ## Tests
245
240
 
246
241
  To test, run:
247
242
 
248
243
  bundle exec rake
249
244
 
250
- # Versioning
245
+ ## Versioning
251
246
 
252
247
  Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
253
248
 
@@ -255,26 +250,26 @@ Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
255
250
  - Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
256
251
  - Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
257
252
 
258
- # Code of Conduct
253
+ ## Code of Conduct
259
254
 
260
255
  Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
261
256
  participating in this project you agree to abide by its terms.
262
257
 
263
- # Contributions
258
+ ## Contributions
264
259
 
265
260
  Read [CONTRIBUTING](CONTRIBUTING.md) for details.
266
261
 
267
- # License
262
+ ## License
268
263
 
269
264
  Copyright (c) 2014 [Alchemists](https://www.alchemists.io).
270
265
  Read [LICENSE](LICENSE.md) for details.
271
266
 
272
- # History
267
+ ## History
273
268
 
274
269
  Read [CHANGES](CHANGES.md) for details.
275
270
  Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
276
271
 
277
- # Credits
272
+ ## Credits
278
273
 
279
274
  Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
280
275
  [Alchemists](https://www.alchemists.io).
@@ -1,4 +1 @@
1
- @import "bourbon";
2
- @import "bitters/base";
3
- @import "neat";
4
1
  @import "auther";
@@ -1,75 +1,94 @@
1
- $auther-red: #F04124;
2
- $auther-white: #FFFFFF;
3
- $mobile: new-breakpoint(max-width 480px 4);
1
+ $auther-blue-light: hsla(215, 55%, 54%, 1.00);
2
+ $auther-blue-dark: hsla(214, 58%, 38%, 1.00);
3
+ $auther-red: hsla(9, 87%, 54%, 1.00);
4
+ $auther-white: hsla(0, 0%, 100%, 1.00);
5
+ $auther-grey-light: hsla(0, 0%, 65%, 1.00);
6
+ $auther-grey-dark: hsla(240, 1%, 30%, 1.00);
7
+
8
+ $auther-font-family: "Verdana", sans-serif;
9
+
10
+ @mixin border_radius($value: 0.3rem) {
11
+ border-top-left-radius: $value;
12
+ border-top-right-radius: $value;
13
+ border-bottom-right-radius: $value;
14
+ border-bottom-left-radius: $value;
15
+ }
4
16
 
5
17
  .auther-page {
6
- @include row;
18
+ display: flex;
19
+ font-family: $auther-font-family;
7
20
  }
8
21
 
9
- .auther-content {
10
- @include outer-container;
22
+ .auther-body {
23
+ align-content: center;
24
+ display: flex;
25
+ justify-content: center;
26
+ height: 100%;
27
+ width: 100%;
11
28
  }
12
29
 
13
- .auther-credentials {
14
- @include span-columns(6);
15
- @include shift(2);
16
- @include media($mobile) {
17
- @include shift(0);
18
- @include span-columns(4);
19
- }
30
+ .auther-content {
31
+ display: flex;
32
+ flex-direction: column;
20
33
  }
21
34
 
22
- .auther-title {
35
+ .auther-label {
23
36
  font-size: 2em;
24
37
  font-weight: 400;
25
- margin: 2em 0 1em 0;
26
38
  text-align: center;
27
- @include media($mobile) {
28
- margin-top: 1em;
29
- }
30
39
  }
31
40
 
32
- .auther-form-section {
33
- @include span-columns(6 of 6);
41
+ .auther-form {
42
+ display: flex;
43
+ flex-direction: column;
34
44
  }
35
45
 
36
- %auther-form-label {
37
- @include span-columns(2 of 6);
38
- font-weight: 300;
39
- text-align: right;
40
- @include media($mobile) {
41
- @include span-columns(4 of 4);
42
- @include omega();
43
- text-align: center;
44
- }
46
+ .auther-form-section {
47
+ display: flex;
48
+ flex-direction: column;
49
+ margin: 0 0 0.5rem 0;
45
50
  }
46
51
 
47
- .auther-form-label {
48
- @extend %auther-form-label;
52
+ .auther-form-group {
53
+ display: flex;
54
+ flex-direction: column;
49
55
  }
50
56
 
51
- .auther-form-select-label {
52
- @extend %auther-form-label;
53
- }
57
+ .auther-form-input {
58
+ @include border_radius();
54
59
 
55
- .auther-form-select {
56
- @include fill-parent;
60
+ color: $auther-grey-dark;
61
+ border: 0.09rem solid $auther-grey-light;
62
+ display: flex;
63
+ font-size: 0.9rem;
64
+ padding: 0.5rem;
65
+ outline: none;
57
66
  }
58
67
 
59
- .auther-form-group {
60
- @include span-columns(4 of 6);
61
- @include omega();
62
- @include media($mobile) {
63
- @include span-columns(4 of 4);
64
- }
68
+ .auther-form-select {
69
+ @include border_radius();
70
+
71
+ background: transparent;
72
+ color: $auther-grey-dark;
73
+ display: flex;
74
+ font-size: 1rem;
75
+ height: 2rem;
76
+ outline: none;
65
77
  }
66
78
 
67
79
  .auther-button {
68
- @include shift(1.3);
69
- @include span-columns(4 of 6);
70
- @include media($mobile) {
71
- @include shift(0);
72
- @include span-columns(4 of 4);
80
+ color: $auther-white;
81
+ cursor: pointer;
82
+ background-color: $auther-blue-light;
83
+ border: none;
84
+ font-size: 1rem;
85
+ padding: 0.5rem;
86
+ margin: 1rem 0 0 0;
87
+ outline: none;
88
+ width: 100%;
89
+
90
+ &:active {
91
+ background-color: $auther-blue-dark;
73
92
  }
74
93
  }
75
94
 
@@ -77,24 +96,17 @@ $mobile: new-breakpoint(max-width 480px 4);
77
96
  background: $auther-red;
78
97
  color: $auther-white;
79
98
  display: none;
80
- padding: 0.3em 0.5em;
99
+ padding: 0.3em 0.7em;
81
100
  }
82
101
 
83
102
  .auther-error {
84
- .auther-form-label {
85
- color: $auther-red;
86
- }
87
-
88
- .auther-form-group {
89
- margin-bottom: 0.75em;
90
- }
91
-
92
103
  .auther-form-input {
93
104
  border-color: $auther-red;
94
- margin-bottom: 0;
105
+ border-bottom-right-radius: 0;
106
+ border-bottom-left-radius: 0;
95
107
  }
96
108
 
97
109
  .auther-error-message {
98
- display: block;
110
+ display: flex;
99
111
  }
100
112
  }
@@ -1,25 +1,22 @@
1
1
  - content_for(:title) { @title }
2
2
 
3
3
  .auther-page
4
- .auther-content
5
- h1.auther-title = "Authorization"
4
+ .auther-body
5
+ .auther-content
6
+ h1.auther-label = "Authorization"
6
7
 
7
- = form_for @account, as: :account, url: "/auther/session", html: {class: "auther-credentials"} do |form|
8
- div class=%(auther-form-section #{"auther-error" if @account.error?(:login)})
9
- = form.label :login, "Login:", class: "auther-form-label"
10
- .auther-form-group
11
- = form.text_field :login, class: "auther-form-input"
12
- small.auther-error-message = @account.error_message(:login)
8
+ = form_for @account, as: :account, url: "/auther/session", html: {class: "auther-form"} do |form|
9
+ div class=%(auther-form-section #{"auther-error" if @account.error?(:login)})
10
+ .auther-form-group
11
+ = form.text_field :login, class: "auther-form-input", placeholder: "Login"
12
+ small.auther-error-message = @account.error_message(:login)
13
13
 
14
- div class=%(auther-form-section #{"auther-error" if @account.error?(:password)})
15
- = form.label :password, "Password:", class: "auther-form-label"
16
- .auther-form-group
17
- = form.password_field :password, class: "auther-form-input"
18
- small.auther-error-message = @account.error_message(:password)
14
+ div class=%(auther-form-section #{"auther-error" if @account.error?(:password)})
15
+ .auther-form-group
16
+ = form.password_field :password, class: "auther-form-input", placeholder: "Password"
17
+ small.auther-error-message = @account.error_message(:password)
19
18
 
20
- .auther-form-section
21
- = form.label :name, "Account:", class: "auther-form-select-label"
22
- .auther-form-group
19
+ .auther-form-section
23
20
  = form.select :name, @account_options, {}, class: "auther-form-select"
24
21
 
25
- = form.submit "Login", class: "auther-button"
22
+ = form.submit "Login", class: "auther-button"
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bourbon"
4
- require "neat"
5
-
6
3
  module Auther
7
4
  # The main engine.
8
5
  class Engine < ::Rails::Engine
@@ -12,7 +12,7 @@ module Auther
12
12
  end
13
13
 
14
14
  def self.version
15
- "7.1.0"
15
+ "8.0.0"
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Rails.application.config.auther_settings = {
4
- secret: ENV["AUTHER_SECRET"],
5
4
  accounts: [
6
5
  name: "admin",
7
6
  encrypted_login: ENV["AUTHER_ADMIN_LOGIN"],
8
7
  encrypted_password: ENV["AUTHER_ADMIN_PASSWORD"],
9
8
  paths: ["/admin"]
10
- ]
9
+ ],
10
+ secret: [ENV["AUTHER_SECRET"]].pack("H*")
11
11
  }
metadata CHANGED
@@ -1,14 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auther
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2017-02-26 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZicm9v
14
+ a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
15
+ aW8wHhcNMTYxMDE5MTY0NDEzWhcNMTcxMDE5MTY0NDEzWjBBMQ8wDQYDVQQDDAZi
16
+ cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
17
+ GRYCaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgryPL4/IbWDcL
18
+ fnqpnoJALqj+ega7hSsvvD8sac57HPNLeKcOmSafFiQLAnTmmE132ZlFc8kyZRVn
19
+ zmqSESowO5jd+ggFuy1ySqQJXhwgik04KedKRUjpIDZePrjw+M5UJT1qzKCKL2xI
20
+ nx5cOKP1fSWJ1RRu8JhaDeSloGtYMdw2c28wnKPNIsWDood4xhbLcY9IqeISft2e
21
+ oTAHTHandHbvt24X3/n67ceNjLBbsVZPXCC1C8C8ccjHjA4Tm2uiFoDwThMcPggg
22
+ 90H6fh0vLFcNAobdPEchbge8tWtfmMPz2+C4yklANn81GA+ANsBS1uwx6mxJoMQU
23
+ BNVp0aLvAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
24
+ BBRS85Rn1BaqeIONByw4t46DMDMzHDAfBgNVHREEGDAWgRRicm9va2VAYWxjaGVt
25
+ aXN0cy5pbzAfBgNVHRIEGDAWgRRicm9va2VAYWxjaGVtaXN0cy5pbzANBgkqhkiG
26
+ 9w0BAQUFAAOCAQEAZMb57Y4wdpbX8XxTukEO7VC1pndccUsxdbziGsAOiuHET3Aq
27
+ ygLvrfdYrN88/w+qxncW5bxbO3a6UGkuhIFUPM8zRSE/rh6bCcJljTJrExVt42eV
28
+ aYCb7WJNsx3eNXHn3uQodq3tD+lmNJzz2bFeT3smGSKEnALBjqorO/2mpDh4FJ3S
29
+ 4CcDYsJ1ywep8LDJDBBGdKz9moL+axryzpeTpgTT/fFYFzRzWrURPyDvPOikh9TX
30
+ n/LUZ1dKhIHzfKx1B4+TEIefArObGfkLIDM8+Dq1RX7TF1k81Men7iu4MgE9bYBn
31
+ 3dE+xI3FdB5gWcdWxdtgRCmWjtXeYYyb4z6NQQ==
32
+ -----END CERTIFICATE-----
33
+ date: 2017-08-19 00:00:00.000000000 Z
12
34
  dependencies:
13
35
  - !ruby/object:Gem::Dependency
14
36
  name: rails
@@ -52,34 +74,6 @@ dependencies:
52
74
  - - "~>"
53
75
  - !ruby/object:Gem::Version
54
76
  version: '5.0'
55
- - !ruby/object:Gem::Dependency
56
- name: bourbon
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '4.2'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '4.2'
69
- - !ruby/object:Gem::Dependency
70
- name: neat
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.8'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.8'
83
77
  - !ruby/object:Gem::Dependency
84
78
  name: rake
85
79
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +94,28 @@ dependencies:
100
94
  requirements:
101
95
  - - "~>"
102
96
  - !ruby/object:Gem::Version
103
- version: '9.0'
97
+ version: '10.2'
104
98
  type: :development
105
99
  prerelease: false
106
100
  version_requirements: !ruby/object:Gem::Requirement
107
101
  requirements:
108
102
  - - "~>"
109
103
  - !ruby/object:Gem::Version
110
- version: '9.0'
104
+ version: '10.2'
111
105
  - !ruby/object:Gem::Dependency
112
106
  name: pg
113
107
  requirement: !ruby/object:Gem::Requirement
114
108
  requirements:
115
109
  - - "~>"
116
110
  - !ruby/object:Gem::Version
117
- version: '0.19'
111
+ version: '0.21'
118
112
  type: :development
119
113
  prerelease: false
120
114
  version_requirements: !ruby/object:Gem::Requirement
121
115
  requirements:
122
116
  - - "~>"
123
117
  - !ruby/object:Gem::Version
124
- version: '0.19'
118
+ version: '0.21'
125
119
  - !ruby/object:Gem::Dependency
126
120
  name: pry
127
121
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +178,14 @@ dependencies:
184
178
  requirements:
185
179
  - - "~>"
186
180
  - !ruby/object:Gem::Version
187
- version: '2.0'
181
+ version: '2.1'
188
182
  type: :development
189
183
  prerelease: false
190
184
  version_requirements: !ruby/object:Gem::Requirement
191
185
  requirements:
192
186
  - - "~>"
193
187
  - !ruby/object:Gem::Version
194
- version: '2.0'
188
+ version: '2.1'
195
189
  - !ruby/object:Gem::Dependency
196
190
  name: hirb
197
191
  requirement: !ruby/object:Gem::Requirement
@@ -212,28 +206,28 @@ dependencies:
212
206
  requirements:
213
207
  - - "~>"
214
208
  - !ruby/object:Gem::Version
215
- version: '1.7'
209
+ version: '1.8'
216
210
  type: :development
217
211
  prerelease: false
218
212
  version_requirements: !ruby/object:Gem::Requirement
219
213
  requirements:
220
214
  - - "~>"
221
215
  - !ruby/object:Gem::Version
222
- version: '1.7'
216
+ version: '1.8'
223
217
  - !ruby/object:Gem::Dependency
224
218
  name: rspec-rails
225
219
  requirement: !ruby/object:Gem::Requirement
226
220
  requirements:
227
221
  - - "~>"
228
222
  - !ruby/object:Gem::Version
229
- version: '3.5'
223
+ version: '3.6'
230
224
  type: :development
231
225
  prerelease: false
232
226
  version_requirements: !ruby/object:Gem::Requirement
233
227
  requirements:
234
228
  - - "~>"
235
229
  - !ruby/object:Gem::Version
236
- version: '3.5'
230
+ version: '3.6'
237
231
  - !ruby/object:Gem::Dependency
238
232
  name: ammeter
239
233
  requirement: !ruby/object:Gem::Requirement
@@ -262,34 +256,48 @@ dependencies:
262
256
  - - "~>"
263
257
  - !ruby/object:Gem::Version
264
258
  version: '4.7'
259
+ - !ruby/object:Gem::Dependency
260
+ name: git-cop
261
+ requirement: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: '1.5'
266
+ type: :development
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: '1.5'
265
273
  - !ruby/object:Gem::Dependency
266
274
  name: reek
267
275
  requirement: !ruby/object:Gem::Requirement
268
276
  requirements:
269
277
  - - "~>"
270
278
  - !ruby/object:Gem::Version
271
- version: '4.5'
279
+ version: '4.7'
272
280
  type: :development
273
281
  prerelease: false
274
282
  version_requirements: !ruby/object:Gem::Requirement
275
283
  requirements:
276
284
  - - "~>"
277
285
  - !ruby/object:Gem::Version
278
- version: '4.5'
286
+ version: '4.7'
279
287
  - !ruby/object:Gem::Dependency
280
288
  name: rubocop
281
289
  requirement: !ruby/object:Gem::Requirement
282
290
  requirements:
283
291
  - - "~>"
284
292
  - !ruby/object:Gem::Version
285
- version: '0.47'
293
+ version: '0.49'
286
294
  type: :development
287
295
  prerelease: false
288
296
  version_requirements: !ruby/object:Gem::Requirement
289
297
  requirements:
290
298
  - - "~>"
291
299
  - !ruby/object:Gem::Version
292
- version: '0.47'
300
+ version: '0.49'
293
301
  - !ruby/object:Gem::Dependency
294
302
  name: codeclimate-test-reporter
295
303
  requirement: !ruby/object:Gem::Requirement
@@ -323,7 +331,6 @@ files:
323
331
  - app/presenters/auther/account.rb
324
332
  - app/views/auther/session/new.html.slim
325
333
  - app/views/layouts/auther/auth.html.slim
326
- - bin/rails
327
334
  - config/routes.rb
328
335
  - lib/auther.rb
329
336
  - lib/auther/authenticator.rb
@@ -336,12 +343,6 @@ files:
336
343
  - lib/auther/settings.rb
337
344
  - lib/generators/auther/install/install_generator.rb
338
345
  - lib/generators/auther/templates/config/initializers/auther.rb
339
- - vendor/assets/stylesheets/bitters/_base.scss
340
- - vendor/assets/stylesheets/bitters/_buttons.scss
341
- - vendor/assets/stylesheets/bitters/_forms.scss
342
- - vendor/assets/stylesheets/bitters/_grid-settings.scss
343
- - vendor/assets/stylesheets/bitters/_typography.scss
344
- - vendor/assets/stylesheets/bitters/_variables.scss
345
346
  homepage: https://github.com/bkuhlmann/auther
346
347
  licenses:
347
348
  - MIT
@@ -362,7 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
362
363
  version: '0'
363
364
  requirements: []
364
365
  rubyforge_project:
365
- rubygems_version: 2.6.10
366
+ rubygems_version: 2.6.12
366
367
  signing_key:
367
368
  specification_version: 4
368
369
  summary: Enhances Rails with multi-account, form-based, database-less, application-wide
@@ -0,0 +1,3 @@
1
+ `�����݉$H�ԇ��_=�=�Nzvv���D6�}3]�_�5
2
+ ��`�Xʋ:Y�$�7� ��TN�.0� .���ɭ�u45���[߫Z�FDf븗�@p,�M�`�]�nu*e���W��NИ���
3
+ �١�ޔ�J�M���ϔ��;�E��Ƶ�^��3�����Cɀ��W@d��ȧ�� >t~�ӟ�mT�6z"l�<�Ɗ����0�7��#��/�K��"Z�
data/bin/rails DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ENGINE_ROOT = File.expand_path("../..", __FILE__)
4
- ENGINE_PATH = File.expand_path("../../lib/auther/engine", __FILE__)
5
-
6
- require "rails/all"
7
- require "rails/engine/commands"
@@ -1,10 +0,0 @@
1
- // Bitters 1.1.0
2
- // http://bitters.bourbon.io
3
- // Copyright 2013-2015 thoughtbot, inc.
4
- // MIT License
5
-
6
- @import "variables";
7
- @import "grid-settings";
8
- @import "buttons";
9
- @import "forms";
10
- @import "typography";
@@ -1,35 +0,0 @@
1
- #{$all-buttons} {
2
- appearance: none;
3
- background-color: $action-color;
4
- border: 0;
5
- border-radius: $base-border-radius;
6
- color: #fff;
7
- cursor: pointer;
8
- display: inline-block;
9
- font-family: $base-font-family;
10
- font-size: $base-font-size;
11
- -webkit-font-smoothing: antialiased;
12
- font-weight: 600;
13
- line-height: 1;
14
- padding: $small-spacing $base-spacing;
15
- text-decoration: none;
16
- transition: background-color $base-duration $base-timing;
17
- user-select: none;
18
- vertical-align: middle;
19
- white-space: nowrap;
20
-
21
- &:hover,
22
- &:focus {
23
- background-color: shade($action-color, 20%);
24
- color: #fff;
25
- }
26
-
27
- &:disabled {
28
- cursor: not-allowed;
29
- opacity: 0.5;
30
-
31
- &:hover {
32
- background-color: $action-color;
33
- }
34
- }
35
- }
@@ -1,90 +0,0 @@
1
- fieldset {
2
- background-color: $secondary-background-color;
3
- border: $base-border;
4
- margin: 0 0 $small-spacing;
5
- padding: $base-spacing;
6
- }
7
-
8
- input,
9
- label,
10
- select {
11
- display: block;
12
- font-family: $base-font-family;
13
- font-size: $base-font-size;
14
- }
15
-
16
- label {
17
- font-weight: 600;
18
- margin-bottom: $small-spacing / 2;
19
-
20
- &.required::after {
21
- content: "*";
22
- }
23
-
24
- abbr {
25
- display: none;
26
- }
27
- }
28
-
29
- #{$all-text-inputs},
30
- select[multiple=multiple] {
31
- background-color: $base-background-color;
32
- border: $base-border;
33
- border-radius: $base-border-radius;
34
- box-shadow: $form-box-shadow;
35
- box-sizing: border-box;
36
- font-family: $base-font-family;
37
- font-size: $base-font-size;
38
- margin-bottom: $small-spacing;
39
- padding: $base-spacing / 3;
40
- transition: border-color $base-duration $base-timing;
41
- width: 100%;
42
-
43
- &:hover {
44
- border-color: shade($base-border-color, 20%);
45
- }
46
-
47
- &:focus {
48
- border-color: $action-color;
49
- box-shadow: $form-box-shadow-focus;
50
- outline: none;
51
- }
52
-
53
- &:disabled {
54
- background-color: shade($base-background-color, 5%);
55
- cursor: not-allowed;
56
-
57
- &:hover {
58
- border: $base-border;
59
- }
60
- }
61
- }
62
-
63
- textarea {
64
- resize: vertical;
65
- }
66
-
67
- input[type="search"] {
68
- appearance: none;
69
- }
70
-
71
- input[type="checkbox"],
72
- input[type="radio"] {
73
- display: inline;
74
- margin-right: $small-spacing / 2;
75
-
76
- + label {
77
- display: inline-block;
78
- }
79
- }
80
-
81
- input[type="file"] {
82
- margin-bottom: $small-spacing;
83
- width: 100%;
84
- }
85
-
86
- select {
87
- margin-bottom: $base-spacing;
88
- max-width: 100%;
89
- width: auto;
90
- }
@@ -1,14 +0,0 @@
1
- @import "neat-helpers"; // or "../neat/neat-helpers" when not in Rails
2
-
3
- // Neat Overrides
4
- // $column: 90px;
5
- // $gutter: 30px;
6
- // $grid-columns: 12;
7
- // $max-width: 1200px;
8
-
9
- // Neat Breakpoints
10
- $medium-screen: 600px;
11
- $large-screen: 900px;
12
-
13
- $medium-screen-up: new-breakpoint(min-width $medium-screen 4);
14
- $large-screen-up: new-breakpoint(min-width $large-screen 8);
@@ -1,49 +0,0 @@
1
- body {
2
- color: $base-font-color;
3
- font-family: $base-font-family;
4
- font-feature-settings: "kern", "liga", "pnum";
5
- font-size: $base-font-size;
6
- line-height: $base-line-height;
7
- }
8
-
9
- h1,
10
- h2,
11
- h3,
12
- h4,
13
- h5,
14
- h6 {
15
- font-family: $heading-font-family;
16
- font-size: $base-font-size;
17
- line-height: $heading-line-height;
18
- margin: 0 0 $small-spacing;
19
- }
20
-
21
- p {
22
- margin: 0 0 $small-spacing;
23
- }
24
-
25
- a {
26
- color: $action-color;
27
- text-decoration: none;
28
- transition: color $base-duration $base-timing;
29
-
30
- &:active,
31
- &:focus,
32
- &:hover {
33
- color: shade($action-color, 25%);
34
- }
35
- }
36
-
37
- hr {
38
- border-bottom: $base-border;
39
- border-left: 0;
40
- border-right: 0;
41
- border-top: 0;
42
- margin: $base-spacing 0;
43
- }
44
-
45
- img,
46
- picture {
47
- margin: 0;
48
- max-width: 100%;
49
- }
@@ -1,42 +0,0 @@
1
- // Typography
2
- $base-font-family: $helvetica;
3
- $heading-font-family: $base-font-family;
4
-
5
- // Font Sizes
6
- $base-font-size: 1em;
7
-
8
- // Line height
9
- $base-line-height: 1.5;
10
- $heading-line-height: 1.2;
11
-
12
- // Other Sizes
13
- $base-border-radius: 3px;
14
- $base-spacing: $base-line-height * 1em;
15
- $small-spacing: $base-spacing / 2;
16
- $base-z-index: 0;
17
-
18
- // Colors
19
- $blue: #477dca;
20
- $dark-gray: #333;
21
- $medium-gray: #999;
22
- $light-gray: #ddd;
23
-
24
- // Font Colors
25
- $base-font-color: $dark-gray;
26
- $action-color: $blue;
27
-
28
- // Border
29
- $base-border-color: $light-gray;
30
- $base-border: 1px solid $base-border-color;
31
-
32
- // Background Colors
33
- $base-background-color: #fff;
34
- $secondary-background-color: tint($base-border-color, 75%);
35
-
36
- // Forms
37
- $form-box-shadow: inset 0 1px 3px rgba(#000, 0.06);
38
- $form-box-shadow-focus: $form-box-shadow, 0 0 5px adjust-color($action-color, $lightness: -5%, $alpha: -0.3);
39
-
40
- // Animations
41
- $base-duration: 150ms;
42
- $base-timing: ease;