From dfc1aab6764264963c2d9fb39a16d16a3b925c12 Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Sat, 10 Oct 2020 05:01:14 -0400
Subject: [PATCH] Finish check_user functions

---
 documents/references.md |  3 +++
 utils.sh                | 55 ++++++++++++++++++++++++++++++++---------
 2 files changed, 46 insertions(+), 12 deletions(-)

diff --git a/documents/references.md b/documents/references.md
index bc9c881..a779f9a 100644
--- a/documents/references.md
+++ b/documents/references.md
@@ -36,6 +36,9 @@ Various references used in project.
 ### Get User's name
 <https://stackoverflow.com/a/19306837>
 
+### Check for Root User
+<https://stackoverflow.com/a/18216122>
+
 ### Text Manipulation
 #### Change Output Color
 <https://stackoverflow.com/a/5947802>
diff --git a/utils.sh b/utils.sh
index 5dd16f7..237d9b3 100755
--- a/utils.sh
+++ b/utils.sh
@@ -35,25 +35,41 @@ return_value=""
  ##
 function check_is_user () {
 
-    # Check number of passed function args. Continue.
+    # Check number of passed function args.
     if [[ $# == 1 ]]
     then
-
+        # Expected number of args passed. Continue.
         local username=$USER
         local check_user=$1
 
-        echo "user is ${username}."
-        echo "check_user is ${check_user}"
+        # Determine user to check for.
+        to_lower ${check_user}
+        if [[ "${return_value}" == "root" || "${return_value}" == "sudo" ]]
+        then
+            # Special logic for checking if "sudo"/"root" user.
+            if [[ "$EUID" != 0 ]]
+            then
+                echo -e "${text_red}Sudo permissions required. Please run as root.${text_reset}"
+                exit
+            fi
+        else
+            # Standard logic for all other user checks.
+            if [[ "${username}" != "${check_user}" ]]
+            then
+                echo -e "${text_red}User check (${check_user}) failed. Current user is ${username}.${text_reset}"
+                exit 1
+            fi
+        fi
 
     # Handle for too many args.
     elif [[ $# > 1 ]]
     then
-        echo "Too many args passed. Expected one arg of username to check against."
+        echo -e "${text_red}Too many args passed. Expected one arg of username to check against.${text_reset}"
         exit 1
 
     # Handle for too few args.
     else
-        echo "Too few args passed. Expected one arg of username to check against."
+        echo -e "${text_red}Too few args passed. Expected one arg of username to check against.${text_reset}"
         exit 1
     fi
 }
@@ -68,23 +84,38 @@ function check_is_not_user () {
     # Check number of passed function args.
     if [[ $# == 1 ]]
     then
-
-        # Got the expected number of function args. Continue.
+        # Expected number of args passed. Continue.
         local username=$USER
         local check_user=$1
 
-        echo "user is ${username}."
-        echo "check_user is ${check_user}"
+        # Determine user to check for.
+        to_lower ${check_user}
+        if [[ "${return_value}" == "root" || "${return_value}" == "sudo" ]]
+        then
+            # Special logic for checking if "sudo"/"root" user.
+            if [[ "$EUID" == 0 ]]
+            then
+                echo -e "${text_red}Standard permissions required. Please run as non-root user.${text_reset}"
+                exit
+            fi
+        else
+            # Standard logic for all other user checks.
+            if [[ "${username}" == "${check_user}" ]]
+            then
+                echo -e "${text_red}Not-user check (${check_user}) failed. Current user is ${username}.${text_reset}"
+                exit 1
+            fi
+        fi
 
     # Handle for too many args.
     elif [[ $# > 1 ]]
     then
-        echo "Too many args passed. Expected one arg of username to check against."
+        echo -e "${text_red}Too many args passed. Expected one arg of username to check against.${text_reset}"
         exit 1
 
     # Handle for too few args.
     else
-        echo "Too few args passed. Expected one arg of username to check against."
+        echo -e "${text_red}Too few args passed. Expected one arg of username to check against.${text_reset}"
         exit 1
     fi
 }
-- 
GitLab