edem_redirects 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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: {}