tazpanel rev 115
settings.cgi: add lock/unlock/change passwd in user managment
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Apr 15 12:01:19 2011 +0200 (2011-04-15) |
parents | c9bc33ec8b6f |
children | 30036a49cacd |
files | TODO settings.cgi |
line diff
1.1 --- a/TODO Fri Apr 15 11:39:12 2011 +0200 1.2 +++ b/TODO Fri Apr 15 12:01:19 2011 +0200 1.3 @@ -4,14 +4,16 @@ 1.4 1.5 * Add full support for undigest to pkgs.cgi 1.6 * Add support for geniso2usb in live.cgi 1.7 - * Entry to change user password in settings.cgi 1.8 * Create a step-by-step Live system builder (ending with an 1.9 ISO or USB install) 1.10 * Radically improve hardware.cgi using tazhw capabilities, install 1.11 - drivers and firmware, setup printers and manage devices (mount, 1.12 - umount, format, backup with dd or ?) 1.13 + drivers and firmware, setup printers and manage devices (mount with 1.14 + loop & crypto support, umount, eject, burn, format, backup with dd or ?) 1.15 * Improve boot.cgi to handle theming GRUB, fbsplash and Slim and 1.16 improve rcS.conf. 1.17 * Crond management interface 1.18 * Firewall PID file and configuration 1.19 + * bootfloppybox support in boot.cgi (versatile floppy + floppy set) 1.20 + * slitaz installer support ? 1.21 + * desktopbox support with logout 1.22
2.1 --- a/settings.cgi Fri Apr 15 11:39:12 2011 +0200 2.2 +++ b/settings.cgi Fri Apr 15 12:01:19 2011 +0200 2.3 @@ -37,17 +37,37 @@ 2.4 # 2.5 2.6 case " $(GET) " in 2.7 - *\ user*) 2.8 + *\ do\ *) 2.9 + # Assume not array support in httpd_helper.sh ;^) 2.10 + users="" 2.11 + IFS="&" 2.12 + for i in $QUERY_STRING ; do 2.13 + case "$i" in 2.14 + user=*) users="$users ${i#user=}" ;; 2.15 + esac 2.16 + done 2.17 + unset IFS 2.18 + for cmd in "Delete user" "Lock user" "Unlock user" \ 2.19 + "Change password" ; do 2.20 + [ "$(GET do)" == "$(gettext "$cmd")" ] || continue 2.21 + for user in $users ; do 2.22 + case "$cmd" in 2.23 + Delete*) deluser $user ;; 2.24 + Lock*) passwd -l $user ;; 2.25 + Unlock*) passwd -u $user ;; 2.26 + Change*) echo "$user:$(GET password)" | chpasswd ;; 2.27 + esac 2.28 + done 2.29 + done ;; 2.30 + *\ adduser\ *) 2.31 # 2.32 # Manage system user accounts 2.33 # 2.34 - if [ "$(GET deluser)" ]; then 2.35 - deluser $(GET deluser) 2.36 - fi 2.37 user=$(GET adduser) 2.38 + passwd=$(GET passwd) 2.39 if [ -n "$user" ]; then 2.40 adduser -D $user 2.41 - echo "$(GET passwd)" | chpasswd 2.42 + echo "$user:$passwd" | chpasswd 2.43 for g in audio cdrom floppy video 2.44 do 2.45 addgroup $user $g 2.46 @@ -77,45 +97,61 @@ 2.47 # Users management 2.48 # 2.49 cat <<EOT 2.50 +<a name="users"></a> 2.51 <h3>`gettext "Manage users"`</h3> 2.52 <form method="get" action="$SCRIPT_NAME"> 2.53 -$(table_start) 2.54 -<thead> 2.55 - <tr> 2.56 - <td>`gettext "Login"`</td> 2.57 - <td>`gettext "User ID"`</td> 2.58 - <td>`gettext "Name"`</td> 2.59 - <td>`gettext "Home"`</td> 2.60 - <td>`gettext "SHell"`</td> 2.61 - </tr> 2.62 -</thead> 2.63 +<div id="actions"> 2.64 + <div class="float-left"> 2.65 + $(gettext "Selection:") 2.66 + <input type="submit" name="do" value="`gettext "Delete user"`" /> 2.67 + <input type="submit" name="do" value="`gettext "Lock user"`" /> 2.68 + <input type="submit" name="do" value="`gettext "Unlock user"`" /> 2.69 + <input type="submit" name="do" value="`gettext "Change password"`" /> 2.70 + </div> 2.71 + <div class="float-right"> 2.72 + $(gettext "password":) 2.73 + <input type="text" name="password" /> 2.74 + </div> 2.75 +</div> 2.76 EOT 2.77 - for i in `cat /etc/passwd | cut -d ":" -f 1` 2.78 + table_start 2.79 + cat << EOT 2.80 +<tr class="thead"> 2.81 + <td>`gettext "Login"`</td> 2.82 + <td>`gettext "User ID"`</td> 2.83 + <td>`gettext "Name"`</td> 2.84 + <td>`gettext "Home"`</td> 2.85 + <td>`gettext "Shell"`</td> 2.86 +</tr> 2.87 +EOT 2.88 + for login in `cat /etc/passwd | cut -d ":" -f 1` 2.89 do 2.90 - if [ -d /home/$i ]; then 2.91 - login=$i 2.92 - uid=`cat /etc/passwd | grep $i | cut -d ":" -f 3` 2.93 - gid=`cat /etc/passwd | grep $i | cut -d ":" -f 4` 2.94 - name=`cat /etc/passwd | grep $i | cut -d ":" -f 5 | \ 2.95 - sed s/,,,//` 2.96 - home=`cat /etc/passwd | grep $i | cut -d ":" -f 6` 2.97 - shell=`cat /etc/passwd | grep $i | cut -d ":" -f 7` 2.98 - echo '<tr>' 2.99 - echo "<td><input type='hidden' name='user' /> 2.100 - <input type='checkbox' name='deluser' value='$login' /> 2.101 - <img src='$IMAGES/user.png' />$login</td>" 2.102 - echo "<td>$uid:$gid</td>" 2.103 - echo "<td>$name</td>" 2.104 - echo "<td>$home</td>" 2.105 - echo "<td>$shell</td>" 2.106 - echo '</tr>' 2.107 + if [ -d /home/$login ]; then 2.108 + colorlogin=$login 2.109 + grep -qs "^$login:!" /etc/shadow && 2.110 + colorlogin="<span style='color: red;'>$login</span>" 2.111 + IFS=':' 2.112 + set -- $(grep "^$login:" /etc/passwd) 2.113 + unset IFS 2.114 + uid=$3 2.115 + gid=$4 2.116 + name="$(echo $5 | sed s/,.*//)" 2.117 + home="$6" 2.118 + shell=$7 2.119 + cat <<EOT 2.120 +<tr> 2.121 + <td><input type='checkbox' name='user' value='$login' /> 2.122 + <img src='$IMAGES/user.png' />$colorlogin</td> 2.123 + <td>$uid:$gid</td> 2.124 + <td>$name</td> 2.125 + <td>$home</td> 2.126 + <td>$shell</td> 2.127 +</tr> 2.128 +EOT 2.129 fi 2.130 done 2.131 table_end 2.132 cat << EOT 2.133 - <div> 2.134 - <input type="submit" value="`gettext "Delete selected user"`" /> 2.135 - </div> 2.136 </form> 2.137 2.138 <h4>`gettext "Add a new user"`</h4>