From d9c2e20402d0d73776235d0b91aad4e9c29e9566 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9drix?= <cedric@abonnel.fr>
Date: Mon, 24 Mar 2025 12:23:51 +0100
Subject: [PATCH] create script create_role for pg

---
 scripts/server-postgres/.list_files.txt   |  1 +
 scripts/server-postgres/create_pg_role.sh | 40 +++++++++++++++++++++++
 2 files changed, 41 insertions(+)
 create mode 100644 scripts/server-postgres/create_pg_role.sh

diff --git a/scripts/server-postgres/.list_files.txt b/scripts/server-postgres/.list_files.txt
index cdbcc24..6b23531 100644
--- a/scripts/server-postgres/.list_files.txt
+++ b/scripts/server-postgres/.list_files.txt
@@ -1,2 +1,3 @@
 create_pg_db.sh
+create_pg_role.sh
 setup-postgres17.sh
diff --git a/scripts/server-postgres/create_pg_role.sh b/scripts/server-postgres/create_pg_role.sh
new file mode 100644
index 0000000..239f060
--- /dev/null
+++ b/scripts/server-postgres/create_pg_role.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Basé sur un travail de Cédric Abonnel / Cédrix sous licence CC BY-NC 4.0
+
+# Importer les fonctions communes
+source "$(dirname "$0")/../common/common_utils.sh"
+
+# Vérifier si le script est exécuté en root
+check_root
+
+set -e
+
+ROLE_NAME="$1"
+
+if [[ -z "$ROLE_NAME" ]]; then
+  echo "❌ Usage: $0 <nom_du_role>"
+  exit 1
+fi
+
+echo "🔎 Vérification de l'existence du rôle PostgreSQL '$ROLE_NAME'..."
+ROLE_EXISTS=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_roles WHERE rolname='${ROLE_NAME}'")
+
+if [[ "$ROLE_EXISTS" == "1" ]]; then
+  echo "⚠️ Le rôle '$ROLE_NAME' existe déjà."
+else
+  echo "🔐 Génération d'un mot de passe fort pour le rôle '$ROLE_NAME'..."
+  ROLE_PASSWORD=$(generate_token 20)
+
+  echo "🛠 Création du rôle '$ROLE_NAME' avec LOGIN et mot de passe..."
+  sudo -u postgres psql -c "CREATE ROLE ${ROLE_NAME} WITH LOGIN PASSWORD '${ROLE_PASSWORD}';"
+
+  echo ""
+  echo "✅ Rôle '$ROLE_NAME' créé avec succès."
+  echo "-------------------------------------------"
+  echo " Nom du rôle : ${ROLE_NAME}"
+  echo " Mot de passe : ${ROLE_PASSWORD}"
+  echo "-------------------------------------------"
+  echo " Pensez à sauvegarder ces informations."
+fi
+
+echo "🎉 Opération terminée."