codeword 0.1.0 → 0.2.0.beta1

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
  SHA256:
3
- metadata.gz: a2a3032588df8a3dfcb5b5584785cdc9edf5558f2a47216dc70e32a74c083720
4
- data.tar.gz: 54dcd07135dd8fe40e1a09091894a7c9baffb9c91d30e0bb4e12f0c18d3686ff
3
+ metadata.gz: 20a9e39af2e13a2e11bbc41e27257d98c9c2e35b1a4b63580be50456aec8b8b7
4
+ data.tar.gz: ae29b06372954d34efb4aec5a71d76fda264ab346f8d2c1ca63935991ead2c77
5
5
  SHA512:
6
- metadata.gz: 811c21657b493979a64f641e3cb042bae1aec61312d7a3a96e45d7ac17614fcb0fa438f24cb8d7f75c75ef75279082018cb8b9bb97842c0542d2568693994bab
7
- data.tar.gz: b3066b27282c5d060c981aa25f983f72fbe51144c31b7aee85921009696c66914976f404c3b6371fc7d1eef39e2e8f081bd87e356c3bf89a6c3bf71c6b35f283
6
+ metadata.gz: 6466641140f9f984745286ccd9d172aaf98f5cedbbbea2b2788f87c8ca72ee1596eabcbba4c1f8507c748290c8febe6c8a879b7902a27e57944060aee0023815
7
+ data.tar.gz: f6d0701f7c961ec8274356aa4c2b38557ea18ea205ef509b0c69604e6c21ce46c67ea64f341f33e613a7eea2c848e9853fe4f852ea2cd58656d3ef07cc245ba6
data/.gitignore CHANGED
@@ -7,3 +7,6 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /Gemfile.lock
10
+
11
+ # macOS
12
+ .DS_Store
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.3
1
+ 3.3.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ ## [Unreleased]
2
+
3
+ - BREAKING: Deprecate Rails secrets in favor of Rails credentials
4
+ - BREAKING: Drop support for Rails < 6.0
5
+
6
+ ## [0.1.1] - 2021-12-17
7
+
8
+ - Fix unlocks
9
+ - Refactor CodewordController
10
+
11
+ ## [0.1.0] - 2021-12-17
12
+
13
+ - Initial release
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Codeword
2
2
 
3
- A simple gem to more elegantly place a staging server or other in-progress rails application behind a basic codeword. It’s easy to implement, share with clients/collaborators, and more beautiful than the typical password-protection sheet.
3
+ A simple gem to more elegantly place a staging server or other in-progress Ruby on Rails application behind a basic codeword. It’s easy to implement, share with clients/collaborators, and more beautiful than the typical password-protection sheet.
4
+
5
+ ![Screenshot](./screenshot.png)
4
6
 
5
7
  ## Installation
6
8
 
@@ -32,14 +34,14 @@ If you think you might need a hint:
32
34
  ENV['CODEWORD_HINT'] = 'Something that you do not tell everyone.'
33
35
  ```
34
36
 
35
- If you’re using Rails >= 4.1 or Rails >= 5.2, you can add your Codeword Codeword via Rails Secrets or Rails Credentials functionality in your `secrets.yml` or `credentials.yml.enc` file, respectively:
37
+ You can add your codeword via Rails credentials in your `credentials.yml.enc` file (`$ bin/rails credentials:edit`):
36
38
 
37
39
  ```yml
38
40
  codeword: 'love'
39
41
  codeword_hint: 'Pepé Le Pew'
40
42
  ```
41
43
 
42
- Alternately, Rails Credentials in >= 5.2 may be organized under the `codeword` namespace:
44
+ Alternately, credentials in Rails >= 5.2 may be organized under the `codeword` namespace:
43
45
 
44
46
  ```yml
45
47
  codeword:
@@ -47,13 +49,6 @@ codeword:
47
49
  hint: 'Pepé Le Pew'
