src/app/controllers/frontend_realms_controller.rb
#
# Copyright 2011 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
class FrontendRealmsController < ApplicationController
before_filter :require_user
before_filter :load_realms, :only =>[:index, :show]
def index
@title = _('Realms')
clear_breadcrumbs
save_breadcrumb(frontend_realms_path)
set_admin_content_tabs 'frontend_realms'
load_backend_realms
respond_to do |format|
format.html
format.js { render :partial => 'list' }
format.xml { @provider_realm = @backend_realms.first if params[:provider_realm_id] }
end
end
def new
require_privilege(Alberich::Privilege::CREATE, FrontendRealm)
@realm = FrontendRealm.new
load_backend_realms
end
def edit
require_privilege(Alberich::Privilege::MODIFY, FrontendRealm)
@realm = FrontendRealm.find(params[:id])
@title = @realm.name
load_backend_realms
end
def update
require_privilege(Alberich::Privilege::MODIFY, FrontendRealm)
@realm = FrontendRealm.find(params[:id])
@title = @realm.name || _('Realm')
if @realm.update_attributes(params[:frontend_realm])
flash[:notice] = _('Realm updated')
redirect_to frontend_realms_url and return
end
load_backend_realms
render :action => 'edit'
end
def create
require_privilege(Alberich::Privilege::CREATE, FrontendRealm)
#@provider = Provider.find(params[:provider_id])
@realm = FrontendRealm.new(params[:frontend_realm])
if @realm.save
flash[:notice] = _('Realm was added')
redirect_to frontend_realm_path(@realm)
else
load_backend_realms
render :new
end
end
def destroy
require_privilege(Alberich::Privilege::MODIFY, FrontendRealm)
if FrontendRealm.destroy(params[:id])
flash[:notice] = _('Realm was deleted')
else
flash[:error] = _('Realm was not deleted')
end
redirect_to frontend_realms_path
end
def multi_destroy
deleted = []
not_deleted = []
if params[:realm_selected].blank?
flash[:error] = _('You must select at least one Realm to delete.')
else
FrontendRealm.find(params[:realm_selected]).each do |realm|
require_privilege(Alberich::Privilege::MODIFY, FrontendRealm)
if realm.destroy
deleted << realm.name
else
not_deleted << realm.name
end
end
end
unless deleted.empty?
flash[:notice] = "#{_('These Realms were deleted:')} #{deleted.join(', ')}"
end
unless not_deleted.empty?
flash[:error] = "#{_('Could not delete these Realms:')} #{not_deleted.join(', ')}"
end
redirect_to frontend_realms_path
end
def show
@realm = FrontendRealm.find(params[:id])
@title = @realm.name
@tab_captions = [_('Properties'), _('Mapping')]
@details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
@details_tab = 'properties' unless ['properties', 'mapping'].include?(@details_tab)
@backend_realm_targets = @realm.realm_backend_targets.select { |x| x.provider_realm_or_provider_type == 'ProviderRealm' }
@backend_provider_targets = @realm.realm_backend_targets.select { |x| x.provider_realm_or_provider_type == 'Provider' }
save_breadcrumb(frontend_realm_path(@realm), @realm.name)
load_backend_realms
respond_to do |format|
format.html { render :action => 'show' }
format.js do
if params.delete :details_pane
render :partial => 'layouts/details_pane' and return
end
render :partial => @details_tab
end
format.json { render :json => @realm }
format.xml { render :show, :locals => { :frontend_realm => @realm } }
end
end
def filter
redirect_to_original({"realms_preset_filter" => params[:realms_preset_filter], "realms_search" => params[:realms_search]})
end
protected
def load_backend_realms
#TODO: list only realms user has permission on
@backend_realms = Provider.list_for_user(current_session, current_user,
Alberich::Privilege::USE).collect do |provider|
provider.provider_realms
end.flatten
@providers = Provider.list_for_user(current_session, current_user,
Alberich::Privilege::USE)
end
def load_realms
@header = [
{:name => '', :sortable => false},
{:name => _('Realm Name'), :sort_attr => :name},
]
@realms = FrontendRealm.apply_filters(:preset_filter_id => params[:realms_preset_filter], :search_filter => params[:realms_search])
end
end