tinycm view plugins/users/users.cgi @ rev 92

Improve users and community plugin
author Christophe Lincoln <pankso@slitaz.org>
date Fri Feb 17 12:44:05 2017 +0100 (2017-02-17)
parents 12c983066e52
children 95673a3de4e4
line source
1 #!/bin/sh
2 #
3 # TinyCM/TazBug Plugin - Users profile and admin
4 #
6 # Display user public profile.
7 public_people() {
8 echo "</pre>"
9 }
11 # Display authenticated user profile. TODO: change password
12 auth_people() {
13 cat << EOT
14 Email : $MAIL
15 </pre>
17 <div id="tools">
18 <a href="$script?dashboard">Dashboard</a>
19 <a href="$script?modprofile">$(gettext "Modify profile")</a>
20 </div>
21 EOT
22 }
24 case " $(GET) " in
25 *\ users\ *)
26 d="Users"
27 header
28 html_header
29 user_box
30 if check_auth && ! admin_user; then
31 gettext "You must be admin to manage users" && exit 0
32 fi
33 cat << EOT
34 <h2>Users admin</h2>
35 <div id="tools">
36 <a href="$script?dashboard">Dashboard</a>
37 <a href='$script?loggedusers'>Logged users</a>
38 <a href='$script?userslist'>Users list</a>
39 </div>
40 <pre>
41 User accounts : $(ls -1 $PEOPLE | wc -l)
42 Logged users : $(ls $sessions | wc -l)
43 People DB : $PEOPLE
44 Auth file : $AUTH_FILE
45 EOT
47 echo "</pre>"
48 html_footer && exit 0 ;;
50 *\ userslist\ *)
51 # List all users (slow if a lot a of accounts)
52 d="Users"
53 header
54 html_header
55 user_box
56 if check_auth && ! admin_user; then
57 gettext "You must be admin to manage users"
58 exit 0
59 fi
60 users=$(ls -1 $PEOPLE | wc -l)
61 cat << EOT
62 <h2>Users: $users</h2>
63 <div id="tools">
64 <a href="$script?dashboard">Dashboard</a>
65 <a href="$script?users">Users admin</a>
66 <a href='$script?loggedusers'>Logged users</a>
67 </div>
68 <pre>
69 EOT
70 for u in $(ls $PEOPLE)
71 do
72 # Skip corrupted accounts
73 if ! [ -f "${PEOPLE}/${u}/account.conf" ]; then
74 echo "${u} : Missing account.conf"
75 continue
76 fi
77 . "${PEOPLE}/${u}/account.conf"
78 cat << EOT
79 $(get_gravatar $MAIL 24) <a href="?user=$USER">$USER</a> | $NAME | $MAIL
80 EOT
81 # deluser link --> use 'tazu' on SliTaz
82 #: <a href="?users&amp;deluser=$USER">$(gettext "delete")</a>
83 unset NAME USER
84 done
85 echo "</pre>"
86 html_footer && exit 0 ;;
88 *\ loggedusers\ *)
89 # Show online users based on sessions files.
90 d="Logged users"
91 header
92 html_header
93 user_box
94 if ! check_auth; then
95 gettext "You must be logged in to view online users"
96 exit 0
97 fi
98 logged="$(ls $sessions | wc -l)"
99 cat << EOT
100 <h2>Logged users: $logged</h2>
101 <div id="tools">
102 <a href="$script?dashboard">Dashboard</a>
103 <a href="$script?users">Users admin</a>
104 </div>
105 <pre>
106 EOT
107 for u in $(ls $sessions)
108 do
109 . "${PEOPLE}/${u}/account.conf"
110 cat << EOT
111 $(get_gravatar $MAIL 24) <a href="?user=$USER">$USER</a> | $NAME
112 EOT
113 done
114 echo "</pre>"
115 html_footer && exit 0 ;;
117 *\ user\ *)
118 # User profile page
119 d="$(GET user)"
120 last="$(cat $PEOPLE/"$(GET user)"/last)"
121 header
122 html_header
123 user_box
124 . $PEOPLE/"$(GET user)"/account.conf
125 cat << EOT
126 <h2>$(get_gravatar $MAIL) $NAME</h2>
128 <pre>
129 $(gettext "User name :") $USER
130 $(gettext "Last login :") $last
131 EOT
132 if check_auth && [ "$(GET user)" == "$user" ]; then
133 auth_people
134 else
135 # check_auth will set VARS to current logged user: re-source
136 . $PEOPLE/"$(GET user)"/account.conf
137 public_people
138 fi
139 # Display personal user profile
140 if [ -f "$PEOPLE/$USER/profile.txt" ]; then
141 echo "<h2>$(gettext "About me")</h2>"
142 cat $PEOPLE/$USER/profile.txt | wiki_parser
143 fi
144 html_footer && exit 0 ;;
146 *\ modprofile\ *)
147 # Let user edit their profile
148 if ! check_auth; then
149 echo "ERROR" && exit 0
150 fi
151 d="$user profile"
152 path=${PEOPLE}/${user}
153 header
154 html_header
155 user_box
156 cat << EOT
157 <h2>$(gettext "User:") $user</h2>
158 <p>$(gettext "Modify your profile settings")
159 <div id="edit">
161 <form method="get" action="$script" name="editor">
162 <input type="hidden" name="saveprofile" />
163 <h3>Name</h3>
164 <input type="text" name="name" value="$NAME" />
165 <h3>Email</h3>
166 <input type="text" name="mail" value="$MAIL" />
167 <h3>About you</h3>
168 <textarea name="profile">$(cat "$path/profile.txt")</textarea>
169 <input type="submit" value="$(gettext "Save profile")" />
170 </form>
172 </div>
173 EOT
174 html_footer && exit 0 ;;
176 *\ saveprofile\ *)
177 # Save a user profile
178 if check_auth; then
179 path="$PEOPLE/$user"
180 sed -i s"/^NAME=.*/NAME=\"$(GET name)\"/" ${path}/account.conf
181 sed -i s"/^MAIL=.*/MAIL=\"$(GET mail)\"/" ${path}/account.conf
182 cp -f ${path}/profile.txt ${path}/profile.bak
183 sed "s/$(echo -en '\r') /\n/g" > ${path}/profile.txt << EOT
184 $(GET profile)
185 EOT
186 header "Location: $script?user=$user"
187 fi && exit 0 ;;
189 esac