Set initial user password from MemberApp in database
[hcoop/scripts.git] / new-user
index fa4aff8..56d7845 100755 (executable)
--- a/new-user
+++ b/new-user
@@ -3,7 +3,6 @@
 USERNM=$1
 REALNM=$2
 EMAILADDR=$3
-PWFILE=/var/lib/portal/$USERNM
 
 if test -z "$USERNM"; then 
        echo Usage: create-user-wrapper USERNAME \'NAME SURNAME\' [EMAIL]
@@ -15,6 +14,7 @@ if test -z "$REALNM"; then
        exit 1
 fi
 
+INITPW=$(sudo -u hcoop psql hcoop_hcoop -tc "select unix_passwd from MemberApp where name = '${USERNM}';")
 
 
 #
@@ -26,28 +26,25 @@ fi
 #
 # Entry in LDAP is created, set real name
 #
-echo "
-dn: uid=$USERNM,ou=People,dc=hcoop,dc=net
-changetype: modify
-replace: gecos
-gecos: $REALNM
-" | sudo ldapmodify -x -D cn=admin,dc=hcoop,dc=net -y /etc/ldap.secret || \
- (echo Error modifying LDAP entry && exit 3 )
+#echo "
+#dn: uid=$USERNM,ou=People,dc=hcoop,dc=net
+#changetype: modify
+#replace: gecos
+#gecos: $REALNM
+#" | sudo ldapmodify -x -D cn=admin,dc=hcoop,dc=net -y /etc/ldap.secret || \
+# (echo Error modifying LDAP entry && exit 3 )
 
 #
 # Now set the password
 #
-if ! test -r "$PWFILE"; then
+if test -z "$INITPW"; then
        echo "Skipping password set from $PWFILE (doesn't exist or permission denied)"
        #exit 4
 else
-       echo Setting password from $PWFILE
-       sudo sh -c "cat $PWFILE | tee -| /afs/hcoop.net/common/etc/scripts/change-user-password $USERNM" || \
-       ( echo "cat $PWFILE | tee - | change-user-password $USERNM failed" && exit 5 )
-
-       # Delete password file
-       #sudo rm -- "$PWFILE"
-       echo "Not deleting $PWFILE. Enable it in the script when you want"
+       echo Setting password from database
+       actual_user=`whoami`
+       sudo sh -c "echo $INITPW | tee -| /afs/hcoop.net/common/etc/scripts/change-user-password $USERNM" || \
+       ( echo "echo XXX | tee - | change-user-password $USERNM failed" && exit 5 )
 fi
 
 
@@ -58,8 +55,10 @@ if test -z "$EMAILADDR"; then
        echo "Skipping email forwarding, no email address was specified."
 else
        echo setting email forward to "$EMAILADDR"
-       sh -c "echo '$EMAILADDR' > ~$USERNM/.public/.forward" || \
+       FORWARD_PATH=$(sh -c "echo ~$USERNM/.public/.forward")
+       echo "$EMAILADDR" > $FORWARD_PATH || \
        ( echo "Failed to set forward address" && exit 6 )
+       chown $USERNM $FORWARD_PATH
 fi
 
 #