#!/bin/sh
#
# BAREOS® - Backup Archiving REcovery Open Sourced
#
# Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
# Copyright (C) 2013-2024 Bareos GmbH & Co. KG
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of version three of the GNU Affero General Public
# License as published by the Free Software Foundation and included
# in the file LICENSE.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# shell script to grant privileges to the bareos database
set -e
set -u

# avoid misleading PostgreSQL warning 'could not change directory to ...'
cd /

#
# Source the Bareos config functions.
#
. "/usr/lib/bareos/scripts"/bareos-config-lib.sh

db_name="${db_name:-$(get_database_name bareos)}"
db_user="${db_user:-$(get_database_user bareos)}"
# if $db_password is defined but empty, an empty password will be used ("-" instead of ":-")
db_password="${db_password-$(get_database_password )}"
temp_sql_grants="/tmp/grants.sql.$$"

if [ $# -gt 0 ]; then
  handle_database_scripts_command_line_parameter $*
fi
# Below this line no additional parameters is allowed in command ($*)
info "Granting ${db_name} tables"


if ! get_database_grant_privileges "postgresql" "${db_user}" "${db_password}" > "${temp_sql_grants}"
then
    error "Error creating privileges."
    exit 1
fi

retval=0
case $(uname -s) in
  *_NT*)
    PAGER="" PGOPTIONS="--client-min-messages=warning" psql --no-psqlrc -f "$(cygpath -w "${temp_sql_grants}")" -d "${db_name}" || retval=$?
    ;;
  *)
    PAGER="" PGOPTIONS="--client-min-messages=warning" psql --no-psqlrc -f "${temp_sql_grants}" -d "${db_name}" || retval=$?
    ;;
esac   
if [ ${retval} -eq 0 ]; then
   info "Privileges for user ${db_user} granted ON database ${db_name}."
else
   error "Error creating privileges."
fi
rm -f "${temp_sql_grants}"


exit ${retval}
