yol_sso 0.0.3 → 0.0.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
  SHA256:
3
- metadata.gz: 2c3f2e1cc0346af03c94b85bbfb307e76cd300052c54d260fe487301636c291f
4
- data.tar.gz: b3e900a79ef34098f2b56109c47c2e631e63ed59c68a785005713ea32a910f56
3
+ metadata.gz: 6c00ab5470c95cea4324c2192ce597d64d7cb9fca9c5f0079c1f2af4c7343cff
4
+ data.tar.gz: 06f6cab80b32b46708aadc39fe36be196cfb76983890b0935fa470dd46367f3a
5
5
  SHA512:
6
- metadata.gz: 243b2e36f7513504cb5a3d0a37fd612bfbb3abf8ac0bdb084c87852cd627fbe90f19a31ef38fdde0d4256f1579483927ee74f15e0040af60931c935c3fc106aa
7
- data.tar.gz: c469cbe06c69678f0e45294ea7c3fa58011af33eef1bc141d1a55f014513dddce02a7dce9517c0ea8c9f0070e2c162781a71c263ffd2ca8b2f7a5adc87b5b43f
6
+ metadata.gz: 6c8a267e43b8777af1ecd405c55c6d109a080b505f97d109ebf276c28eea4c12aa2894f02aca7cebfbf2378f09d2a5f14d04dc7e553ff37cb99973efb8f8eb0e
7
+ data.tar.gz: 44eb1da4613ae4d808e10420ad0a97d48a1c70554b42134fd873b06dd75d9022b237aadccbd08ed55929cd72518569a1a60daf2af324b45d0da7c0b8807ed2ef
data/.gitignore ADDED
@@ -0,0 +1,68 @@
1
+ .idea
2
+ *.gem
3
+ *.rbc
4
+ *.DS_Store
5
+ *.swp
6
+ Gemfile.lock
7
+ GemfileLocal
8
+ GemfileLocal.lock
9
+
10
+ # Ignore all logfiles and tempfiles.
11
+ /log/*
12
+ /tmp/*
13
+ !/log/.keep
14
+ !/tmp/.keep
15
+
16
+ # TODO Comment out this rule if you are OK with secrets being uploaded to the repo
17
+ config/initializers/secret_token.rb
18
+ config/master.key
19
+
20
+ # Only include if you have production secrets in this file, which is no longer a Rails default
21
+ # config/secrets.yml
22
+
23
+ # dotenv
24
+ # TODO Comment out this rule if environment variables can be committed
25
+ .env
26
+
27
+ ## Environment normalization:
28
+ /.bundle
29
+ /vendor/bundle
30
+
31
+ # these should all be checked in to normalize the environment:
32
+ # Gemfile.lock, .ruby-version, .ruby-gemset
33
+
34
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
35
+ .rvmrc
36
+
37
+ # if using bower-rails ignore default bower_components path bower.json files
38
+ /vendor/assets/bower_components
39
+ *.bowerrc
40
+ bower.json
41
+
42
+ # Ignore pow environment settings
43
+ .powenv
44
+
45
+ # Ignore Byebug command history file.
46
+ .byebug_history
47
+
48
+ # Ignore node_modules
49
+ node_modules/
50
+
51
+ # Ignore precompiled javascript packs
52
+ /public/packs
53
+ /public/packs-test
54
+ /public/assets
55
+
56
+ # Ignore yarn files
57
+ /yarn-error.log
58
+ yarn-debug.log*
59
+ .yarn-integrity
60
+
61
+ # Ignore uploaded files in development
62
+ /storage/*
63
+ !/storage/.keep
64
+
65
+
66
+
67
+
68
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- yol_sso (0.0.3)
4
+ yol_sso (0.0.7)
5
5
  multi_xml
6
6
  nokogiri
7
7
  roxml
@@ -20,11 +20,11 @@ GEM
20
20
  concurrent-ruby (~> 1.0)
21
21
  minitest (5.14.4)
22
22
  multi_xml (0.6.0)
23
- nokogiri (1.11.7-x86_64-darwin)
23
+ nokogiri (1.12.4-x86_64-darwin)
24
24
  racc (~> 1.4)
25
25
  racc (1.5.2)
26
26
  rake (13.0.1)
27
- roxml (4.1.1)
27
+ roxml (4.2.0)
28
28
  activesupport (>= 4.0)
29
29
  nokogiri (>= 1.3.3)
30
30
  thread_safe (0.3.6)
@@ -1,19 +1,20 @@
1
1
  require "monitor"
2
2
  require "redis"
3
3
  require 'digest/md5'
4
- module YolSso
4
+ module YolSso
5
5
  class Client
6
6
 
7
7
  include Connection::Base
8
8
  include Connection::Message
9
+ include Connection::User
9
10
 
10
- attr_accessor :host
11
-
12
- attr_accessor :agentid
11
+ attr_accessor :host, :agentid, :redis, :corpsecret
13
12
 
14
13
  def initialize(options = {})
15
- @host = options[:host] || Sso.configuration.host
16
- @agentid = options[:agentid] || Sso.configuration.agentid
14
+ @host = options[:host] || YolSso.configuration.host
15
+ @agentid = options[:agentid] || YolSso.configuration.agentid
16
+ @redis = options[:redis] || YolSso.configuration.redis
17
+ @corpsecret = options[:corpsecret] || YolSso.configuration.corpsecret
17
18
  end
18
19
  end
19
- end
20
+ end
@@ -18,20 +18,28 @@ module YolSso
18
18
  handle_res(res)
19
19
  end
20
20
 
21
+ def http_get(path, params)
22
+ uri = URI.join(host, path)
23
+ req = Net::HTTP.new(uri.host, uri.port)
24
+ header = {'token': get_access_token}
25
+ req.use_ssl = true if uri.scheme == 'https'
26
+ uri.query = URI.encode_www_form(params)
27
+ res = req.get("#{uri.path}?#{uri.query}", header)
28
+ handle_res(res)
29
+ end
30
+
21
31
  def get_access_token
22
32
  if redis.nil?
23
- access_token_res = get_token(corpid, secret)
24
- access_token = access_token_res["access_token"] rescue nil
33
+ access_token = get_token(corpsecret)
25
34
  else
26
- access_token = redis.get("qywx_access_token")
35
+ access_token = redis.get("sso_access_token")
27
36
  if access_token.nil?
28
- access_token_res = get_token(corpid, secret)
29
- access_token = access_token_res["access_token"] rescue nil
37
+ access_token = get_token(corpsecret)
30
38
  if access_token.nil?
31
- raise Exception.new("QyWeixin access token authorize false, corpid: #{corpid}")
39
+ raise Exception.new("Sso access token authorize false, corpsecret: #{corpsecret}")
32
40
  else
33
- redis.set("qywx_access_token", access_token)
34
- redis.expire("qywx_access_token", 7200)
41
+ redis.set("sso_access_token", access_token)
42
+ redis.expire("sso_access_token", 7200)
35
43
  end
36
44
  end
37
45
  end
@@ -40,12 +48,8 @@ module YolSso
40
48
 
41
49
  private
42
50
 
43
- def get_token(app_id, app_secret)
44
- http_get(token_url(app_id, app_secret))
45
- end
46
-
47
- def token_url(corpid, secret)
48
- "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=#{corpid}&corpsecret=#{secret}"
51
+ def get_token(corpsecret)
52
+ JWT.encode({exp: (Time.now+7200).to_i}, corpsecret, 'HS256') rescue nil
49
53
  end
50
54
 
51
55
  def handle_res(res)
@@ -0,0 +1,27 @@
1
+ module YolSso
2
+ module Connection
3
+ module User
4
+ def get_user(userid)
5
+ JSON.parse(redis.get("userinfo_#{userid}")) rescue nil
6
+ end
7
+
8
+ def get_users(params)
9
+ http_get(users_path, params)
10
+ end
11
+
12
+ def get_menus(userid)
13
+ JSON.parse(redis.get("menus_#{agentid}_#{userid}")) rescue nil
14
+ end
15
+
16
+ def get_api_list(userid)
17
+ JSON.parse(redis.get("accesses_#{agentid}_#{userid}")) rescue nil
18
+ end
19
+
20
+ private
21
+
22
+ def users_path
23
+ "open_api/users"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,11 +1,15 @@
1
1
  module YolSso
2
2
  class Configuration
3
3
 
4
- OPTIONS = [:host, :agentid].freeze
4
+ OPTIONS = [:host, :agentid, :redis, :corpsecret].freeze
5
5
 
6
6
  attr_accessor :host
7
7
 
8
8
  attr_accessor :agentid
9
9
 
10
+ attr_accessor :redis
11
+
12
+ attr_accessor :corpsecret
13
+
10
14
  end
11
15
  end
@@ -1,3 +1,3 @@
1
1
  module YolSso
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yol_sso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - luojie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-06 00:00:00.000000000 Z
11
+ date: 2021-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".DS_Store"
91
+ - ".gitignore"
91
92
  - Gemfile
92
93
  - Gemfile.lock
93
94
  - LICENSE.txt
@@ -98,6 +99,7 @@ files:
98
99
  - lib/yol_sso/connection.rb
99
100
  - lib/yol_sso/connections/base.rb
100
101
  - lib/yol_sso/connections/message.rb
102
+ - lib/yol_sso/connections/user.rb
101
103
  - lib/yol_sso/helpers/pkcs7_encoder.rb
102
104
  - lib/yol_sso/helpers/prpcrypt.rb
103
105
  - lib/yol_sso/models/configuration.rb