workarea-facebook_login 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.editorconfig +15 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- data/.github/ISSUE_TEMPLATE/documentation-request.md +17 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/ci.yml +56 -0
- data/.gitignore +13 -0
- data/.jshintrc +31 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +74 -0
- data/Gemfile +11 -0
- data/README.md +13 -0
- data/Rakefile +42 -0
- data/app/controllers/workarea/storefront/users/facebook_logins_controller.rb +46 -0
- data/app/models/workarea/user.decorator +41 -0
- data/app/views/workarea/storefront/users/_facebook_login.html.haml +6 -0
- data/bin/rails +18 -0
- data/config/initializers/appends.rb +4 -0
- data/config/initializers/omniauth.rb +1 -0
- data/config/locales/en.yml +14 -0
- data/config/routes.rb +5 -0
- data/lib/workarea/facebook_login.rb +36 -0
- data/lib/workarea/facebook_login/engine.rb +8 -0
- data/lib/workarea/facebook_login/version.rb +5 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +34 -0
- data/test/dummy/bin/update +29 -0
- data/test/dummy/config.ru +5 -0
- data/test/dummy/config/application.rb +21 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/cable.yml +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +54 -0
- data/test/dummy/config/environments/production.rb +86 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/workarea.rb +4 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/puma.rb +47 -0
- data/test/dummy/config/routes.rb +5 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config/spring.rb +6 -0
- data/test/dummy/db/seeds.rb +2 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test/dummy/public/apple-touch-icon.png +0 -0
- data/test/dummy/public/favicon.ico +1 -0
- data/test/integration/workarea/storefront/users/facebook_logins_integration_test.rb +63 -0
- data/test/support/facebook_login_support.rb +50 -0
- data/test/system/workarea/storefront/facebook_login_system_test.rb +20 -0
- data/test/test_helper.rb +13 -0
- data/workarea-facebook_login.gemspec +21 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: bec7144511d2094e5220e8a48e4d6080b1a90c867ac73f8a6c2d9a31b06b638c
|
4
|
+
data.tar.gz: c6c8251714088e9f759a6cc920e7964fb55470c5e6b8a33372ea79266670d533
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3ecd210059e03cd671afb83d8e6c194ee8db65d39de8c766ca3b63e5ad5515971cc787bebbb1686826a9badf2aae06d5db3f7e3393643b5016b2366cb62e40b0
|
7
|
+
data.tar.gz: 189127e1180ba40f297fa60eface96b5f4ae0f80e9a39666ba8b0e647845afc1e89ef529cdf42bcd20171a613948a34554423cafcaae7765145ba8025cb3271f
|
data/.editorconfig
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# editorconfig.org
|
2
|
+
root = true
|
3
|
+
|
4
|
+
[*]
|
5
|
+
charset = utf-8
|
6
|
+
indent_style = space
|
7
|
+
end_of_line = lf
|
8
|
+
trim_trailing_whitespace = true
|
9
|
+
insert_final_newline = true
|
10
|
+
|
11
|
+
[{*.rb,*.haml,*.scss}]
|
12
|
+
indent_size = 2
|
13
|
+
|
14
|
+
[{*.js,*.jst,*.ejs}]
|
15
|
+
indent_size = 4
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
name: Bug report
|
3
|
+
about: Create a report to help us improve Workarea
|
4
|
+
title: ''
|
5
|
+
labels: bug
|
6
|
+
assignees: ''
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
⚠️**Before you create**⚠️
|
11
|
+
Please verify the issue you're experiencing is not part of your Workarea project customizations. The best way to do this is with a [vanilla Workarea installation](https://developer.workarea.com/articles/create-a-new-host-application.html). This will help us spend time on fixes/improvements for the whole community. Thank you!
|
12
|
+
|
13
|
+
**Describe the bug**
|
14
|
+
A clear and concise description of what the bug is.
|
15
|
+
|
16
|
+
**To Reproduce**
|
17
|
+
Steps to reproduce the behavior:
|
18
|
+
1. Go to '...'
|
19
|
+
2. Click on '....'
|
20
|
+
3. Scroll down to '....'
|
21
|
+
4. See error
|
22
|
+
|
23
|
+
**Expected behavior**
|
24
|
+
A clear and concise description of what you expected to happen.
|
25
|
+
|
26
|
+
**Workarea Setup (please complete the following information):**
|
27
|
+
- Workarea Version: [e.g. v3.4.6]
|
28
|
+
- Plugins [e.g. workarea-blog, workarea-sitemaps]
|
29
|
+
|
30
|
+
**Attachments**
|
31
|
+
If applicable, add any attachments to help explain your problem, things like:
|
32
|
+
- screenshots
|
33
|
+
- Gemfile.lock
|
34
|
+
- test cases
|
35
|
+
|
36
|
+
**Additional context**
|
37
|
+
Add any other context about the problem here.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
name: Documentation feedback/request
|
3
|
+
about: Provide documentation feedback
|
4
|
+
title: ''
|
5
|
+
labels: documentation
|
6
|
+
assignees: chriscressman
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
**Is your documentation related to a problem? Please describe.**
|
11
|
+
A clear and concise description of what the problem is. Ex. I'm confused by [...]
|
12
|
+
|
13
|
+
**Describe the article you'd like**
|
14
|
+
A clear and concise description of what would be in the documentation article.
|
15
|
+
|
16
|
+
**Additional context**
|
17
|
+
Add any other context or screenshots about the feature request here.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
name: Feature request
|
3
|
+
about: Suggest an idea for Workarea
|
4
|
+
title: ''
|
5
|
+
labels: enhancement
|
6
|
+
assignees: ''
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
**Is your feature request related to a problem? Please describe.**
|
11
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
12
|
+
|
13
|
+
**Describe the solution you'd like**
|
14
|
+
A clear and concise description of what you want to happen.
|
15
|
+
|
16
|
+
**Describe alternatives you've considered**
|
17
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
18
|
+
|
19
|
+
**Additional context**
|
20
|
+
Add any other context or screenshots about the feature request here.
|
@@ -0,0 +1,56 @@
|
|
1
|
+
name: CI
|
2
|
+
on: [push]
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
static_analysis:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
steps:
|
8
|
+
- uses: actions/checkout@v1
|
9
|
+
- uses: workarea-commerce/ci/bundler-audit@ignore-cves
|
10
|
+
with:
|
11
|
+
ignored: CVE-2015-9284
|
12
|
+
- uses: workarea-commerce/ci/rubocop@v1
|
13
|
+
|
14
|
+
admin_tests:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v1
|
18
|
+
- uses: actions/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 2.6.x
|
21
|
+
- uses: workarea-commerce/ci/test@v1
|
22
|
+
with:
|
23
|
+
command: bin/rails app:workarea:test:admin
|
24
|
+
|
25
|
+
core_tests:
|
26
|
+
runs-on: ubuntu-latest
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@v1
|
29
|
+
- uses: actions/setup-ruby@v1
|
30
|
+
with:
|
31
|
+
ruby-version: 2.6.x
|
32
|
+
- uses: workarea-commerce/ci/test@v1
|
33
|
+
with:
|
34
|
+
command: bin/rails app:workarea:test:core
|
35
|
+
|
36
|
+
storefront_tests:
|
37
|
+
runs-on: ubuntu-latest
|
38
|
+
steps:
|
39
|
+
- uses: actions/checkout@v1
|
40
|
+
- uses: actions/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: 2.6.x
|
43
|
+
- uses: workarea-commerce/ci/test@v1
|
44
|
+
with:
|
45
|
+
command: bin/rails app:workarea:test:storefront
|
46
|
+
|
47
|
+
plugins_tests:
|
48
|
+
runs-on: ubuntu-latest
|
49
|
+
steps:
|
50
|
+
- uses: actions/checkout@v1
|
51
|
+
- uses: actions/setup-ruby@v1
|
52
|
+
with:
|
53
|
+
ruby-version: 2.6.x
|
54
|
+
- uses: workarea-commerce/ci/test@v1
|
55
|
+
with:
|
56
|
+
command: bin/rails app:workarea:test:plugins
|
data/.gitignore
ADDED
data/.jshintrc
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
{
|
2
|
+
"bitwise": true,
|
3
|
+
"camelcase": false,
|
4
|
+
"curly": true,
|
5
|
+
"eqeqeq": true,
|
6
|
+
"forin": true,
|
7
|
+
"immed": true,
|
8
|
+
"indent": 4,
|
9
|
+
"latedef": true,
|
10
|
+
"newcap": true,
|
11
|
+
"noarg": true,
|
12
|
+
"noempty": true,
|
13
|
+
"nonew": true,
|
14
|
+
"plusplus": true,
|
15
|
+
"quotmark": true,
|
16
|
+
"undef": true,
|
17
|
+
"unused": true,
|
18
|
+
"strict": true,
|
19
|
+
"trailing": true,
|
20
|
+
"browser": true,
|
21
|
+
"jquery": true,
|
22
|
+
"onevar": true,
|
23
|
+
"white": true,
|
24
|
+
"globals": {
|
25
|
+
"_": false,
|
26
|
+
"_gaq": false,
|
27
|
+
"JST": false,
|
28
|
+
"Modernizr": false,
|
29
|
+
"WEBLINC": false
|
30
|
+
}
|
31
|
+
}
|
data/.rubocop.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
Workarea Facebook Login 2.1.0 (2019-12-17)
|
2
|
+
--------------------------------------------------------------------------------
|
3
|
+
|
4
|
+
* Update RuboCop Config
|
5
|
+
|
6
|
+
Tom Scott
|
7
|
+
|
8
|
+
* Fix test that can randomly fail due to inconsistent RACK_ENV
|
9
|
+
|
10
|
+
FACEBOOK-1
|
11
|
+
Ben Crouse
|
12
|
+
|
13
|
+
* This is my life now
|
14
|
+
|
15
|
+
Tom Scott
|
16
|
+
|
17
|
+
* Yeah apparently OmniAuth is poorly maintained...
|
18
|
+
|
19
|
+
Tom Scott
|
20
|
+
|
21
|
+
* Ensure Compatibility with v3.5.x of Workarea
|
22
|
+
|
23
|
+
Fixes several issues when using this gem with v3.5:
|
24
|
+
|
25
|
+
- Update decorated tests to use `session` instead of `cookies` for user
|
26
|
+
identification.
|
27
|
+
- Set up the gem for hosting on GitHub and CI with GitHub Actions
|
28
|
+
- Update OmniAuth to v1.9+ to address security issue
|
29
|
+
- Update configuration in `test/dummy` to be compatible with the latest Rails
|
30
|
+
|
31
|
+
FACEBOOK-1
|
32
|
+
Tom Scott
|
33
|
+
|
34
|
+
* correct spec.files in gemspec
|
35
|
+
|
36
|
+
Jake Beresford
|
37
|
+
|
38
|
+
* rename gemspec
|
39
|
+
|
40
|
+
Jake Beresford
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
Workarea Facebook 2.0.0 (2017-07-13)
|
45
|
+
--------------------------------------------------------------------------------
|
46
|
+
|
47
|
+
|
48
|
+
Workarea Facebook 2.0.0 (2017-07-13)
|
49
|
+
--------------------------------------------------------------------------------
|
50
|
+
|
51
|
+
|
52
|
+
Workarea Facebook 2.0.0 (2017-07-13)
|
53
|
+
--------------------------------------------------------------------------------
|
54
|
+
|
55
|
+
* Rename plugin to FacebookLogin
|
56
|
+
|
57
|
+
FBLOGIN-11
|
58
|
+
Jake Beresford
|
59
|
+
|
60
|
+
* Upgrade Facebook Login for Workarea V3
|
61
|
+
|
62
|
+
Breaking Changes
|
63
|
+
Remove partial from Users Accounts, "unlinking from facebook" served no purpose
|
64
|
+
Storefront::Users::FacebookController was renamed to Storefront::Users::FacebookLoginsController
|
65
|
+
FacebookHelper was removed and path is now in Workarea::Facebook.auth_path
|
66
|
+
The storefront/_facebook partial was moved to storefront/users/_facebook_login
|
67
|
+
|
68
|
+
FBLOGIN-8
|
69
|
+
Eric Pigeon
|
70
|
+
|
71
|
+
* Capitalize facebook in error message
|
72
|
+
|
73
|
+
FBLOGIN-7
|
74
|
+
Eric Pigeon
|
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require "bundler/setup"
|
4
|
+
rescue LoadError
|
5
|
+
puts "You must `gem install bundler` and `bundle install` to run rake tasks"
|
6
|
+
end
|
7
|
+
|
8
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
9
|
+
|
10
|
+
load "rails/tasks/engine.rake"
|
11
|
+
load "rails/tasks/statistics.rake"
|
12
|
+
load 'workarea/changelog.rake'
|
13
|
+
require "rake/testtask"
|
14
|
+
|
15
|
+
# Run all tests
|
16
|
+
Rake::TestTask.new do |t|
|
17
|
+
t.libs << "test"
|
18
|
+
t.pattern = "test/**/*_test.rb"
|
19
|
+
t.verbose = false
|
20
|
+
t.warning = false
|
21
|
+
end
|
22
|
+
|
23
|
+
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
24
|
+
require "workarea/facebook_login/version"
|
25
|
+
|
26
|
+
desc "Release version #{Workarea::FacebookLogin::VERSION} of the gem"
|
27
|
+
task :release do
|
28
|
+
host = "https://#{ENV['BUNDLE_GEMS__WEBLINC__COM']}@gems.weblinc.com"
|
29
|
+
|
30
|
+
Rake::Task['workarea:changelog'].execute
|
31
|
+
system 'git add CHANGELOG.md'
|
32
|
+
system 'git commit -m "Update CHANGELOG"'
|
33
|
+
system 'git push origin HEAD'
|
34
|
+
|
35
|
+
system "git tag -a v#{Workarea::FacebookLogin::VERSION} -m 'Tagging #{Workarea::FacebookLogin::VERSION}'"
|
36
|
+
system "git push --tags"
|
37
|
+
|
38
|
+
system "gem build workarea-facebook_login.gemspec"
|
39
|
+
system "gem push workarea-facebook_login-#{Workarea::FacebookLogin::VERSION}.gem #{host}"
|
40
|
+
system "gem push workarea-facebook_login-#{Workarea::FacebookLogin::VERSION}.gem --host #{host}"
|
41
|
+
system "rm workarea-facebook_login-#{Workarea::FacebookLogin::VERSION}.gem"
|
42
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Workarea
|
2
|
+
class Storefront::Users::FacebookLoginsController < Storefront::ApplicationController
|
3
|
+
before_action :user_from_omniauth, only: :create
|
4
|
+
before_action :fail_admin_log_in, only: :create
|
5
|
+
before_action :validate_current_email, only: :create
|
6
|
+
|
7
|
+
def create
|
8
|
+
login(@user)
|
9
|
+
|
10
|
+
login_service = Login.new(@user, current_order).tap(&:perform)
|
11
|
+
self.current_order = login_service.current_order
|
12
|
+
|
13
|
+
flash[:success] = t("workarea.storefront.flash_messages.logged_in")
|
14
|
+
redirect_back_or users_account_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def failure
|
18
|
+
flash[:error] = t("workarea.storefront.facebook_login.flash_messages.failure")
|
19
|
+
redirect_to login_path
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def auth_hash
|
25
|
+
@auth_hash ||= request.env["omniauth.auth"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def user_from_omniauth
|
29
|
+
@user ||= Workarea::User.from_omniauth(auth_hash)
|
30
|
+
end
|
31
|
+
|
32
|
+
def fail_admin_log_in
|
33
|
+
return unless @user.admin? || @user.super_admin?
|
34
|
+
|
35
|
+
flash[:error] = t("workarea.storefront.facebook_login.flash_messages.admin_failure")
|
36
|
+
redirect_to login_path
|
37
|
+
end
|
38
|
+
|
39
|
+
def validate_current_email
|
40
|
+
return if current_user.nil? || current_user.email == auth_hash.info.email
|
41
|
+
|
42
|
+
flash[:error] = t("workarea.storefront.facebook_login.flash_messages.email_mismatch")
|
43
|
+
redirect_back_or users_account_path
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Workarea
|
2
|
+
decorate User, with: :facebook_login do
|
3
|
+
decorated do
|
4
|
+
field :provider, type: String
|
5
|
+
field :uid, type: String
|
6
|
+
field :oauth_token, type: String
|
7
|
+
field :oauth_expires_at, type: DateTime
|
8
|
+
field :deleted_at, type: DateTime
|
9
|
+
field :is_omniauthed, type: Boolean, default: false
|
10
|
+
end
|
11
|
+
|
12
|
+
class_methods do
|
13
|
+
# Finds or initializes a User by an omniauth auth hash.
|
14
|
+
#
|
15
|
+
# @param [OmniAuth::AuthHash] auth_hash
|
16
|
+
#
|
17
|
+
# @return [Workarea::User]
|
18
|
+
#
|
19
|
+
def from_omniauth(auth)
|
20
|
+
return nil if auth.nil?
|
21
|
+
|
22
|
+
user = find_by_email(auth.info.email) || new(email: auth.info.email)
|
23
|
+
|
24
|
+
# Workarea/Core has a password validator and has_secure_password from
|
25
|
+
# ActiveModel validates password length so just set a random password
|
26
|
+
user.password = SecureRandom.hex
|
27
|
+
user.is_omniauthed = true
|
28
|
+
user.provider = auth.provider
|
29
|
+
user.uid = auth.uid
|
30
|
+
user.name = auth.info.name
|
31
|
+
user.email = auth.info.email
|
32
|
+
user.oauth_token = auth.credentials.token
|
33
|
+
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
|
34
|
+
user.first_name = auth.info.first_name.presence
|
35
|
+
user.last_name = auth.info.last_name.presence
|
36
|
+
user.save
|
37
|
+
user
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|