48
50
  ```
49
51
 
50
- If you’re using [Figaro](https://github.com/laserlemon/figaro), set your Codeword codeword and hint (optional) in your application.yml file:
51
-
52
- ```yml
53
- codeword: 'love'
54
- codeword_hint: 'Pepé Le Pew'
55
- ```
56
-
57
52
  **Codewords are not case-sensitive, by design. Keep it simple.**
58
53
 
59
54
  ## Advanced Usage
@@ -94,4 +89,12 @@ cookie_lifetime_in_weeks: 4
94
89
 
95
90
  ### Design Customization
96
91
 
97
- If you would like to change the content or design of the codeword page, you can create the directories `app/views/layouts/codeword` and `app/views/codeword/codeword` and populate them with the default content from [here](https://github.com/gblakeman/codeword/tree/master/app/views), and then customize as desired.
92
+ If you would like to change the content or design of the codeword page, you can create the directories `app/views/layouts/codeword` and `app/views/codeword/codeword` and populate them with the default content from [here](https://github.com/dankimio/codeword/tree/main/app/views), and then customize as desired.
93
+
94
+ ## Development
95
+
96
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
97
+
98
+ ## Acknowledgements
99
+
100
+ Codeword is a fork of [lockup](https://github.com/interdiscipline/lockup).
@@ -2,38 +2,23 @@ module Codeword
2
2
  class CodewordController < Codeword::ApplicationController
3
3
  CRAWLER_REGEX = /crawl|googlebot|slurp|spider|bingbot|tracker|click|parser|spider/
4
4
 
5
- if respond_to?(:skip_before_action)
6
- skip_before_action :check_for_codeword
7
- else
8
- skip_before_filter :check_for_codeword
9
- end
5
+ skip_before_action :check_for_codeword
10
6
 
11
7
  def unlock
12
- if params[:codeword].present?
13
- user_agent = request.env['HTTP_USER_AGENT'].presence
14
- if user_agent && user_agent.downcase.match(CRAWLER_REGEX)
15
- head :ok
16
- return
17
- end
8
+ user_agent = request.env['HTTP_USER_AGENT'].presence
9
+ if user_agent&.downcase&.match(CRAWLER_REGEX)
10
+ head :ok
11
+ return
12
+ end
18
13
 
14
+ if params[:codeword].present?
19
15
  @codeword = params[:codeword].to_s.downcase
20
16
  @return_to = params[:return_to]
21
- if @codeword == codeword.to_s.downcase
17
+ if @codeword == codeword_code.to_s.downcase
22
18
  set_cookie
23
19
  run_redirect
24
- end
25
- elsif request.post?
26
- if params[:codeword].present? && params[:codeword].respond_to?(:'[]')
27
- @codeword = params[:codeword][:codeword].to_s.downcase
28
- @return_to = params[:codeword][:return_to]
29
- if @codeword == codeword.to_s.downcase
30
- set_cookie
31
- run_redirect
32
- else
33
- @wrong = true
34
- end
35
20
  else
36
- head :ok
21
+ @wrong = true
37
22
  end
38
23
  else
39
24
  respond_to :html
@@ -3,11 +3,7 @@
3
3
  module Codeword
4
4
  module CodewordHelper
5
5
  def codeword_hint
6
- @codeword_hint ||=
7
- ENV['CODEWORD_HINT'] ||
8
- ENV['codeword_hint'] ||
9
- ::Codeword.from_config(:hint, :secrets) ||
10
- ::Codeword.from_config(:hint)
6
+ @codeword_hint ||= ENV['CODEWORD_HINT'] || ENV['codeword_hint'] || ::Codeword.from_config(:hint)
11
7
  end
12
8
  end
13
9
  end
@@ -9,17 +9,17 @@
9
9
  </div>
10
10
  <% end %>
11
11
 
12
- <%= form_for :codeword, url: { action: 'unlock' } do |form| %>
12
+ <%= form_tag '/codeword/unlock' do %>
13
13
  <% if params[:return_to].present? %>
14
- <%= form.hidden_field "return_to", value: params[:return_to] %>
14
+ <%= hidden_field_tag 'return_to', params[:return_to] %>
15
15
  <% elsif @return_to.present? %>
16
- <%= form.hidden_field "return_to", value: @return_to %>
16
+ <%= hidden_field_tag 'return_to', @return_to %>
17
17
  <% end %>
18
18
 
19
19
  <% unless @wrong == true %>
20
- <%= form.password_field :codeword, placeholder: "Code word", autofocus: true, required: true %>
20
+ <%= password_field_tag 'codeword', nil, placeholder: "Code word", autofocus: true, required: true %>
21
21
  <% else %>
22
- <%= form.password_field :codeword, value: @codeword, class: 'nope', autofocus: true, required: true %>
22
+ <%= password_field_tag 'codeword', @codeword, class: 'nope', autofocus: true, required: true %>
23
23
  <% end %>
24
24
 
25
25
  <% if codeword_hint %>
data/codeword.gemspec CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
21
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
22
  end
23
23
 
24
- spec.add_dependency 'rails', '>= 6'
24
+ spec.add_dependency 'rails', '>= 6.1'
25
25
 
26
26
  spec.add_development_dependency 'capybara', '~> 2.9'
27
27
  spec.add_development_dependency 'debug'
28
28
  spec.add_development_dependency 'launchy', '~> 2.4'
29
- spec.add_development_dependency 'rspec-rails', '~> 4.0'
29
+ spec.add_development_dependency 'rspec-rails', '~> 6.0'
30
30
  end
@@ -2,12 +2,6 @@ module Codeword
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace Codeword
4
4
 
5
- config.generators do |g|
6
- g.test_framework :rspec, fixture: false
7
- g.assets false
8
- g.helper false
9
- end
10
-
11
5
  initializer 'codeword.app_controller' do |_app|
12
6
  ActiveSupport.on_load(:action_controller) { include Codeword }
13
7
  end
@@ -1,3 +1,3 @@
1
1
  module Codeword
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0.beta1'.freeze
3
3
  end
data/lib/codeword.rb CHANGED
@@ -6,17 +6,11 @@ module Codeword
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- if respond_to?(:before_action)
10
- before_action :check_for_codeword, except: ['unlock']
11
- else
12
- before_filter :check_for_codeword, except: ['unlock']
13
- end
9
+ before_action :check_for_codeword, except: ['unlock']
14
10
  end
15
11
 
16
- def self.from_config(setting, secrets_or_credentials = :credentials)
17
- return unless Rails.application.respond_to?(secrets_or_credentials)
18
-
19
- store = Rails.application.public_send(secrets_or_credentials)
12
+ def self.from_config(setting)
13
+ store = Rails.application.credentials
20
14
 
21
15
  store.codeword.respond_to?(:fetch) &&
22
16
  store.codeword.fetch(setting, store.public_send("codeword_#{setting}")) ||
@@ -39,21 +33,16 @@ module Codeword
39
33
  @cookie_lifetime ||=
40
34
  ENV['COOKIE_LIFETIME_IN_WEEKS'] ||
41
35
  ENV['cookie_lifetime_in_weeks'] ||
42
- Codeword.from_config(:cookie_lifetime_in_weeks, :secrets) ||
43
36
  Codeword.from_config(:cookie_lifetime_in_weeks)
44
37
  end
45
38
 
46
39
  def codeword_code
47
- @codeword ||=
48
- ENV['CODEWORD'] ||
49
- ENV['codeword'] ||
50
- Codeword.from_config(:codeword, :secrets) ||
51
- Codeword.from_config(:codeword)
40
+ @codeword_code ||= ENV['CODEWORD'] || ENV['codeword'] || Codeword.from_config(:codeword)
52
41
  end
53
42
 
54
43
  def codeword_cookie_lifetime
55
44
  seconds = (cookie_lifetime.to_f * 1.week).to_i
56
- if seconds > 0
45
+ if seconds.positive?
57
46
  seconds
58
47
  else
59
48
  5.years
data/screenshot.png ADDED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codeword
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Kim
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-12-17 00:00:00.000000000 Z
12
+ date: 2024-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '6'
20
+ version: '6.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '6'
27
+ version: '6.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: capybara
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '4.0'
76
+ version: '6.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '4.0'
83
+ version: '6.0'
84
84
  description: A simple gem to more elegantly place a staging server or other in-progress
85
85
  application behind a basic codeword. It’s easy to implement, share with clients/collaborators,
86
86
  and more beautiful than the typical password-protection sheet.
@@ -92,6 +92,7 @@ extra_rdoc_files: []
92
92
  files:
93
93
  - ".gitignore"
94
94
  - ".ruby-version"
95
+ - CHANGELOG.md
95
96
  - Gemfile
96
97
  - LICENSE.txt
97
98
  - README.md
@@ -109,6 +110,7 @@ files:
109
110
  - lib/codeword.rb
110
111
  - lib/codeword/engine.rb
111
112
  - lib/codeword/version.rb
113
+ - screenshot.png
112
114
  - script/rails
113
115
  homepage: https://github.com/dankimio/codeword
114
116
  licenses:
@@ -132,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
134
  - !ruby/object:Gem::Version
133
135
  version: '0'
134
136
  requirements: []
135
- rubygems_version: 3.2.32
137
+ rubygems_version: 3.5.15
136
138
  signing_key:
137
139
  specification_version: 4
138
140
  summary: Lock staging servers from search engines and prying eyespec.