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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eca2f4fe873edd9395bc8742ccb523d346f5b9a8
4
- data.tar.gz: 6492e4cfed90326ec5df4c5517493f45e8303229
3
+ metadata.gz: b1457594f3e61e576ab473f3ee53a6f1a0ab1942
4
+ data.tar.gz: b9d22be461c173046fb9d7c4a43f0c8fb3c6d97b
5
5
  SHA512:
6
- metadata.gz: 180d5fee1f4f609d550f57f592d4fa4acd92c5adb92785db4901eeda56ad96a30bba3acd13de7d2a3aa8cf0a25db25c22872a73b1ac41d8974189cc4feee530b
7
- data.tar.gz: 3c1e9163fac9064f3d7e364eadf1ec3c57c887fea2344d4f56dddfa70b0d731d207cf2f6bb1b86ff7b84ba02cc85f0e220e018696ac3df21b2cfc451c5804b18
6
+ metadata.gz: 223d63d772578a6bb98b96290fbd13a6bea6483fd90139ca294ee68bec1704653e54d897102cd0c618a69d872294801bc290213b5d8ea75fc2d6307de52c4c08
7
+ data.tar.gz: 8b09a27ede5b99baa43e5f58828b988d04e7916033d884c812bffc7e0bb55039805db4e4acb72f20aacfa31d9c0c461427c45b268a8501962d8099cd24fc79db
data/.env ADDED
@@ -0,0 +1 @@
1
+ ROUTER_REDIRECT_PATH='http://localhost:3005'
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
@@ -1,3 +1,3 @@
1
1
  module EdemRedirects
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -0,0 +1,5 @@
1
+ class TemporaryStorage < ActiveRecord::Base
2
+ def data
3
+ JSON.parse self.read_attribute(:data)
4
+ end
5
+ end
@@ -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
@@ -0,0 +1,5 @@
1
+ class Loader < Rails::Railtie
2
+ rake_tasks do
3
+ load 'tasks/temporary_storage.rake'
4
+ end
5
+ end
@@ -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.6
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: {}