Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
simple_controller
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
simple_controller
Commits
13a05c58
Commit
13a05c58
authored
Nov 06, 2022
by
liyijie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: policy增加parents
parent
59b5a702
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
1 deletion
+15
-1
base_controller.rb
lib/simple_controller/base_controller.rb
+15
-1
No files found.
lib/simple_controller/base_controller.rb
View file @
13a05c58
...
...
@@ -181,20 +181,30 @@ class SimpleController::BaseController < ::InheritedResources::Base
# 对于resource的相关操作,都调用policy进行authorize
def
set_resource_ivar
(
resource
)
parent_objects
=
symbols_for_association_chain
.
reduce
({})
do
|
h
,
sym
|
h
[
sym
.
to_sym
]
=
instance_variable_get
(
"@
#{
sym
}
"
)
h
end
policy_info
=
{
record:
resource
,
klass:
resource_class
,
context:
params
,
parents:
parent_objects
,
}
authorize_if_policy_class
policy_info
,
"
#{
action_name
}
?"
instance_variable_set
(
"@
#{
resource_instance_name
}
"
,
resource
)
end
def
set_collection_ivar
(
collection
)
parent_objects
=
symbols_for_association_chain
.
reduce
({})
do
|
h
,
sym
|
h
[
sym
.
to_sym
]
=
instance_variable_get
(
"@
#{
sym
}
"
)
h
end
policy_info
=
{
collection:
collection
,
klass:
resource_class
,
context:
params
,
parents:
parent_objects
,
}
authorize_if_policy_class
policy_info
,
"
#{
action_name
}
?"
instance_variable_set
(
"@
#{
resource_collection_name
}
"
,
collection
)
...
...
@@ -257,7 +267,11 @@ class SimpleController::BaseController < ::InheritedResources::Base
if
policy_class
.
present?
&&
(
scope_policy_class
=
"
#{
policy_class
}
::Scope"
.
safe_constantize
)
&&
origin_end_of_association_chain
.
is_a?
(
ActiveRecord
::
Relation
)
scope_policy_class
.
new
(
current_user
,
origin_end_of_association_chain
).
resolve
parent_objects
=
symbols_for_association_chain
.
reduce
({})
do
|
h
,
sym
|
h
[
sym
.
to_sym
]
=
instance_variable_get
(
"@
#{
sym
}
"
)
h
end
scope_policy_class
.
new
(
current_user
,
origin_end_of_association_chain
,
**
parent_objects
).
resolve
else
origin_end_of_association_chain
.
respond_to?
(
:all
)
?
origin_end_of_association_chain
.
all
:
origin_end_of_association_chain
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment