2013-04-17 17:08:21 +10:00
class Admin :: GroupsController < Admin :: AdminController
2015-01-05 18:51:45 +01:00
2013-05-08 15:20:38 +10:00
def index
2014-05-09 18:22:15 +10:00
groups = Group . order ( :name )
2015-01-05 18:51:45 +01:00
2014-05-09 18:22:15 +10:00
if search = params [ :search ]
search = search . to_s
2015-01-05 18:51:45 +01:00
groups = groups . where ( " name ILIKE ? " , " % #{ search } % " )
2014-05-09 18:22:15 +10:00
end
2015-01-05 18:51:45 +01:00
2014-05-09 18:22:15 +10:00
if params [ :ignore_automatic ] . to_s == " true "
groups = groups . where ( automatic : false )
end
2015-01-05 18:51:45 +01:00
2013-05-09 17:37:34 +10:00
render_serialized ( groups , BasicGroupSerializer )
2013-05-08 15:20:38 +10:00
end
2014-04-23 13:25:02 -04:00
def show
render nothing : true
end
2015-10-26 15:56:59 -04:00
def bulk
render nothing : true
end
def bulk_perform
group = Group . find ( params [ :group_id ] . to_i )
if group . present?
users = ( params [ :users ] || [ ] ) . map { | u | u . downcase }
user_ids = User . where ( " username_lower in (:users) OR email IN (:users) " , users : users ) . pluck ( :id )
2016-02-18 14:03:00 -05:00
group . bulk_add ( user_ids ) if user_ids . present?
2015-10-26 15:56:59 -04:00
end
render json : success_json
end
2015-01-05 18:51:45 +01:00
def create
group = Group . new
2015-01-23 18:25:43 +01:00
2015-01-05 18:51:45 +01:00
group . name = ( params [ :name ] || '' ) . strip
2015-04-10 12:17:28 +10:00
save_group ( group )
2014-11-20 09:29:56 -08:00
end
2015-01-05 18:51:45 +01:00
def update
2015-01-21 20:52:48 +01:00
group = Group . find ( params [ :id ] )
2013-12-23 15:46:00 +01:00
2015-01-23 20:31:48 +01:00
# group rename is ignored for automatic groups
group . name = params [ :name ] if params [ :name ] && ! group . automatic
2015-04-10 12:17:28 +10:00
save_group ( group )
end
def save_group ( group )
2015-01-05 18:51:45 +01:00
group . alias_level = params [ :alias_level ] . to_i if params [ :alias_level ] . present?
group . visible = params [ :visible ] == " true "
2015-09-01 16:52:05 -04:00
grant_trust_level = params [ :grant_trust_level ] . to_i
group . grant_trust_level = ( grant_trust_level > 0 && grant_trust_level < = 4 ) ? grant_trust_level : nil
2015-04-10 12:17:28 +10:00
group . automatic_membership_email_domains = params [ :automatic_membership_email_domains ] unless group . automatic
group . automatic_membership_retroactive = params [ :automatic_membership_retroactive ] == " true " unless group . automatic
group . primary_group = group . automatic ? false : params [ " primary_group " ] == " true "
2015-12-07 12:39:28 +01:00
group . incoming_email = group . automatic ? nil : params [ :incoming_email ]
2015-04-10 12:17:28 +10:00
title = params [ :title ] if params [ :title ] . present?
group . title = group . automatic ? nil : title
2013-12-23 15:46:00 +01:00
if group . save
2015-01-23 18:25:43 +01:00
render_serialized ( group , BasicGroupSerializer )
2013-12-23 15:46:00 +01:00
else
render_json_error group
2013-06-17 12:54:25 +10:00
end
2013-05-09 11:33:56 +10:00
end
2015-01-05 18:51:45 +01:00
def destroy
2015-01-21 20:52:48 +01:00
group = Group . find ( params [ :id ] )
2014-11-20 09:29:56 -08:00
2015-01-05 18:51:45 +01:00
if group . automatic
can_not_modify_automatic
2014-11-20 09:29:56 -08:00
else
2015-01-05 18:51:45 +01:00
group . destroy
render json : success_json
2014-11-20 09:29:56 -08:00
end
end
2015-01-05 18:51:45 +01:00
def refresh_automatic_groups
Group . refresh_automatic_groups!
render json : success_json
end
2015-11-10 00:52:04 +11:00
def add_owners
2015-01-21 20:52:48 +01:00
group = Group . find ( params . require ( :id ) )
2015-01-05 18:51:45 +01:00
return can_not_modify_automatic if group . automatic
2015-11-10 00:52:04 +11:00
users = User . where ( username : params [ :usernames ] . split ( " , " ) )
2015-02-25 14:47:45 +00:00
users . each do | user |
2015-04-15 13:36:54 +05:30
if ! group . users . include? ( user )
group . add ( user )
end
2015-11-10 00:52:04 +11:00
group . group_users . where ( user_id : user . id ) . update_all ( owner : true )
2015-01-05 18:51:45 +01:00
end
2015-11-10 00:52:04 +11:00
render json : success_json
2013-05-09 11:33:56 +10:00
end
2015-11-10 00:52:04 +11:00
def remove_owner
2015-01-21 20:52:48 +01:00
group = Group . find ( params . require ( :id ) )
2015-01-05 18:51:45 +01:00
return can_not_modify_automatic if group . automatic
2015-11-10 00:52:04 +11:00
user = User . find ( params [ :user_id ] . to_i )
group . group_users . where ( user_id : user . id ) . update_all ( owner : false )
2015-01-05 18:51:45 +01:00
2015-11-10 00:52:04 +11:00
render json : success_json
2013-06-17 12:54:25 +10:00
end
protected
2015-01-05 18:51:45 +01:00
def can_not_modify_automatic
render json : { errors : I18n . t ( 'groups.errors.can_not_modify_automatic' ) } , status : 422
end
2013-04-17 17:08:21 +10:00
end