jekyll-auth 2.0.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b2bc3f1b5a01a023ce6a06707d67be186171eb2c
4
- data.tar.gz: 944440d4dc8586bb5ce652bfcae1d98135169411
3
+ metadata.gz: 5252fb3ba4db62cb22f5f9949f54a2e0612ed060
4
+ data.tar.gz: ae51f402692073b5b79942f62af6885533bf41fc
5
5
  SHA512:
6
- metadata.gz: 035f53918722a1a28072452343193a39269dab8785e0592965cce0b24c099119fd2518c2f4fce6de27225d19254b20484c8aa337a181e4da85313ef7f33b6ba7
7
- data.tar.gz: 975a8e9ffb1a8c64aa6d2ba2fd30bdfe29dc9dcdf73ade840f5e882ac9f519b0a135e561438245ccb8bad7b9ebb4558e92c429a34c223ff15421921373657269
6
+ metadata.gz: c85daf40909c0eca989d2c468fd68edc67d4fea09b197f64dd06194f9bfb6a045849e8766720427ba683023b80ba58e154de8d9952c2a65cd3054640e13291d8
7
+ data.tar.gz: 1409e332aca6db366fa2dc1c4c8a00aea75e5dbd38f78800b21eb78f4c71ffe64d94790f8b5903758c427ba7de188db89bd2f8b1898f9c0165989d3f423e57c3
@@ -0,0 +1,20 @@
1
+ inherit_gem:
2
+ jekyll: .rubocop.yml
3
+
4
+ Style/Documentation:
5
+ Enabled: false
6
+
7
+ Metrics/MethodLength:
8
+ Enabled: false
9
+
10
+ Metrics/LineLength:
11
+ Enabled: false
12
+
13
+ Style/FileName:
14
+ Enabled: false
15
+
16
+ Metrics/BlockLength:
17
+ Enabled: false
18
+
19
+ Style/DoubleNegation:
20
+ Enabled: false
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
data/README.md CHANGED
@@ -23,21 +23,21 @@ But what if you only want to share that site with a select number of people? Bef
23
23
 
