From 33f50d13a2e2d24a3e6bb05a148246bc98090df0 Mon Sep 17 00:00:00 2001 From: Yevhen Kolomeiko Date: Sat, 25 Nov 2023 02:11:14 +0100 Subject: [PATCH] example_configs(bootstrap.sh): Add check is user in group --- example_configs/bootstrap/bootstrap.sh | 41 +++++++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/example_configs/bootstrap/bootstrap.sh b/example_configs/bootstrap/bootstrap.sh index 94e2cc3..acdfeb4 100755 --- a/example_configs/bootstrap/bootstrap.sh +++ b/example_configs/bootstrap/bootstrap.sh @@ -166,6 +166,34 @@ delete_group() { fi } +get_user_details() { + local id="$1" + + # shellcheck disable=SC2016 + local query='{"query":"query GetUserDetails($id: String!) {user(userId: $id) {id email displayName firstName lastName creationDate uuid groups {id displayName}}}","operationName":"GetUserDetails"}' + make_query <(printf '%s' "$query") <(jo -- id="$id") +} + +user_in_group() { + local user_id="$1" group_name="$2" + + if ! group_exists "$group_name"; then + printf '[WARNING] Group "%s" does not exist\n' "$group_name" + return + fi + + if ! user_exists "$user_id"; then + printf 'User "%s" is not exists\n' "$user_id" + return + fi + + if [[ "$(get_user_details "$user_id" | jq --raw-output --arg displayName "$group_name" '.data.user.groups | any(.[]; contains({"displayName": $displayName}))')" == 'true' ]]; then + return 0 + else + return 1 + fi +} + add_user_to_group() { local user_id="$1" group_name="$2" group_id='' @@ -176,6 +204,11 @@ add_user_to_group() { group_id="$(get_group_id "$group_name")" + if user_in_group "$user_id" "$group_name"; then + printf 'User "%s" already in group "%s" (%s)\n' "$user_id" "$group_name" "$group_id" + return + fi + # shellcheck disable=SC2016 local query='{"query":"mutation AddUserToGroup($user: String!, $group: Int!) {addUserToGroup(userId: $user, groupId: $group) {ok}}","operationName":"AddUserToGroup"}' @@ -226,14 +259,6 @@ user_exists() { fi } -get_user_details() { - local id="$1" - - # shellcheck disable=SC2016 - local query='{"query":"query GetUserDetails($id: String!) {user(userId: $id) {id email displayName firstName lastName creationDate uuid groups {id displayName}}}","operationName":"GetUserDetails"}' - make_query <(printf '%s' "$query") <(jo -- id="$id") -} - delete_user() { local id="$1"