Object Auth. Now object can be included with "include OrbitCoreLib::ObjectAuthable" to use kernel method,such as
1.Object.authed_for_user(user,title_of_object_auth). title_of_object_auth is optional 2.object.authed_users(user,title_of_object_auth) . title_of_object_auth is optional if title_of_object_auth is not given,then it will return calculation across all possiblity.
This commit is contained in:
parent
3ed9b81df9
commit
e20739e32b
|
@ -19,53 +19,50 @@ class Admin::ObjectAuthsController < ApplicationController
|
||||||
# end
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create_role
|
||||||
# app_auth = AppAuth.find_or_create_by(module_app_id: params[:module_app_id])
|
object_auth = ObjectAuth.find(params[:id])
|
||||||
# params[:new].each do |item|
|
params[:new].each do |item|
|
||||||
# field = item[0]
|
field = item[0]
|
||||||
# field_value = item[1]
|
field_value = item[1]
|
||||||
# if field_value!=''
|
if field_value!=''
|
||||||
# case field
|
case field
|
||||||
# when 'role'
|
when 'role'
|
||||||
# app_auth.send("add_#{field}",(Role.find field_value)) rescue nil
|
object_auth.send("add_#{field}",(Role.find field_value)) rescue nil
|
||||||
# when 'sub_role'
|
when 'sub_role'
|
||||||
# app_auth.send("add_#{field}",(SubRole.find field_value)) rescue nil
|
object_auth.send("add_#{field}",(SubRole.find field_value)) rescue nil
|
||||||
# when 'privilege_user'
|
when 'privilege_user'
|
||||||
# app_auth.add_user_to_privilege_list (User.find field_value) rescue nil
|
object_auth.add_user_to_privilege_list (User.find field_value) rescue nil
|
||||||
# when 'blocked_user'
|
when 'blocked_user'
|
||||||
# app_auth.add_user_to_black_list (User.find field_value) rescue nil
|
object_auth.add_user_to_black_list (User.find field_value) rescue nil
|
||||||
# end
|
end
|
||||||
# end
|
end
|
||||||
# end
|
end
|
||||||
# app = ModuleApp.find params[:module_app_id] rescue nil
|
redirect_to edit_admin_object_auth_path(object_auth)
|
||||||
# redirect_to edit_admin_module_app_path(app)
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def remove
|
def remove_role
|
||||||
# app_auth = AppAuth.find( params[:id] )
|
object_auth = ObjectAuth.find(params[:id])
|
||||||
# type = params[:type]
|
type = params[:type]
|
||||||
# field_value = params[:target_id]
|
field_value = params[:target_id]
|
||||||
# if field_value!=''
|
if field_value!=''
|
||||||
# case type
|
case type
|
||||||
# when 'role'
|
when 'role'
|
||||||
# app_auth.remove_role(Role.find field_value) rescue nil
|
object_auth.remove_role(Role.find field_value) rescue nil
|
||||||
# when 'sub_role'
|
when 'sub_role'
|
||||||
# app_auth.remove_sub_role(SubRole.find field_value) rescue nil
|
object_auth.remove_sub_role(SubRole.find field_value) rescue nil
|
||||||
# when 'privilege_user'
|
when 'privilege_user'
|
||||||
# app_auth.remove_user_from_privilege_list (User.find field_value) rescue nil
|
object_auth.remove_user_from_privilege_list (User.find field_value) rescue nil
|
||||||
# when 'blocked_user'
|
when 'blocked_user'
|
||||||
# app_auth.remove_user_from_black_list (User.find field_value) rescue nil
|
object_auth.remove_user_from_black_list (User.find field_value) rescue nil
|
||||||
# end
|
end
|
||||||
# end
|
end
|
||||||
#
|
redirect_to edit_admin_object_auth_path(object_auth)
|
||||||
# app = ModuleApp.find params[:module_app_id] rescue nil
|
|
||||||
# redirect_to edit_admin_module_app_path(app)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@object_auth = ObjectAuth.find(params[:id])
|
@object_auth = ObjectAuth.find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,8 +1,6 @@
|
||||||
<div id="user_role_management">
|
<div id="user_role_management">
|
||||||
<%#= debugger %>
|
|
||||||
<h1>User Role</h1>
|
<h1>User Role</h1>
|
||||||
<%= debugger %>
|
<%= form_tag(submit_url) do %>
|
||||||
<%= form_tag(polymorphic_path([controller_path.split('/')[0],object,auth.class.name.underscore]),:method => :post) do %>
|
|
||||||
<%= collection_select(:new,:role, Role.all, :id, :key, :prompt => true) %>
|
<%= collection_select(:new,:role, Role.all, :id, :key, :prompt => true) %>
|
||||||
<%= submit_tag 'Add Role' %><br/>
|
<%= submit_tag 'Add Role' %><br/>
|
||||||
<%= collection_select(:new,:sub_role, SubRole.all, :id, :key, :prompt => true) %>
|
<%= collection_select(:new,:sub_role, SubRole.all, :id, :key, :prompt => true) %>
|
||||||
|
@ -16,19 +14,19 @@
|
||||||
<% unless auth.nil? %>
|
<% unless auth.nil? %>
|
||||||
<% auth.roles.each do |role| %>
|
<% auth.roles.each do |role| %>
|
||||||
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %>
|
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %>
|
||||||
<%= link_to '[X]',polymorphic_path(['remove',:admin,object,auth],:type=>'role',:target_id=>role.id),:method => :delete %></li>
|
<%= link_to '[X]',polymorphic_path(ploy_route_ary,:type=>'role',:target_id=>role.id),:method => :delete %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<ul>Sub Roles </ul>
|
<ul>Sub Roles </ul>
|
||||||
<% auth.sub_roles.each do |role| %>
|
<% auth.sub_roles.each do |role| %>
|
||||||
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %> </li><%= link_to '[X]',polymorphic_path(['remove',:admin,object,auth],:type=>'sub_role',:target_id=>role.id),:method => :delete %>
|
<li> <%= role.key %> Build in:<%= role.built_in ? 'Yes' : 'No' %> </li><%= link_to '[X]',polymorphic_path(ploy_route_ary,:type=>'sub_role',:target_id=>role.id),:method => :delete %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<ul>PrivilegeList </ul>
|
<ul>PrivilegeList </ul>
|
||||||
<% auth.privilege_users.each do |user| %>
|
<% auth.privilege_users.each do |user| %>
|
||||||
<li> <%= user.name %> <%= link_to '[X]',polymorphic_path(['remove',:admin,object,auth],:type=>'privilege_user',:target_id=>user.id),:method => :delete %> </li>
|
<li> <%= user.name %> <%= link_to '[X]',polymorphic_path(ploy_route_ary,:type=>'privilege_user',:target_id=>user.id),:method => :delete %> </li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<ul>BlockedList </ul>
|
<ul>BlockedList </ul>
|
||||||
<% auth.blocked_users.each do |user| %>
|
<% auth.blocked_users.each do |user| %>
|
||||||
<li> <%= user.name %><%= link_to '[X]',polymorphic_path(['remove',:admin,object,auth],:type=>'blocked_user',:target_id=>user.id),:method => :delete %> </li>
|
<li> <%= user.name %><%= link_to '[X]',polymorphic_path(ploy_route_ary,:type=>'blocked_user',:target_id=>user.id),:method => :delete %> </li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
|
@ -36,5 +36,5 @@
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<%= render :partial => "admin/components/user_role_management", :locals => { :object => @module_app ,:auth=> @module_app.app_auth } %>
|
<%= render :partial => "admin/components/user_role_management", :locals => { :object => @module_app ,:auth=> @module_app.app_auth ,:submit_url=> admin_module_app_app_auths_path(@module_app),:ploy_route_ary=>['remove',:admin,@module_app,@module_app.app_auth] } %>
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
<!-- Remove if CSS done-->
|
<!-- Remove if CSS done-->
|
||||||
<h3><%= @object_auth.title %></h3>
|
<h3><%= @object_auth.title %></h3>
|
||||||
|
|
||||||
<%= render :partial => "admin/components/user_role_management", :locals => { :object => @object_auth.auth_obj ,:auth=> @object_auth } %>
|
<%= render :partial => "admin/components/user_role_management", :locals => {
|
||||||
|
:object => @object_auth.auth_obj ,:auth=>@object_auth,:submit_url=>create_role_admin_object_auth_path(@object_auth),:ploy_route_ary=>['remove',:admin,@object_auth] } %>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,12 @@ PrototypeR4::Application.routes.draw do
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :assets
|
resources :assets
|
||||||
resources :app_auths
|
resources :app_auths
|
||||||
resources :object_auths
|
resources :object_auths do
|
||||||
|
member do
|
||||||
|
match ':id/create_role',:action => 'create_role',:iia => "post",:as => :create_role
|
||||||
|
match 'remove/:type/:target_id' ,:action=> 'remove_role',:via => "delete",:as =>:remove
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :ad_banners
|
resources :ad_banners
|
||||||
resources :designs do
|
resources :designs do
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
module OrbitCoreLib
|
||||||
|
module ObjectAuthable
|
||||||
|
def self.included(base)
|
||||||
|
base.instance_eval("has_many :object_auths,as: :obj_authable,dependent: :delete")
|
||||||
|
|
||||||
|
base.define_singleton_method :authed_for_user do |user,title = nil|
|
||||||
|
sub_role_ids_ary=user.sub_roles.collect{|t| t.id}
|
||||||
|
if title.nil?
|
||||||
|
auth_object_space = ObjectAuth.where(obj_authable_type: self.to_s)
|
||||||
|
else
|
||||||
|
auth_object_space = ObjectAuth.where(obj_authable_type: self.to_s,title: title)
|
||||||
|
end
|
||||||
|
|
||||||
|
query1 = auth_object_space.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: user.id)
|
||||||
|
query2 = auth_object_space.any_of({all: true},{privilege_user_ids: user.id},{role_ids: user.role.id}).excludes(blocked_user_ids: user.id)
|
||||||
|
result = (query1 + query2).uniq
|
||||||
|
result.collect{|t| t.obj_authable}
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def authed_users(title=nil)
|
||||||
|
users = []
|
||||||
|
unless title.nil?
|
||||||
|
users = self.object_auths.where(title: title )[0].auth_users_after_block_list rescue []
|
||||||
|
else
|
||||||
|
users = self.object_auths.collect{|t| t.auth_users_after_block_list} rescue []
|
||||||
|
users.flatten!.uniq!
|
||||||
|
end
|
||||||
|
users
|
||||||
|
end
|
||||||
|
|
||||||
|
def tell_me_class
|
||||||
|
self.class.name
|
||||||
|
end
|
||||||
|
|
||||||
|
def search_object_db
|
||||||
|
ObjectAuth.where(obj_authable_type: self.class.name)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,9 +1,10 @@
|
||||||
class Post
|
class Post
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
include OrbitCoreLib::ObjectAuthable
|
||||||
|
|
||||||
field :title, :type => String
|
field :title, :type => String
|
||||||
field :body, :type => String
|
field :body, :type => String
|
||||||
embeds_many :comments
|
embeds_many :comments
|
||||||
validates_presence_of :title, :body
|
validates_presence_of :title, :body
|
||||||
has_one :object_auth,as: :obj_authable,dependent: :delete
|
|
||||||
end
|
end
|
Reference in New Issue