diff --git a/scripts/adduser.sh b/scripts/adduser.sh index 1f213c8..437cf88 100755 --- a/scripts/adduser.sh +++ b/scripts/adduser.sh @@ -9,30 +9,31 @@ case $1 in esac done -IFS=',' read user group <<< "$1" +IFS=',' read -r user group <<< "$1" file=${2:-""} if [ -n "$file" ]; then - grep -q $user $file - if [ $? = 0 ]; then + if rg -q "$user" "$file"; then echo "user $user already exists" exit 1 fi - echo "" >> $file - echo "user,$user,registered,user,$user,," >> $file - echo "user,$user,active,user,$user,," >> $file - echo "user,$user,member,group,$group,," >> $file + { + echo "" + echo "user,\"$user\",registered,user,$user,," + echo "user,\"$user\",active,user,$user,," + echo "user,\"$user\",member,group,$group,," + } >> "$file" - fga tuple write user:$user registered user:$user - fga tuple write user:$user active user:$user - fga tuple write user:$user member group:$group -elif [ $fga = true ]; then - echo "fga tuple write user:$user registered user:$user" - echo "fga tuple write user:$user active user:$user" - echo "fga tuple write user:$user member group:$group" + fga tuple write user:"$user" registered user:"$user" + fga tuple write user:"$user" active user:"$user" + fga tuple write user:"$user" member group:"$group" +elif [ "$fga" = true ]; then + echo "fga tuple write user:\"$user\" registered user:\"$user\"" + echo "fga tuple write user:\"$user\" active user:\"$user\"" + echo "fga tuple write user:\"$user\" member group:\"$group\"" else - echo "user,$user,registered,user,$user,," - echo "user,$user,active,user,$user,," - echo "user,$user,member,group,$group,," + echo "user,\"$user\",registered,user,\"$user\",," + echo "user,\"$user\",active,user,\"$user\",," + echo "user,\"$user\",member,group,\"$group\",," fi diff --git a/scripts/deluser.sh b/scripts/deluser.sh index 64257ec..7a45195 100755 --- a/scripts/deluser.sh +++ b/scripts/deluser.sh @@ -1,27 +1,27 @@ #!/bin/sh user=${1:-"unknown"} -file=${2:-""} +group=${2:-"uknown"} +file=${3:-""} if [ -n "$file" ]; then - grep -q $user $file - if [ $? = 1 ]; then - echo "user $user doesn't exists" + if rg -q "$user" "$file"; then + echo "user \"$user\" doesn't exists" exit 1 fi - sed -n "/$user/{p; d}" $file + sed -n "/$user/{p; d}" "$file" echo "Are you sure? (y/n)" - read yesno + read -r yesno case $yesno in y|yes) - sed -i "/$user/d" $file - fga tuple delete user:$user registered user:$user - fga tuple delete user:$user active user:$user - fga tuple delete user:$user member group:$group + sed -i "/$user/d" "$file" + fga tuple delete user:"$user" registered user:"$user" + fga tuple delete user:"$user" active user:"$user" + fga tuple delete user:"$user" member group:"$group" ;; esac else - echo "fga tuple delete user:$user registered user:$user" - echo "fga tuple delete user:$user active user:$user" - echo "fga tuple delete user:$user member group:$group" + echo "fga tuple delete user:\"$user\" registered user:\"$user\"" + echo "fga tuple delete user:\"$user\" active user:\"$user\"" + echo "fga tuple delete user:\"$user\" member group:\"$group\"" fi diff --git a/shell.nix b/shell.nix index f15b503..49b4534 100644 --- a/shell.nix +++ b/shell.nix @@ -2,9 +2,30 @@ sources ? import ./npins, pkgs ? import sources.nixpkgs { }, }: +let + addUser = pkgs.writeShellApplication rec { + name = "deluser"; + runtimeInputs = [ + pkgs.openfga-cli + pkgs.ripgrep + pkgs.sedutil + ]; + text = builtins.readFile ./scripts/${name}.sh; + }; + delUser = pkgs.writeShellApplication rec { + name = "adduser"; + runtimeInputs = [ + pkgs.openfga-cli + pkgs.ripgrep + ]; + text = builtins.readFile ./scripts/${name}.sh; + }; +in pkgs.mkShellNoCC { packages = [ pkgs.openfga-cli + addUser + delUser ]; FGA_API_URL = "https://openfga.srv.oceanbox.io"; FGA_STORE_ID = "01JKTZXMP7ANN4GG2P5W8Y56M6";