sidekiq_web_google_sign_in 1.0.0.beta1
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
- data/lib/sidekiq_web_google_sign_in.rb +105 -0
- metadata +71 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d90a0b01234663ee46221e6b3327bc26184afe4a
|
4
|
+
data.tar.gz: f16ca77b4141824ae96ada2e877eac2b270a7ab8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ebd9b3623a6d15d04a79c6cb0080d69b3b8ec2be465dcaae897fa301da2f6f80add1e29a91f9d5852c6e2ca9ce066e6980fe262513d9a1a4e5fde0aa30cfe999
|
7
|
+
data.tar.gz: 2c2b4127575b74ff04651fe6c889386f6d9ea73b37d4ce11fabe68f48d34cccfd9d6bbd2ec6764fb11670b4760330eb0ed9fa82b5796a9ddf921fdae360e6d2b
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require "omniauth-google-oauth2"
|
2
|
+
|
3
|
+
class SidekiqWebGoogleSignIn
|
4
|
+
class << self
|
5
|
+
attr_accessor :options
|
6
|
+
|
7
|
+
def use(options)
|
8
|
+
@options = options
|
9
|
+
|
10
|
+
# Require sidekiq web unless already required
|
11
|
+
unless defined?(Sidekiq::Web)
|
12
|
+
if defined?(Sidekiq::Enterprise)
|
13
|
+
require "sidekiq-ent/web"
|
14
|
+
elsif defined?(Sidekiq::Pro)
|
15
|
+
require "sidekiq/pro/web"
|
16
|
+
else
|
17
|
+
require "sidekiq/web"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
google_sign_in_client_id, google_sign_in_client_secret = options.values_at(:google_sign_in_client_id, :google_sign_in_client_secret)
|
22
|
+
Sidekiq::Web.use OmniAuth::Builder do
|
23
|
+
provider :google_oauth2, google_sign_in_client_id, google_sign_in_client_secret
|
24
|
+
end
|
25
|
+
Sidekiq::Web.register(SidekiqWebGoogleSignIn)
|
26
|
+
Rails.application.config.after_initialize do
|
27
|
+
sidekiq_web_session_options = {
|
28
|
+
:key => "_sidekiqweb_session",
|
29
|
+
:domain => options[:session_domain],
|
30
|
+
:path => "/sidekiq",
|
31
|
+
:expire_after => 24 * 60 * 60, # Automatically expire session after 24 hours
|
32
|
+
:secret => session_secret
|
33
|
+
}
|
34
|
+
Sidekiq::Web.set :sessions, sidekiq_web_session_options
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def registered(sidekiq_web)
|
39
|
+
sidekiq_web.before do
|
40
|
+
next if signing_in? or signed_in?
|
41
|
+
|
42
|
+
if html_request?
|
43
|
+
redirect_to_google_sign_in_page
|
44
|
+
else
|
45
|
+
halt(403)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
sidekiq_web.get "/auth/google_oauth2/callback" do
|
50
|
+
if employee?
|
51
|
+
sign_in
|
52
|
+
redirect_to_sidekiq_dashboard
|
53
|
+
else
|
54
|
+
halt(403)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
sidekiq_web.helpers do
|
59
|
+
def signed_in?
|
60
|
+
session[:signed_in]
|
61
|
+
end
|
62
|
+
|
63
|
+
def signing_in?
|
64
|
+
request.path_info.start_with?("/auth/google_oauth2")
|
65
|
+
end
|
66
|
+
|
67
|
+
def html_request?
|
68
|
+
request.env["HTTP_ACCEPT"].include?("text/html")
|
69
|
+
end
|
70
|
+
|
71
|
+
def redirect_to_google_sign_in_page
|
72
|
+
redirect "/sidekiq/auth/google_oauth2"
|
73
|
+
end
|
74
|
+
|
75
|
+
def employee?
|
76
|
+
is_employee_email?(request.env["omniauth.auth"]["info"]["email"])
|
77
|
+
end
|
78
|
+
|
79
|
+
def is_employee_email?(email)
|
80
|
+
SidekiqWebGoogleSignIn.options[:employee_emails].call(email)
|
81
|
+
end
|
82
|
+
|
83
|
+
def redirect_to_sidekiq_dashboard
|
84
|
+
redirect "/sidekiq"
|
85
|
+
end
|
86
|
+
|
87
|
+
def sign_in
|
88
|
+
session[:signed_in] = true
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
def session_secret
|
96
|
+
# Rails < 4
|
97
|
+
if Rails.configuration.respond_to?(:secret_token)
|
98
|
+
Rails.configuration.secret_token
|
99
|
+
# Rails >= 4
|
100
|
+
else
|
101
|
+
Rails.application.secrets[:secret_key_base]
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sidekiq_web_google_sign_in
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.beta1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nisanth Chunduru
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sidekiq
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: omniauth-google-oauth2
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Restrict access to your Sidekiq using Google Sign In
|
42
|
+
email: nisanth074@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/sidekiq_web_google_sign_in.rb
|
48
|
+
homepage: https://github.com/magicbell-io/sidekiq_web_google_sign_in
|
49
|
+
licenses: []
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 1.3.1
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 2.4.5.1
|
68
|
+
signing_key:
|
69
|
+
specification_version: 4
|
70
|
+
summary: Restrict access to your Sidekiq using Google Sign In
|
71
|
+
test_files: []
|