24
24
  1. Navigate to [the GitHub app registration page](https://github.com/settings/applications/new)
25
25
  2. Give your app a name
26
- 3. Tell GitHub the URL you want the app to eventually live at. If using a free Heroku account, this will be something like http://my-site.herokuapp.com
27
- 4. Specify the callback URL; should be like this: https://my-site.herokuapp.com/auth/github/callback; note that this is **https**, not http.
26
+ 3. Tell GitHub the URL you want the app to eventually live at. If using a free Heroku account, this will be something like <http://my-site.herokuapp.com>
27
+ 4. Specify the callback URL; should be like this: <https://my-site.herokuapp.com/auth/github/callback>; note that this is **https**, not http.
28
28
  5. Hit Save, but leave the page open, you'll need some of the information in a moment
29
29
 
30
- Remember the 'my-site' part for later on when using `heroku create`. Also, my-site is often called 'app-name' in Heroku documenation.
30
+ Remember the 'my-site' part for later on when using `heroku create`. Also, my-site is often called 'app-name' in Heroku documentation.
31
31
 
32
32
  ### Add Jekyll Auth to your site
33
33
 
34
- 1. Within your new site repository or orphaned github [branch](https://help.github.com/articles/creating-project-pages-manually/) (the branch could be named anything except 'gh-pages' since this would then be public on github!), add `gem 'jekyll-auth'` to your `Gemfile` or if you don't already have a `Gemfile`, create a file called `Gemfile` in the root of your site's repository with the following content:
34
+ 1. Within your new site repository or orphaned github [branch](https://help.github.com/articles/creating-project-pages-manually/) (the branch could be named anything except 'gh-pages' since this would then be public on GitHub!), add `gem 'jekyll-auth'` to your `Gemfile` or if you don't already have a `Gemfile`, create a file called `Gemfile` in the root of your site's repository with the following content:
35
35
 
36
- ```ruby
37
- source "https://rubygems.org"
36
+ ```ruby
37
+ source "https://rubygems.org"
38
38
 
39
- gem 'jekyll-auth'
40
- ```
39
+ gem 'jekyll-auth'
40
+ ```
41
41
 
42
42
  2. `cd` into your project's directory and run `bundle install`. If you get an error using `bundle install`, see Troubleshooting below.
43
43
 
@@ -55,20 +55,20 @@ Run `bundle exec jekyll-auth setup --client_id XXX --client_secret XXX --org_nam
55
55
 
56
56
  1. You may need to add and commit the files generated by `jekyll-auth new` to Git before continuing
57
57
  2. Make sure you have [the Heroku toolbelt](https://toolbelt.heroku.com/) installed
58
- 3. Run `heroku create my-site` from your site's directory; make sure my-site matches what you specified in the Githup application registration above.
58
+ 3. Run `heroku create my-site` from your site's directory; make sure my-site matches what you specified in the GitHub application registration above.
59
59
  4. `heroku config:set GITHUB_CLIENT_ID=XXX GITHUB_CLIENT_SECRET=XXX GITHUB_ORG_NAME=XXX` (or `GITHUB_TEAM_ID`)
60
- 5. `git push heroku`, or if you are maintaining the site in an orphaned branch of your github repo (say 'heroku-pages'), do `git push heroku heroku-pages:master`
60
+ 5. `git push heroku`, or if you are maintaining the site in an orphaned branch of your GitHub repo (say 'heroku-pages'), do `git push heroku heroku-pages:master`
61
61
  6. `heroku open` to open the site in your browser
62
62
 
63
- #### Find the organization ID (needed to find team ID)
63
+ #### Find the Organization ID (needed to find Team ID)
64
64
 
65
- If you need to find an organization's ID, you can use the following curl command:
65
+ If you need to find an organization's ID, you can use the following cURL command:
66
66
 
67
67
  ```
68
68
  curl https://api.github.com/orgs/{org_name}
69
69
  ```
70
70
 
71
- #### Finding the team ID
71
+ #### Finding the Team ID
72
72
 
73
73
  If you need help finding a team's numeric ID, you can use the `jekyll-auth team_id` command.
74
74
 
@@ -78,13 +78,13 @@ For example, to find the team ID for @jekyll/maintainers you'd run the command:
78
78
  jekyll-auth team_id --org jekyll --team maintainers
79
79
  ```
80
80
 
81
- You'll want to add a [personal access token](https://github.com/settings/tokens/new) to your `.env` file so that Jekyll-Auth can make the necessary API request, but the command will run you through the process if you dont.
81
+ You'll want to add a [personal access token](https://github.com/settings/tokens/new) to your `.env` file so that Jekyll-Auth can make the necessary API request, but the command will run you through the process if you do not provide this.
82
82
 
83
83
  ## Configuration
84
84
 
85
85
  ### Whitelisting
86
86
 
87
- Don't want to require authentication for every part of your site? Fine! Add a whitelist to your Jekyll's *_config.yml_* file:
87
+ Don't want to require authentication for every part of your site? Fine! Add a whitelist to your Jekyll's **config.yml** file:
88
88
 
89
89
  ```yaml
90
90
  jekyll_auth:
@@ -94,7 +94,7 @@ jekyll_auth:
94
94
 
95
95
  `jekyll_auth.whitelist` takes an array of regular expressions as strings. The default auth behavior checks (and blocks) against root (`/`). Any path defined in the whitelist won't require authentication on your site.
96
96
 
97
- What if you want to go the other way, and unauthenticate the entire site _except_ for certain portions? You can define some regex magic for that:
97
+ What if you want to go the other way, and unauthenticate the entire site *except* for certain portions? You can define some regex magic for that:
98
98
 
99
99
  ```yaml
100
100
  jekyll_auth:
@@ -123,7 +123,7 @@ Want to run it locally?
123
123
 
124
124
  ### Without authentication
125
125
 
126
- Just run `jekyll serve` as you would normally
126
+ Just run `jekyll serve` as you would normally.
127
127
 
128
128
  ### With authentication
129
129
 
@@ -132,7 +132,7 @@ Just run `jekyll serve` as you would normally
132
132
  3. `export GITHUB_ORG_NAME=[org name]` or `export GITHUB_TEAM_ID=[team id]` or `export GITHUB_TEAM_IDS=1234,5678`
133
133
  4. `jekyll-auth serve`
134
134
 
135
- *Pro-tip #1:* For sanity sake, and to avoid problems with your callback URL, you may want to have two apps, one with a local oauth callback, and one for production if you're going to be testing auth locally.
135
+ *Pro-tip #1:* For sanity's sake, and to avoid problems with your callback URL, you may want to have two apps, one with a local Oauth callback, and one for production if you're going to be testing auth locally.
136
136
 
137
137
  *Pro-tip #2*: Jekyll Auth supports [dotenv](https://github.com/bkeepers/dotenv) out of the box. You can create a `.env` file in the root of site and add your configuration variables there. It's ignored by `.gitignore` if you use `jekyll-auth new`, but be sure not to accidentally commit your `.env` file. Here's what your `.env` file might look like:
138
138
 
@@ -146,11 +146,11 @@ GITHUB_TEAM_ID=12345
146
146
 
147
147
  Every time you push to Heroku, we take advantage of the fact that Heroku automatically runs the `rake assets:precompile` command (normally used for Rails sites) to build our Jekyll site and store it statically, just like GitHub pages would.
148
148
 
149
- Anytime a request comes in for a page, we run it through [Sinatra](http://www.sinatrarb.com/) (using the `_site` folder as the static file folder, just as `public` would be normally), and authenticate it using [sinatra_auth_github](https://github.com/atmos/sinatra_auth_github).
149
+ Anytime a request comes in for a page, we run it through [Sinatra](http://www.sinatrarb.com/) (using the `_site` folder as the static file folder, just as `public` would be normally), and authenticate it using [sinatra\_auth\_github](https://github.com/atmos/sinatra_auth_github).
150
150
 
151
151
  If they're in the org, they get the page. Otherwise, all they ever get is [the bouncer](http://octodex.github.com/bouncer/).
152
152
 
153
- ## Upgrading from Jekyll Auth < 0.1.0
153
+ ## Upgrading from Jekyll Auth &lt; 0.1.0
154
154
 
155
155
  1. `cd` to your project directory
156
156
  2. `rm config.ru`
@@ -163,6 +163,7 @@ If they're in the org, they get the page. Otherwise, all they ever get is [the b
163
163
 
164
164
  * **ERROR: YOUR SITE COULD NOT BE BUILT** during install, either locally or on Heroku. You likely need to add `exclude: [vendor]` to `_config.yml` in your branch's root directory (create the file if it does not exist already). If you still have problems on the *local* install, you may have better luck using `bundle install --deployment`, but be sure to add the resulting 'vendor' directory to .gitignore. For completeness, the full error may look something like this:
165
165
 
166
+
166
167
  ```
167
168
  remote: Configuration file: none
168
169
  remote: ERROR: YOUR SITE COULD NOT BE BUILT:
@@ -170,10 +171,9 @@ remote: ------------------------------------
170
171
  remote: Invalid date '0000-00-00': Post '/vendor/bundle/ruby/2.0.0/gems/jekyll-2.5.3/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb' does not have a valid date in the filename.
171
172
  ```
172
173
 
173
- * **Pushing to heroku**. If you are working from a new github-cloned repo (where you have not run `heroku create`), you may also want to push to heroku. You do not add the remote in the standard way using git, but instead do this:
174
+ * **Pushing to heroku**. If you are working from a new GitHub-cloned repo (where you have not run `heroku create`), you may also want to push to Heroku. Instead of adding the remote in the standard way with Git, do this:
175
+
174
176
 
175
177
  ```
176
178
  heroku git:remote -a my-site
177
179
  ```
178
-
179
-
data/Rakefile CHANGED
@@ -4,17 +4,17 @@ require 'bundler'
4
4
  require 'fileutils'
5
5
  require 'dotenv'
6
6
 
7
- task :default => [:spec]
7
+ task default: [:spec]
8
8
 
9
9
  task :site do
10
10
  Dotenv.load
11
- FileUtils.chdir "templates"
11
+ FileUtils.chdir 'templates'
12
12
  `bundle exec jekyll-auth`
13
13
  end
14
14
 
15
15
  require 'rspec/core/rake_task'
16
- desc "Run specs"
16
+ desc 'Run specs'
17
17
  RSpec::Core::RakeTask.new do |t|
18
18
  t.pattern = 'spec/**/*_spec.rb'
19
- t.rspec_opts = ["--order", "rand", "--color"]
19
+ t.rspec_opts = ['--order', 'rand', '--color']
20
20
  end
@@ -1,20 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
2
  # Command-line interface for jekyll-auth
3
3
 
4
- require 'mercenary'
5
- require 'jekyll-auth'
6
- require 'open3'
4
+ require "mercenary"
5
+ require "jekyll-auth"
6
+ require "open3"
7
7
 
8
8
  Mercenary.program("jekyll-auth") do |p|
9
- p.version JekyllAuth::VERSION
9
+ p.version JekyllAuth::VERSION
10
10
  p.description "A simple way to use Github OAuth to serve a protected jekyll site to your GitHub organization"
11
- p.syntax 'jekyll-auth <subcommand> options'
11
+ p.syntax "jekyll-auth <subcommand> options"
12
12
 
13
13
  p.command(:new) do |c|
14
- c.syntax 'new'
14
+ c.syntax "new"
15
15
  c.description "Initialize an existing Jekyll site as a Jekyll Auth site"
16
- c.action do |args, options|
17
-
16
+ c.action do |_args, _options|
18
17
  JekyllAuth::Commands.copy_templates
19
18
 
20
19
  if JekyllAuth::Commands.changed?
@@ -29,23 +28,22 @@ Mercenary.program("jekyll-auth") do |p|
29
28
  # Called by Rake task, to allow the gem
30
29
  # to add functionality here in the future
31
30
  p.command(:build) do |c|
32
- c.syntax 'build'
31
+ c.syntax "build"
33
32
  c.description "Build the Jekyll site"
34
- c.action do |args, options|
35
- require 'jekyll'
33
+ c.action do |_args, options|
34
+ require "jekyll"
36
35
  Jekyll::Commands::Build.process(options)
37
36
  end
38
37
  end
39
38
 
40
39
  p.command(:team_id) do |c|
41
- c.syntax 'team_id --org <ORG> --team <TEAM>'
40
+ c.syntax "team_id --org <ORG> --team <TEAM>"
42
41
  c.description "Retrieve a team's ID"
43
- c.option 'org', '--org <ORG>', 'The GitHub Organization, e.g., "jekyll"'
44
- c.option 'team', '--team <TEAM>', 'The team name, e.g., "maintainers"'
45
-
46
- c.action do |args, options|
42
+ c.option "org", "--org <ORG>", 'The GitHub Organization, e.g., "jekyll"'
43
+ c.option "team", "--team <TEAM>", 'The team name, e.g., "maintainers"'
47
44
 
48
- if !JekyllAuth::Commands.env_var_set? "GITHUB_TOKEN"
45
+ c.action do |_args, options|
46
+ unless JekyllAuth::Commands.env_var_set? "GITHUB_TOKEN"
49
47
  puts "You'll need to go to https://github.com/settings/tokens/new and create a personal access token".red
50
48
  puts "Once you've got the token, prefix the jekyll-auth command with GITHUB_TOKEN=[YOUR TOKEN]".red
51
49
  puts "You can also add it to a `.env` file in this directory".red
@@ -74,10 +72,12 @@ Mercenary.program("jekyll-auth") do |p|
74
72
  p.command(:serve) do |c|
75
73
  c.syntax "serve"
76
74
  c.description "Run Jekyll Auth site locally"
77
- c.action do |args, options|
75
+ c.option "host", "--host <HOST>", "Listen at the given hostname, e.g., 127.0.0.1"
76
+ c.option "port", "--port <PORT>", "Listen on the given port, e.g., 4000"
78
77
 
78
+ c.action do |_args, options|
79
79
  # Ensure environmental variables are set
80
- unless ["GITHUB_CLIENT_ID", "GITHUB_CLIENT_SECRET"].all? { |v| JekyllAuth::Commands.env_var_set?(v) }
80
+ unless %w(GITHUB_CLIENT_ID GITHUB_CLIENT_SECRET).all? { |v| JekyllAuth::Commands.env_var_set?(v) }
81
81
  puts "Whoops. Looks like you forgot to tell Jekyll Auth about your app".red
82
82
  puts "Be sure to run export GITHUB_CLIENT_ID=[client id], export GITHUB_CLIENT_SECRET=[client secret], and export GITHUB_ORG_NAME=[org name] (or GITHUB_TEAM_ID)".red
83
83
  puts "See the readme for more information on where to find these".red
@@ -87,10 +87,12 @@ Mercenary.program("jekyll-auth") do |p|
87
87
  # build site
88
88
  p.go ["build"]
89
89
 
90
+ host = options["host"] || "0.0.0.0"
91
+ port = options["port"] || "4000"
92
+
90
93
  puts "Spinning up the server with authentication. Use CTRL-C to stop."
91
94
  puts "To preview the site without authentication, use the `jekyll serve` command"
92
- JekyllAuth::Commands.execute_command "bundle", "exec", "rackup", "-p", "4000"
93
-
95
+ JekyllAuth::Commands.execute_command "bundle", "exec", "rackup", "-o", host, "-p", port
94
96
  end
95
97
  end
96
98
 
@@ -101,8 +103,7 @@ Mercenary.program("jekyll-auth") do |p|
101
103
  c.option "client_secret", "--client_secret", "Your oauth app client secret"
102
104
  c.option "team_id", "--team_id", "The team to authenticate against"
103
105
  c.option "org_name", "--org_name", "An organization to authenticate against"
104
- c.action do |args, options|
105
-
106
+ c.action do |_args, options|
106
107
  if find_executable("heroku").nil?
107
108
  say "Looks like we're missing the Heroku client. Let's see if we can't install it..."
108
109
  JekyllAuth::Commands.execute_command "wget", "-qO-", "https://toolbelt.heroku.com/install.sh", "|", "sh"
@@ -1,31 +1,33 @@
1
1
  require './lib/jekyll_auth/version'
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.name = "jekyll-auth"
4
+ s.name = 'jekyll-auth'
5
5
  s.version = JekyllAuth::VERSION
6
- s.summary = "A simple way to use GitHub OAuth to serve a protected jekyll site to your GitHub organization"
7
- s.description = "A simple way to use GitHub OAuth to serve a protected jekyll site to your GitHub organization."
8
- s.authors = "Ben Balter"
9
- s.email = "ben@balter.com"
10
- s.homepage = "https://github.com/benbalter/jekyll-auth"
11
- s.license = "MIT"
6
+ s.summary = 'A simple way to use GitHub OAuth to serve a protected jekyll site to your GitHub organization'
7
+ s.description = 'A simple way to use GitHub OAuth to serve a protected jekyll site to your GitHub organization.'
8
+ s.authors = 'Ben Balter'
9
+ s.email = 'ben@balter.com'
10
+ s.homepage = 'https://github.com/benbalter/jekyll-auth'
11
+ s.license = 'MIT'
12
12
  s.files = `git ls-files`.split("\n")
13
13
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
- s.require_paths = ["lib"]
14
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
15
+ s.require_paths = ['lib']
16
16
 
17
- s.add_dependency "jekyll", ">= 2.0"
18
- s.add_dependency "sinatra-index", "~> 0.0"
19
- s.add_dependency "sinatra_auth_github", "~> 1.1"
20
- s.add_dependency "rack", "~> 1.6"
21
- s.add_dependency "dotenv", "~> 2.0"
22
- s.add_dependency "rake", "~> 10.3"
23
- s.add_dependency "rack-ssl-enforcer", "~> 0.2"
24
- s.add_dependency "mercenary", "~> 0.3"
25
- s.add_dependency 'safe_yaml', "~> 1.0"
26
- s.add_dependency "colorator", "~> 0.1"
27
- s.add_development_dependency "rspec", "~> 3.1"
28
- s.add_development_dependency "rack-test", "~> 0.6"
29
- s.add_development_dependency "webmock", "~> 1.2 "
30
- s.add_development_dependency "pry", "~> 0.10"
17
+ s.add_dependency 'jekyll', '~> 3.0'
18
+ s.add_dependency 'sinatra-index', '~> 0.0'
19
+ s.add_dependency 'sinatra_auth_github', '~> 1.1'
20
+ s.add_dependency 'rack', '~> 1.6'
21
+ s.add_dependency 'dotenv', '~> 2.0'
22
+ s.add_dependency 'rake', '~> 10.3'
23
+ s.add_dependency 'rack-ssl-enforcer', '~> 0.2'
24
+ s.add_dependency 'mercenary', '~> 0.3'
25
+ s.add_dependency 'safe_yaml', '~> 1.0'
26
+ s.add_dependency 'colorator', '~> 1.0'
27
+ s.add_dependency 'activesupport', '~> 4.0'
28
+ s.add_development_dependency 'rspec', '~> 3.1'
29
+ s.add_development_dependency 'rack-test', '~> 0.6'
30
+ s.add_development_dependency 'webmock', '~> 1.2 '
31
+ s.add_development_dependency 'pry', '~> 0.10'
32
+ s.add_development_dependency 'rubocop', '~> 0.35'
31
33
  end
@@ -1,16 +1,16 @@
1
- require 'sinatra-index'
2
- require 'sinatra_auth_github'
3
- require 'dotenv'
4
- require 'safe_yaml'
5
- require 'colorator'
6
- require 'mkmf'
7
- require_relative 'jekyll_auth/version'
8
- require_relative 'jekyll_auth/helpers'
9
- require_relative 'jekyll_auth/config'
10
- require_relative 'jekyll_auth/auth_site'
11
- require_relative 'jekyll_auth/jekyll_site'
12
- require_relative 'jekyll_auth/config_error'
13
- require_relative 'jekyll_auth/commands'
1
+ require "sinatra-index"
2
+ require "sinatra_auth_github"
3
+ require "dotenv"
4
+ require "safe_yaml"
5
+ require "colorator"
6
+ require "mkmf"
7
+ require_relative "jekyll_auth/version"
8
+ require_relative "jekyll_auth/helpers"
9
+ require_relative "jekyll_auth/config"
10
+ require_relative "jekyll_auth/auth_site"
11
+ require_relative "jekyll_auth/jekyll_site"
12
+ require_relative "jekyll_auth/config_error"
13
+ require_relative "jekyll_auth/commands"
14
14
 
15
15
  Dotenv.load
16
16
 
@@ -1,21 +1,16 @@
1
1
  class JekyllAuth
2
2
  class AuthSite < Sinatra::Base
3
-
4
3
  configure :production do
5
- require 'rack-ssl-enforcer'
4
+ require "rack-ssl-enforcer"
6
5
  use Rack::SslEnforcer if JekyllAuth.ssl?
7
6
  end
8
7
 
9
- use Rack::Session::Cookie, {
10
- :http_only => true,
11
- :secret => ENV['SESSION_SECRET'] || SecureRandom.hex
12
- }
8
+ use Rack::Session::Cookie, :http_only => true,
9
+ :secret => ENV["SESSION_SECRET"] || SecureRandom.hex
13
10
 
14
- set :github_options, {
15
- :scopes => 'read:org'
16
- }
11
+ set :github_options, :scopes => "read:org"
17
12
 
18
- ENV['WARDEN_GITHUB_VERIFIER_SECRET'] ||= SecureRandom.hex
13
+ ENV["WARDEN_GITHUB_VERIFIER_SECRET"] ||= SecureRandom.hex
19
14
  register Sinatra::Auth::Github
20
15
 
21
16
  use Rack::Logger
@@ -29,19 +24,19 @@ class JekyllAuth
29
24
 
30
25
  case authentication_strategy
31
26
  when :team
32
- github_team_authenticate! ENV['GITHUB_TEAM_ID']
27
+ github_team_authenticate! ENV["GITHUB_TEAM_ID"]
33
28
  when :teams
34
- github_teams_authenticate! ENV['GITHUB_TEAM_IDS'].split(",")
29
+ github_teams_authenticate! ENV["GITHUB_TEAM_IDS"].split(",")
35
30
  when :org
36
- github_organization_authenticate! ENV['GITHUB_ORG_NAME']
31
+ github_organization_authenticate! ENV["GITHUB_ORG_NAME"]
37
32
  else
38
33
  raise JekyllAuth::ConfigError
39
34
  end
40
35
  end
41
36
 
42
- get '/logout' do
37
+ get "/logout" do
43
38
  logout!
44
- redirect '/'
39
+ redirect "/"
45
40
  end
46
41
  end
47
42
  end
@@ -1,11 +1,10 @@
1
1
  class JekyllAuth
2
2
  class Commands
3
-
4
- FILES = %w{Rakefile config.ru .gitignore .env}
5
- VARS = %w{client_id client_secret team_id org_name}
3
+ FILES = %w(Rakefile config.ru .gitignore .env).freeze
4
+ VARS = %w(client_id client_secret team_id org_name).freeze
6
5
 
7
6
  def self.source
8
- @source ||= File.expand_path( "../../templates", File.dirname(__FILE__) )
7
+ @source ||= File.expand_path("../../templates", File.dirname(__FILE__))
9
8
  end
10
9
 
11
10
  def self.destination
@@ -13,14 +12,14 @@ class JekyllAuth
13
12
  end
14
13
 
15
14
  def self.changed?
16
- execute_command("git", "status", destination, "--porcelain").length != 0
15
+ !execute_command("git", "status", destination, "--porcelain").empty?
17
16
  rescue
18
17
  false
19
18
  end
20
19
 
21
20
  def self.execute_command(*args)
22
21
  output, status = Open3.capture2e(*args)
23
- raise "Command `#{args.join(" ")}` failed: #{output}" if status != 0
22
+ raise "Command `#{args.join(" ")}` failed: #{output}" unless status.exitstatus.zero?
24
23
  output
25
24
  end
26
25
 
@@ -44,7 +43,7 @@ class JekyllAuth
44
43
  end
45
44
 
46
45
  def self.env_var_set?(var)
47
- !(ENV[var].to_s.blank?)
46
+ !ENV[var].to_s.blank?
48
47
  end
49
48
 
50
49
  def self.init_repo
@@ -61,7 +60,7 @@ class JekyllAuth
61
60
 
62
61
  def self.heroku_remote_set?
63
62
  remotes = execute_command "git", "remote", "-v"
64
- !!(remotes =~ /^heroku\s/)
63
+ !!(remotes =~ %r!^heroku\s!)
65
64
  end
66
65
 
67
66
  def self.configure_heroku(options)
@@ -13,11 +13,11 @@ class JekyllAuth
13
13
  end
14
14
 
15
15
  def self.whitelist
16
- whitelist = JekyllAuth::config["whitelist"]
16
+ whitelist = JekyllAuth.config["whitelist"]
17
17
  Regexp.new(whitelist.join("|")) unless whitelist.nil?
18
18
  end
19
19
 
20
20
  def self.ssl?
21
- !!JekyllAuth::config["ssl"]
21
+ !!JekyllAuth.config["ssl"]
22
22
  end
23
23
  end
@@ -1,6 +1,5 @@
1
1
  class JekyllAuth
2
- class ConfigError < SecurityError
3
-
2
+ class ConfigError < RuntimeError
4
3
  def message
5
4
  "Jekyll Auth is refusing to serve your site because your oauth credentials are not properly configured."
6
5
  end
@@ -6,11 +6,11 @@ class JekyllAuth
6
6
  end
7
7
 
8
8
  def authentication_strategy
9
- if !ENV['GITHUB_TEAM_ID'].to_s.blank?
9
+ if !ENV["GITHUB_TEAM_ID"].to_s.blank?
10
10
  :team
11
- elsif !ENV['GITHUB_TEAM_IDS'].to_s.blank?
11
+ elsif !ENV["GITHUB_TEAM_IDS"].to_s.blank?
12
12
  :teams
13
- elsif !ENV['GITHUB_ORG_NAME'].to_s.blank?
13
+ elsif !ENV["GITHUB_ORG_NAME"].to_s.blank?
14
14
  :org
15
15
  end
16
16
  end
@@ -1,14 +1,13 @@
1
1
  class JekyllAuth
2
2
  class JekyllSite < Sinatra::Base
3
-
4
3
  register Sinatra::Index
5
- set :public_folder, File.expand_path('_site', Dir.pwd)
6
- use_static_index 'index.html'
4
+ set :public_folder, File.expand_path("_site", Dir.pwd)
5
+ use_static_index "index.html"
7
6
 
8
7
  not_found do
9
8
  status 404
10
- four_oh_four = File.expand_path('_site/404.html', Dir.pwd)
11
- File.read(four_oh_four) if File.exists?(four_oh_four)
9
+ four_oh_four = File.expand_path("_site/404.html", Dir.pwd)
10
+ File.read(four_oh_four) if File.exist?(four_oh_four)
12
11
  end
13
12
  end
14
13
  end
@@ -1,3 +1,3 @@
1
1
  class JekyllAuth
2
- VERSION = '2.0.0'
2
+ VERSION = "2.1.0".freeze
3
3
  end
@@ -3,6 +3,11 @@
3
3
 
4
4
  set -e
5
5
 
6
+ export GITHUB_CLIENT_ID=FOO
7
+ export GITHUB_CLIENT_SECRET=BAR
8
+ export GITHUB_ORG_NAME="balter-test-org"
9
+
6
10
  bundle exec rake spec
11
+ bundle exec rubocop
7
12
  bundle exec gem build jekyll-auth.gemspec
8
13
  bundle exec jekyll-auth --version
@@ -9,34 +9,32 @@ describe "logged in user" do
9
9
 
10
10
  before(:each) do
11
11
  setup_tmp_dir
12
- @user = make_user('login' => 'benbaltertest')
12
+ @user = make_user("login" => "benbaltertest")
13
13
  login_as @user
14
14
 
15
- ENV['GITHUB_ORG_NAME'] = "balter-test-org"
16
-
17
- stub_request(:get, "https://api.github.com/orgs/#{ENV["GITHUB_ORG_NAME"]}/members/benbaltertest").
18
- to_return(:status => 200)
15
+ ENV["GITHUB_ORG_NAME"] = "balter-test-org"
16
+
17
+ stub_request(:get, "https://api.github.com/orgs/#{ENV["GITHUB_ORG_NAME"]}/members/benbaltertest")
18
+ .to_return(:status => 200)
19
19
  end
20
20
 
21
21
  it "shows the securocat when github returns an oauth error" do
22
22
  get "/auth/github/callback?error=redirect_uri_mismatch"
23
- expect(last_response.body).to match(%r{securocat\.png})
23
+ expect(last_response.body).to match(%r!securocat\.png!)
24
24
  end
25
25
 
26
26
  it "logs the user out" do
27
27
  get "/logout"
28
28
  expect(last_response.status).to eql(302)
29
- expect(last_response.headers['Location']).to eql("http://example.org/")
29
+ expect(last_response.headers["Location"]).to eql("http://example.org/")
30
30
 
31
31
  get "/"
32
32
  expect(last_response.status).to eql(302)
33
- expect(last_response.headers['Location']).to match(%r{^https://github\.com/login/oauth/authorize})
33
+ expect(last_response.headers["Location"]).to match(%r!^https://github\.com/login/oauth/authorize!)
34
34
  end
35
-
36
35
  end
37
36
 
38
37
  describe "logged out user" do
39
-
40
38
  include Rack::Test::Methods
41
39
 
42
40
  def app
@@ -44,33 +42,33 @@ describe "logged out user" do
44
42
  end
45
43
 
46
44
  before do
47
- ENV['GITHUB_ORG_NAME'] = "balter-test-org"
45
+ ENV["GITHUB_ORG_NAME"] = "balter-test-org"
48
46
  end
49
47
 
50
48
  it "doesn't let you view indexes" do
51
49
  get "/"
52
50
  expect(last_response.status).to eql(302)
53
- expect(last_response.headers['Location']).to match(%r{^https://github\.com/login/oauth/authorize})
51
+ expect(last_response.headers["Location"]).to match(%r!^https://github\.com/login/oauth/authorize!)
54
52
 
55
53
  get "/some_dir"
56
54
  expect(last_response.status).to eql(302)
57
- expect(last_response.headers['Location']).to match(%r{^https://github\.com/login/oauth/authorize})
55
+ expect(last_response.headers["Location"]).to match(%r!^https://github\.com/login/oauth/authorize!)
58
56
  end
59
57
 
60
58
  it "doesn't let you view files" do
61
59
  get "/index.html"
62
60
  expect(last_response.status).to eql(302)
63
- expect(last_response.headers['Location']).to match(%r{^https://github\.com/login/oauth/authorize})
61
+ expect(last_response.headers["Location"]).to match(%r!^https://github\.com/login/oauth/authorize!)
64
62
 
65
63
  get "/some_dir/index.html"
66
64
  expect(last_response.status).to eql(302)
67
- expect(last_response.headers['Location']).to match(%r{^https://github\.com/login/oauth/authorize})
65
+ expect(last_response.headers["Location"]).to match(%r!^https://github\.com/login/oauth/authorize!)
68
66
  end
69
67
 
70
68
  it "refuses to serve the site without an authentication strategy" do
71
69
  ENV["GITHUB_ORG_NAME"] = nil
72
70
  ENV["GITHUB_TEAM_ID"] = nil
73
71
  ENV["GITHUB_TEAMS_ID"] = nil
74
- expect{get "/"}.to raise_error(JekyllAuth::ConfigError)
72
+ expect { get "/" }.to raise_error(JekyllAuth::ConfigError)
75
73
  end
76
74
  end
@@ -6,23 +6,22 @@ describe "bin" do
6
6
  end
7
7
 
8
8
  it "spits out the help do" do
9
- env = { "GITHUB_TOKEN" => nil}
9
+ env = { "GITHUB_TOKEN" => nil }
10
10
  output = execute_bin(env, "--help")
11
- expect(output).to match(%r{A simple way to use Github OAuth to serve a protected jekyll site to your GitHub organization})
11
+ expect(output).to match(%r!A simple way to use Github OAuth to serve a protected jekyll site to your GitHub organization!)
12
12
  end
13
13
 
14
14
  describe "team id" do
15
-
16
15
  it "errors if no token is given" do
17
- env = { "GITHUB_TOKEN" => nil}
18
- expect{execute_bin(env, "team_id", "--org", "balter-test-org", "--team", "1")}.to raise_error(RuntimeError).
19
- with_message(/prefix the jekyll-auth command with GITHUB_TOKEN/)
16
+ env = { "GITHUB_TOKEN" => nil }
17
+ expect { execute_bin(env, "team_id", "--org", "balter-test-org", "--team", "1") }.to raise_error(RuntimeError)
18
+ .with_message(%r!prefix the jekyll-auth command with GITHUB_TOKEN!)
20
19
  end
21
20
 
22
21
  it "errors if no team_id or org_name is given" do
23
- env = { "GITHUB_TOKEN" => "1234"}
24
- expect{execute_bin(env, "team_id")}.to raise_error(RuntimeError).
25
- with_message(/An org name and team ID are required/)
22
+ env = { "GITHUB_TOKEN" => "1234" }
23
+ expect { execute_bin(env, "team_id") }.to raise_error(RuntimeError)
24
+ .with_message(%r!An org name and team ID are required!)
26
25
  end
27
26
  end
28
27
 
@@ -30,7 +29,7 @@ describe "bin" do
30
29
  `git init`
31
30
  `git add .`
32
31
  `git commit -m 'initial commit'`
33
- execute_bin({"RACK_ENV" => "TEST"}, "new")
32
+ execute_bin({ "RACK_ENV" => "TEST" }, "new")
34
33
  expect(File).to exist("#{tmp_dir}/config.ru")
35
34
  expect(File).to exist("#{tmp_dir}/Rakefile")
36
35
  expect(File).to exist("#{tmp_dir}/.gitignore")
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "commands" do
4
-
5
4
  before do
6
5
  setup_tmp_dir
7
6
  end
@@ -16,12 +15,12 @@ describe "commands" do
16
15
  end
17
16
 
18
17
  it "should execute a command" do
19
- expect(JekyllAuth::Commands.execute_command("ls")).to match(/index\.html/)
18
+ expect(JekyllAuth::Commands.execute_command("ls")).to match(%r!index\.html!)
20
19
  end
21
20
 
22
21
  it "should retrieve a team's ID" do
23
- stub_request(:get, "https://api.github.com/orgs/batler-test-org/teams?per_page=100").
24
- to_return(:status => 204, :body => [{:slug => "test-team", :id => 1}])
22
+ stub_request(:get, "https://api.github.com/orgs/batler-test-org/teams?per_page=100")
23
+ .to_return(:status => 204, :body => [{ :slug => "test-team", :id => 1 }])
25
24
  expect(JekyllAuth::Commands.team_id("batler-test-org", "test-team")).to eql(1)
26
25
  end
27
26
 
@@ -71,6 +70,6 @@ describe "commands" do
71
70
  `git add foo.md`
72
71
  JekyllAuth::Commands.initial_commit
73
72
  output = JekyllAuth::Commands.execute_command "git", "log"
74
- expect(output).to match(/\[Jekyll Auth\] Initial setup/)
73
+ expect(output).to match(%r!\[Jekyll Auth\] Initial setup!)
75
74
  end
76
75
  end
@@ -1,11 +1,10 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "strategies" do
4
-
5
4
  class TestHelper
6
5
  include JekyllAuth::Helpers
7
6
 
8
- def initialize(path=nil)
7
+ def initialize(path = nil)
9
8
  @path = path
10
9
  end
11
10
 
@@ -40,5 +40,4 @@ describe "jekyll site" do
40
40
  expect(last_response.status).to eql(404)
41
41
  expect(last_response.body).to eql("My custom 404")
42
42
  end
43
-
44
43
  end
@@ -1,10 +1,9 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "JekyllAuth" do
4
-
5
4
  before(:each) do
6
5
  setup_tmp_dir
7
- JekyllAuth.instance_variable_set("@config",nil)
6
+ JekyllAuth.instance_variable_set("@config", nil)
8
7
  end
9
8
 
10
9
  it "should know the config file path" do
@@ -23,7 +22,7 @@ describe "JekyllAuth" do
23
22
 
24
23
  it "should return the config hash if the config files contains jekyll_auth" do
25
24
  File.write(JekyllAuth.config_file, "jekyll_auth:\n ssl: true\n whitelist:\n - drafts?\n")
26
- expect(JekyllAuth.config).to eql({"ssl"=>true, "whitelist"=>["drafts?"]})
25
+ expect(JekyllAuth.config).to eql("ssl" => true, "whitelist" => ["drafts?"])
27
26
  end
28
27
 
29
28
  it "should disable ssl by default" do
@@ -42,6 +41,6 @@ describe "JekyllAuth" do
42
41
 
43
42
  it "should parse the whitelist" do
44
43
  File.write(JekyllAuth.config_file, "jekyll_auth:\n whitelist:\n - drafts?\n")
45
- expect(JekyllAuth.whitelist).to eql(/drafts?/)
44
+ expect(JekyllAuth.whitelist).to eql(%r!drafts?!)
46
45
  end
47
46
  end
@@ -1,15 +1,15 @@
1
1
  require "bundler/setup"
2
- require 'fileutils'
2
+ require "fileutils"
3
3
 
4
- ENV['RACK_ENV'] = 'test'
5
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')
4
+ ENV["RACK_ENV"] = "test"
5
+ $LOAD_PATH.push File.join(File.dirname(__FILE__), "..", "lib")
6
6
 
7
- require 'rack/test'
8
- require 'sinatra/auth/github'
9
- require 'sinatra/auth/github/test/test_helper'
10
- require 'webmock/rspec'
11
- require 'dotenv'
12
- require 'open3'
7
+ require "rack/test"
8
+ require "sinatra/auth/github"
9
+ require "sinatra/auth/github/test/test_helper"
10
+ require "webmock/rspec"
11
+ require "dotenv"
12
+ require "open3"
13
13
 
14
14
  def base_dir
15
15
  File.expand_path "../", File.dirname(__FILE__)
@@ -50,6 +50,8 @@ def execute_bin(env, *args)
50
50
  end
51
51
 
52
52
  Dotenv.load
53
+ ENV["GITHUB_CLIENT_ID"] ||= "IGNORE"
54
+ ENV["GITHUB_CLIENT_SECRET"] ||= "IGNORE"
53
55
  setup_tmp_dir
54
56
 
55
57
  require_relative "../lib/jekyll-auth"
@@ -4,6 +4,6 @@
4
4
 
5
5
  namespace :assets do
6
6
  task :precompile do
7
- sh "bundle exec jekyll-auth build"
7
+ sh 'bundle exec jekyll-auth build'
8
8
  end
9
9
  end
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated by Jekyll Auth
2
2
  # It tells Heroku how to launch our site
3
3
 
4
- require "jekyll-auth"
4
+ require 'jekyll-auth'
5
5
  run JekyllAuth.site
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-11 00:00:00.000000000 Z
11
+ date: 2016-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sinatra-index
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +142,28 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0.1'
145
+ version: '1.0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: activesupport
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '4.0'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: '0.1'
166
+ version: '4.0'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: rspec
155
169
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +220,20 @@ dependencies:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
222
  version: '0.10'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rubocop
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '0.35'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '0.35'
209
237
  description: A simple way to use GitHub OAuth to serve a protected jekyll site to
210
238
  your GitHub organization.
211
239
  email: ben@balter.com
@@ -215,6 +243,7 @@ extensions: []
215
243
  extra_rdoc_files: []
216
244
  files:
217
245
  - ".gitignore"
246
+ - ".rubocop.yml"
218
247
  - ".travis.yml"
219
248
  - Gemfile
220
249
  - README.md
@@ -268,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
268
297
  version: '0'
269
298
  requirements: []
270
299
  rubyforge_project:
271
- rubygems_version: 2.5.0
300
+ rubygems_version: 2.6.7
272
301
  signing_key:
273
302
  specification_version: 4
274
303
  summary: A simple way to use GitHub OAuth to serve a protected jekyll site to your
@@ -281,4 +310,3 @@ test_files:
281
310
  - spec/jekyll_auth_jekyll_site_spec.rb
282
311
  - spec/jekyll_auth_spec.rb
283
312
  - spec/spec_helper.rb
284
- has_rdoc: