edem_redirects 0.1.6 → 0.1.7
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 +4 -4
- data/.env +1 -0
- data/Gemfile.lock +82 -0
- data/edem_redirects-0.1.6.gem +0 -0
- data/lib/edem_redirects/version.rb +1 -1
- data/lib/models/temporary_storage.rb +5 -0
- data/lib/redirect_to_external_sites_controller.rb +24 -0
- data/lib/tasks/loader.rb +5 -0
- data/lib/tasks/temporary_storage.rake +10 -0
- data/lib/users/api_controller.rb +53 -0
- metadata +9 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1457594f3e61e576ab473f3ee53a6f1a0ab1942
|
4
|
+
data.tar.gz: b9d22be461c173046fb9d7c4a43f0c8fb3c6d97b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 223d63d772578a6bb98b96290fbd13a6bea6483fd90139ca294ee68bec1704653e54d897102cd0c618a69d872294801bc290213b5d8ea75fc2d6307de52c4c08
|
7
|
+
data.tar.gz: 8b09a27ede5b99baa43e5f58828b988d04e7916033d884c812bffc7e0bb55039805db4e4acb72f20aacfa31d9c0c461427c45b268a8501962d8099cd24fc79db
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
edem_redirects (0.1.6)
|
5
|
+
actionpack
|
6
|
+
jwt
|
7
|
+
require_all
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionpack (5.1.6)
|
13
|
+
actionview (= 5.1.6)
|
14
|
+
activesupport (= 5.1.6)
|
15
|
+
rack (~> 2.0)
|
16
|
+
rack-test (>= 0.6.3)
|
17
|
+
rails-dom-testing (~> 2.0)
|
18
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
19
|
+
actionview (5.1.6)
|
20
|
+
activesupport (= 5.1.6)
|
21
|
+
builder (~> 3.1)
|
22
|
+
erubi (~> 1.4)
|
23
|
+
rails-dom-testing (~> 2.0)
|
24
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
25
|
+
activesupport (5.1.6)
|
26
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
27
|
+
i18n (>= 0.7, < 2)
|
28
|
+
minitest (~> 5.1)
|
29
|
+
tzinfo (~> 1.1)
|
30
|
+
builder (3.2.3)
|
31
|
+
concurrent-ruby (1.0.5)
|
32
|
+
crass (1.0.3)
|
33
|
+
diff-lcs (1.3)
|
34
|
+
erubi (1.7.1)
|
35
|
+
i18n (1.0.0)
|
36
|
+
concurrent-ruby (~> 1.0)
|
37
|
+
jwt (2.1.0)
|
38
|
+
loofah (2.2.2)
|
39
|
+
crass (~> 1.0.2)
|
40
|
+
nokogiri (>= 1.5.9)
|
41
|
+
mini_portile2 (2.3.0)
|
42
|
+
minitest (5.11.3)
|
43
|
+
nokogiri (1.8.2)
|
44
|
+
mini_portile2 (~> 2.3.0)
|
45
|
+
rack (2.0.4)
|
46
|
+
rack-test (1.0.0)
|
47
|
+
rack (>= 1.0, < 3)
|
48
|
+
rails-dom-testing (2.0.3)
|
49
|
+
activesupport (>= 4.2.0)
|
50
|
+
nokogiri (>= 1.6)
|
51
|
+
rails-html-sanitizer (1.0.4)
|
52
|
+
loofah (~> 2.2, >= 2.2.2)
|
53
|
+
rake (10.5.0)
|
54
|
+
require_all (2.0.0)
|
55
|
+
rspec (3.7.0)
|
56
|
+
rspec-core (~> 3.7.0)
|
57
|
+
rspec-expectations (~> 3.7.0)
|
58
|
+
rspec-mocks (~> 3.7.0)
|
59
|
+
rspec-core (3.7.1)
|
60
|
+
rspec-support (~> 3.7.0)
|
61
|
+
rspec-expectations (3.7.0)
|
62
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
63
|
+
rspec-support (~> 3.7.0)
|
64
|
+
rspec-mocks (3.7.0)
|
65
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
66
|
+
rspec-support (~> 3.7.0)
|
67
|
+
rspec-support (3.7.1)
|
68
|
+
thread_safe (0.3.6)
|
69
|
+
tzinfo (1.2.5)
|
70
|
+
thread_safe (~> 0.1)
|
71
|
+
|
72
|
+
PLATFORMS
|
73
|
+
ruby
|
74
|
+
|
75
|
+
DEPENDENCIES
|
76
|
+
bundler (~> 1.16)
|
77
|
+
edem_redirects!
|
78
|
+
rake (~> 10.0)
|
79
|
+
rspec (~> 3.2)
|
80
|
+
|
81
|
+
BUNDLED WITH
|
82
|
+
1.16.1
|
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class RedirectToExternalSitesController < ActionController::Base
|
4
|
+
|
5
|
+
def redirect
|
6
|
+
# require 'edem_redirect/builders/url'
|
7
|
+
token = SecureRandom.hex
|
8
|
+
TemporaryStorage.create(token: token, data: {user_id: current_user.id}.to_json)
|
9
|
+
url = EdemRedirects::Builders::Url.new(url_params(token)).call
|
10
|
+
redirect_to url
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def url_params(token)
|
15
|
+
{
|
16
|
+
path: params[:path],
|
17
|
+
host: params[:host],
|
18
|
+
user_uid: current_user.try(:uid),
|
19
|
+
loged: !current_user.nil?,
|
20
|
+
access_token: token,
|
21
|
+
user_id: current_user.try(:id)
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
data/lib/tasks/loader.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
namespace :temporary_storage do
|
2
|
+
task install: :environment do
|
3
|
+
`bundle exec rails generate migration create_temporary_storages data expires_at:datetime token`
|
4
|
+
puts "model and migration created. run: 'rake db:migrate'"
|
5
|
+
end
|
6
|
+
task uninstall: :environment do
|
7
|
+
bundle exec 'rails d migration create_temporary_storage_table'
|
8
|
+
puts "model and migration destroyed. You need to rollback DB"
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Users
|
2
|
+
class ApiController < ActionController::Base
|
3
|
+
before_action :set_temporary_storage, only: [:by_access_token]
|
4
|
+
after_action :remove_temporary_storage, only: [:by_access_token]
|
5
|
+
protect_from_forgery
|
6
|
+
def by_access_token
|
7
|
+
user = User.find(@tmp_storage.data['user_id'])
|
8
|
+
token = SecureRandom.hex
|
9
|
+
TemporaryStorage.create(token: token, data: {user_id: user.id})
|
10
|
+
|
11
|
+
respond_to do |format|
|
12
|
+
format.json { render json: { user: user.as_json.merge({access_token: token}) } }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def store_uid
|
17
|
+
require 'edem_redirects/decoder'
|
18
|
+
user_info = EdemRedirects::Decoder.new(params[:token]).call.first
|
19
|
+
user = User.find(user_info['user_id'])
|
20
|
+
user.provider = 'edem_oauth'
|
21
|
+
user.uid = user_info['uid']
|
22
|
+
respond_to do |format|
|
23
|
+
if user.save
|
24
|
+
format.json{ render json: user.as_json }
|
25
|
+
else
|
26
|
+
format.json { render json: {error: 'something went wrong'} }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def unauthorized_request
|
33
|
+
{ error: 'Something went wrong' }
|
34
|
+
end
|
35
|
+
|
36
|
+
def destroy_session
|
37
|
+
session.delete(access_token)
|
38
|
+
end
|
39
|
+
|
40
|
+
def access_token
|
41
|
+
params['access_token']
|
42
|
+
end
|
43
|
+
|
44
|
+
def set_temporary_storage
|
45
|
+
@tmp_storage = TemporaryStorage.find_by_token!(params[:access_token])
|
46
|
+
end
|
47
|
+
|
48
|
+
def remove_temporary_storage
|
49
|
+
@tmp_storage.destroy
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edem_redirects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandr
|
@@ -115,8 +115,10 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- ".env"
|
118
119
|
- ".gitignore"
|
119
120
|
- Gemfile
|
121
|
+
- Gemfile.lock
|
120
122
|
- README.md
|
121
123
|
- Rakefile
|
122
124
|
- bin/console
|
@@ -124,11 +126,17 @@ files:
|
|
124
126
|
- edem_redirects-0.1.3.gem
|
125
127
|
- edem_redirects-0.1.4.gem
|
126
128
|
- edem_redirects-0.1.5.gem
|
129
|
+
- edem_redirects-0.1.6.gem
|
127
130
|
- edem_redirects.gemspec
|
128
131
|
- lib/edem_redirects.rb
|
129
132
|
- lib/edem_redirects/builders/url.rb
|
130
133
|
- lib/edem_redirects/decoder.rb
|
131
134
|
- lib/edem_redirects/version.rb
|
135
|
+
- lib/models/temporary_storage.rb
|
136
|
+
- lib/redirect_to_external_sites_controller.rb
|
137
|
+
- lib/tasks/loader.rb
|
138
|
+
- lib/tasks/temporary_storage.rake
|
139
|
+
- lib/users/api_controller.rb
|
132
140
|
homepage: https://gitlab.com/ruby_con/all-edem/edem_redirects
|
133
141
|
licenses: []
|
134
142
|
metadata: {}
|