Browse Source

Implement userdel-all command

Serj Kalichev 9 years ago
parent
commit
92c7b0535d
1 changed files with 42 additions and 0 deletions
  1. 42 0
      scripts/rfa

+ 42 - 0
scripts/rfa

@@ -33,6 +33,8 @@ Commands:
 	Set access rights for user(s) to repository.
   userdel <repository> <r/w/rw> <user1> [user2] ...
 	Remove access rights for user(s) to repository.
+  userdel-all <repository> <r/w/rw>
+	Remove access rights for all users for repository.
 EOF
 }
 
@@ -316,6 +318,42 @@ user_del()
 	done
 }
 
+# Remove all users from access groups
+user_del_all()
+{
+	local w=0
+	local r=0
+	local repository_name=$1
+	local user_name=""
+
+	shift
+	case "$1" in
+	r)
+		r=1
+		;;
+	w)
+		w=1
+		;;
+	rw|wr)
+		r=1
+		w=1
+		;;
+	*)
+		echo "Error: Illegal parameter \"$1\"" 1>&2
+		exit 1
+		;;
+	esac
+
+	if test $r -ne 0; then
+		user_name=`get_group_members "${group_r_prefix}${repository_name}"`
+		test "x$user_name" != "x" && user_del "$repository_name" "r" $user_name
+	fi
+	if test $w -ne 0; then
+		user_name=`get_group_members "${group_w_prefix}${repository_name}"`
+		test "x$user_name" != "x" && user_del "$repository_name" "w" $user_name
+	fi
+}
+
 # Find repository VCS
 find_repo_vcs()
 {
@@ -461,6 +499,10 @@ case "$action" in
 	test $# -lt 3 && { echo "Error: Not enough parameters" 1>&2; exit 1; }
 	user_del "$@"
 	;;
+"deluser-all"|"userdel-all")
+	test $# -lt 2 && { echo "Error: Not enough parameters" 1>&2; exit 1; }
+	user_del_all "$@" || exit 1
+	;;
 *)
 	echo "Error: Unknown command" 1>&2
 	exit 1