Project

General

Profile

Download (1.68 KB) Statistics
| Branch: | Tag: | Revision:
class UsergroupsController < ApplicationController
include Foreman::Controller::AutoCompleteSearch
include Foreman::Controller::Parameters::Usergroup
include Foreman::Controller::ExternalUsergroupsErrors

before_action :find_resource, :only => [:edit, :update, :destroy]
before_action :get_external_usergroups_to_refresh, :only => [:update]

def index
@usergroups = resource_base_search_and_page(:usergroups)
end

def new
@usergroup = Usergroup.new
end

def create
@usergroup = Usergroup.new(usergroup_params)
if @usergroup.save && refresh_external_usergroups
process_success
else
process_error
end
rescue => e
external_usergroups_error(@usergroup, e)
process_error
end

def edit
end

def update
if @usergroup.update(usergroup_params) &&
refresh_external_usergroups
process_success
else
process_error
end
rescue Foreman::CyclicGraphException => e
@usergroup.errors[:usergroups] = e.record.errors[:base].join(' ')
process_error
rescue => e
external_usergroups_error(@usergroup, e)
process_error
end

def destroy
if @usergroup.destroy
process_success
else
process_error
end
end

private

def find_by_id(permission = :view_usergroups)
Usergroup.authorized(permission).find(params[:id])
end

def get_external_usergroups_to_refresh
# we need to load current status, so we call all explicitly
@external_usergroups = @usergroup.external_usergroups.to_a
end

def external_usergroups
@external_usergroups || []
end

def refresh_external_usergroups
(external_usergroups + @usergroup.external_usergroups).uniq.map(&:refresh)
end
end
(56-56/58)