fixing for app_auth
This commit is contained in:
1 parent
d3ca1647be
commit
7b40706aed
9 files changed
+225
-112
No files matched your search
+44
-27
@@ -15,55 +15,72 @@ class AppAuth
|
||||
|
||||
|
||||
has_and_belongs_to_many :roles
|
||||
has_and_belongs_to_many :sub_roles
|
||||
|
||||
attr_protected :roles,:sub_roles,:privilege_users,:blocked_users,:users
|
||||
|
||||
def add_role role
|
||||
add_operation(:roles,role)
|
||||
end
|
||||
|
||||
def add_sub_role role
|
||||
add_operation(:sub_roles,role)
|
||||
end
|
||||
|
||||
def remove_role role
|
||||
remove_operation(:roles,role)
|
||||
end
|
||||
|
||||
def remove_sub_role role
|
||||
remove_operation(:sub_roles,role)
|
||||
end
|
||||
|
||||
def add_user_to_black_list user
|
||||
unless self.blocked_users.include?(user)
|
||||
self.blocked_users << user
|
||||
self.save!
|
||||
else
|
||||
false #should put error message for user existed in list already
|
||||
end
|
||||
add_operation(:blocked_users,user)
|
||||
end
|
||||
|
||||
|
||||
def remove_user_from_black_list user
|
||||
if self.blocked_users.include? user
|
||||
self.blocked_users.delete user
|
||||
remove_operation(:blocked_users,user)
|
||||
end
|
||||
|
||||
def add_user_to_privilege_list user
|
||||
add_operation(:privilege_users,user)
|
||||
end
|
||||
|
||||
def remove_user_from_privilege_list user
|
||||
remove_operation(:privilege_users,user)
|
||||
end
|
||||
|
||||
def remove_operation(item,obj)
|
||||
if (self.send item).include? obj
|
||||
(self.send item).delete obj
|
||||
self.save!
|
||||
else
|
||||
false #should put error message for user not existed in list
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def add_user_to_privilege_list user
|
||||
unless self.privilege_users.include? user
|
||||
self.privilege_users << user
|
||||
def add_operation(item,obj)
|
||||
unless (self.send item).include?(obj)
|
||||
(self.send item) << obj
|
||||
self.save!
|
||||
else
|
||||
false #should put error message for user existed in list already
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def remove_user_from_privilege_list user
|
||||
if self.privilege_users.include? user
|
||||
self.privilege_users.delete user
|
||||
self.save!
|
||||
else
|
||||
false #should put error message for user not existed in list
|
||||
end
|
||||
end
|
||||
|
||||
def auth_users
|
||||
if self.all?
|
||||
User.all.entries
|
||||
else
|
||||
ary= self.roles.collect do |role|
|
||||
role.users
|
||||
ary=[]
|
||||
[:roles,:sub_roles].each do |t_role|
|
||||
ary += (self.send t_role).collect do |role|
|
||||
role.users
|
||||
end
|
||||
end
|
||||
ary << self.privilege_users
|
||||
ary.flatten!
|
||||
ary.flatten!.uniq
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -9,9 +9,13 @@ class ModuleApp
|
||||
field :intro
|
||||
field :update_info
|
||||
field :create_date
|
||||
field :enable_frontend,type: Boolean
|
||||
|
||||
field :app_pages ,type: Array
|
||||
field :widgets ,type: Array
|
||||
|
||||
has_one :app_auth,dependent: :delete
|
||||
|
||||
|
||||
|
||||
end
|
||||
@@ -19,7 +19,10 @@ class User
|
||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||
|
||||
def avb_apps
|
||||
query = AppAuth.any_of({all: true},{privilege_user_ids: self.id},{roles: self.role.id}).excludes(blocked_user_ids: self.id)
|
||||
sub_role_ids_ary=self.sub_roles.collect{|t| t.id}
|
||||
query1 = AppAuth.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: self.id)
|
||||
query2 = AppAuth.any_of({all: true},{privilege_user_ids: self.id},{role_ids: self.role.id}).excludes(blocked_user_ids: self.id)
|
||||
(query1 + query2).uniq
|
||||
end
|
||||
|
||||
def name
|
||||
|
||||
Reference in new issue
Block a user