easy_login 1.1.0 → 1.1.2

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: 4a57e821422a316de12f805f9f639473334d33b5
4
- data.tar.gz: e544cf4de046b12c993b612b172f71cbc81c41fa
3
+ metadata.gz: e00cd84fb0550b1f959fd94e89b221d5b8ae86bd
4
+ data.tar.gz: c570dcae15f361d3c20809352f027d614f2395f3
5
5
  SHA512:
6
- metadata.gz: 3e7a69063d661542d440bc69005ce716d797e730b72abb09529b4d7fe95314cdaa62bd46986f95dfeb2f3d6b1576590d043df83bebd825060496dc84caf5fe45
7
- data.tar.gz: 95f8672679ae005263b8dd3d4aa64ecd57710dfa641043727f457fbb40c908f386987ebabe8c2b46025bc6f2c7935d6a35717428236ba99e1590bdd1eb85a9b8
6
+ metadata.gz: 85626c496515785223794660e051b19e58a1c1a97e3b630683fd1054df7a4e2396cf1c2835ffaf57a2de7025cf210225d64b2fbfb60c193870efcd04218ed57a
7
+ data.tar.gz: 03f6b8b3ac5394d18157d59e106e0167a1d39c9938acbecf8a2e1e9375bba2e7afc90e6adbcad665440f8149788e70c8fd3670df98b59eea323fae8f0a024f83
data/README.md CHANGED
@@ -47,41 +47,44 @@ Add a config file to `config/redirect_to.yml` as following
47
47
 
48
48
  ```yaml
49
49
  default:
50
- unsign: login_users_path
50
+ ope: pass
51
+ customer: pass
52
+ unsigned: redirect_to->login_users_path
51
53
  users:
52
54
  login:
53
- ope: root_path
54
- customer: root_path
55
+ ope: redirect_to->root_path
56
+ customer: redirect_to->root_path
55
57
  tools:
56
58
  default:
57
- customer: 404
58
- unsign: /tools/login
59
+ customer: raise->Routing Error
60
+ unsigned: redirect_to->/tools/login
59
61
  login:
60
- ope: tools_path
61
- customer: 404
62
+ ope: redirect_to->tools_path
63
+ customer: raise->Other Error
62
64
  ```
63
65
 
64
- The basic format for this redirect schema is like
66
+ The basic format for this permission schema is like
65
67
 
66
68
  ```yaml
67
69
  controller:
68
70
  action:
69
- user_role1: redirect_url
70
- user_role2: redirect_url
71
- user_role3: redirect_url
71
+ user_role1: pass
72
+ user_role2: redirect_to->{path}
73
+ user_role3: raise->{message}
72
74
  ```
73
75
 
74
76
  The `user_role` if the role attribute of your user model configed in
75
77
  `config/application.rb` or `config/environments/*.rb`
76
- `redirect_url` has 3 types
78
+ `action` has 3 types
77
79
 
78
80
  ```
79
- 404 --> means raise a 404 error name 'Routing Error'
80
- XXXX_path --> means using rails routing method
81
- nil --> means not redirect and render view absolutely
82
- otherwise --> means using as absolute url string
81
+ pass --> run the logic in action normally
82
+ redirect_to --> redirect to other {path}, {path} also has two types, {xxx_path} means using rails routing method, and {other format} means used as absolute url string
83
+ raise --> raise a 404 response with {message}
83
84
  ```
84
85
 
86
+ If the schema was not defined in controller/action/user_role, the schema in controller/default/user_role will be used, Also, if it was not defined in controller/default/user_role, default/user_role will be used, if still default/user_role could not be found, easylogin will do action same as 'pass'
87
+
85
88
  *※ If you also want to use in ActionCable in Rails 5*
86
89
  Add following code to `application_cable/connection.rb`
87
90
 
@@ -0,0 +1,35 @@
1
+ module EasyLogin
2
+ class Permission
3
+ def self.action(controller_ins)
4
+ url = self.parse controller_ins
5
+ if url
6
+ params = url.split ':'
7
+ return if params[0] == "pass"
8
+ raise ActionController::RoutingError.new(params[1]) if params[0] == "raise"
9
+ if params[0] == "redirect_to"
10
+ params[1] = controller_ins.send params[1] if params[1].end_with? "path"
11
+ controller_ins.redirect_to params[1]
12
+ end
13
+ end
14
+ end
15
+
16
+ private
17
+ def self.parse(controller_ins)
18
+ per = YAML.load_file Rails.root.join "config", "easy_login_permission.yml"
19
+ controller = controller_ins.params[:controller]
20
+ action = controller_ins.params[:action]
21
+
22
+ default = nil
23
+ role = controller_ins.signed_in? ? controller_ins.current_user.send(EasyLogin.config.user_role_attr) : 'unsigned'
24
+ default = per['default'][role] if per['default'] && per['default'][role]
25
+
26
+ return default unless per[controller]
27
+ per = per[controller]
28
+ default = per['default'][role] if per['default'] && per['default'][role]
29
+
30
+ return default unless per[action]
31
+ per = per[action]
32
+ return per[role] || default
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module EasyLogin
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.2"
3
3
  end
data/lib/easy_login.rb CHANGED
@@ -6,7 +6,7 @@ require "easy_login/version"
6
6
  require "easy_login/config"
7
7
  require "easy_login/session"
8
8
  require "easy_login/grape_helper"
9
- require "easy_login/redirect"
9
+ require "easy_login/permission"
10
10
 
11
11
  module EasyLogin
12
12
  def self.helper_method
@@ -30,7 +30,7 @@ module EasyLogin
30
30
  if base == ApplicationController
31
31
  base.helper_method EasyLogin.helper_method
32
32
  base.send :before_action do |controller|
33
- Redirect.parse controller
33
+ Permission.action controller
34
34
  end
35
35
  elsif base == ApplicationCable::Connection
36
36
  base.send :identified_by, :client
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_login
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - goshan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-22 00:00:00.000000000 Z
11
+ date: 2017-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,7 +70,7 @@ files:
70
70
  - lib/easy_login.rb
71
71
  - lib/easy_login/config.rb
72
72
  - lib/easy_login/grape_helper.rb
73
- - lib/easy_login/redirect.rb
73
+ - lib/easy_login/permission.rb
74
74
  - lib/easy_login/session.rb
75
75
  - lib/easy_login/version.rb
76
76
  - pkg/easy_login-0.1.0.gem
@@ -1,23 +0,0 @@
1
- module EasyLogin
2
- class Redirect
3
- def self.parse(controller_ins)
4
- per = YAML.load_file Rails.root.join "config", "redirect_to.yml"
5
- controller = controller_ins.params[:controller]
6
- action = controller_ins.params[:action]
7
- p = per[controller]
8
- p = p[action] || p['default'] if p
9
- p = per['default'] unless p
10
- if controller_ins.signed_in?
11
- url = p[controller_ins.current_user.send(EasyLogin.config.user_role_attr)]
12
- else
13
- url = p['unsign']
14
- end
15
- if url
16
- raise ActionController::RoutingError.new("Routing Error") if url == 404
17
- url = controller_ins.send url if url.end_with? "path"
18
- return if url == "nil"
19
- controller_ins.redirect_to url
20
- end
21
- end
22
- end
23
- end