Website:Users
From MatureAsskickers Wiki
Contents |
Users Table
The users table stores all of the user data. This data is used for Session permissions, HTTP authentication, FTP authentication, Sendmail aliases, and forum (board) integration.
Data Structure
Fields
- userid
- datetime_insert
- datetime_update
- datetime_expire
- username (mandatory)
- useralias
- password (mandatory)
- ftpchroot
- httproot
- forum_userid
- userpermissions
- groups
- data
Descriptions
userid
- (integer, unique)
- A unique identification number for the user. No other user will have the same number and it is used to refer to the user from other table's. This value is assigned when the user is created and is read-only.
- Read Permission: users.read.userid (all)
- Write Permission: users.write.userid (none)
datetime_insert
- (YYYY-MM-DD hh:mm:ss)
- The timestamp of when the user was created. This value is assigned when the user is created and is read-only.
- Read Permission: users.read.datetime_insert (all)
- Write Permission: users.write.datetime_insert (none)
datetime_update
- (YY-MM-DD hh:mm:ss)
- The timestamp of when the user was last edited. This value is automatically handled and is read-only.
- Read Permission: users.read.datetime_update (all)
- Write Permission: users.write.datetime_update (none)
datetime_expire
- (YY-MM-DD hh:mm:ss)
- The timestamp of when the user has/will expire. Once the current date-time has surpassed this value the user is effectively deleted, however the user can still be edited. Expiring a user will disable HTTP authentication and FTP authentication, Sendmail aliases, and general display within XML feeds.
- Read Permission: users.read.datetime_expire (defined, self)
- Write Permission: users.write.datetime_expire (defined)
username
- (string, 2-80 characters, alpha-numeric [a-z0-9])
- This is a unique name for each user. No other user, recruit or group can use the same name. It is a mandatory field when adding a new user and when cannot be made empty when editing a user. This value is used for HTTP authentication and FTP authentication.
- Read Permission: users.read.username (all)
- Write Permission: users.write.username (defined, self)
- See HTTP Authentication, FTP Authentication
useralias
- (string, 2-80 characters, alpha-numeric [a-z0-9])
- This is a unique name for each user. No other user, recruit or group can use the same name. It is an optional field when adding a new user and can be made empty when editing a user. This value is used for Sendmail aliases.
- Read Permission: users.read.useralias (defined)
- Write Permission: users.write.useralias (defined)
- See Sendmail Aliases
password
- (string, 6-255 characters, any characters, minimum 1 upper-case, 1 lower-case, and 1 numeric)
- This is the md5 hash of the users password. It is a mandatory field when adding a new user and can be changed when editing a user. This value is used for HTTP authentication and FTP authentication.
- Read Permission: users.read.password (defined, self)
- Write Permission: users.write.password (defined, self)
- See HTTP Authentication, FTP Authentication
- (string, 'user@domain.com' format)
- This is the users real email address. It is an optional field when adding a new user and can be made empty when editing a user. This value is used for Sendmail aliases and HTTP form mail.
- Read Permission: users.read.email (defined, self)
- Write Permission: users.write.email (defined, self)
- See Sendmail Aliases
ftpchroot
- (string, 0-255 characters)
- This is the server's path to the users FTP home directory. It is an optional field when adding a new user and can be made empty when editing a user. The path must reside within the jail directory defined in the configuration file. This value is used for FTP access.
- Read Permission: users.read.ftpchroot (defined)
- Write Permission: users.write.ftpchroot (defined)
- See HTTP Authentication, FTP Authentication
httproot
- (string, 0-255 characters)
- This is the server's path to the users HTTP home directory. It is an optional field when adding a new user and can be made empty when editing a user. The path must reside within the jail directory defined in the configuration file. This value is used for HTTP access.
- Read Permission: users.read.httproot (defined)
- Write Permission: users.write.httproot (defined)
forum_userid
- (integer, unique)
- This is the user's forum account's unique id. No two users can share the same number. It is an optional field when adding a new user and can be made empty when editing a user. Setting this field will allow the user to login to the website using either the username/password combination described above, or the username/password combination from the forum.
- Read Permission: users.read.forum_userid (defined, self)
- Write Permission: users.write.forum_userid (defined, self)
userpermissions
- (string)
- This is a CSV (comma separated values) of the user's granted permissions. The permissions granted are global and effective within all groups.
- Read Permission: users.read.userpermissions (defined)
- Write Permission: users.write.userpermissions (defined)
- See Permissions
groups
- (array)
- This is an array of the user's groups. It is an optional field and can be made empty when editing the user.
- AKA (Also Known As) usergroups which is synonymous with groupusers.
- Read Permission: users.read.groups (defined)
- Write Permission: users.write.groups (defined)
- See Groups, HTTP Authentication, FTP Authentication
data
- (array)
- This is special array of custom unreserved key value pairs. It is an optional field and any users.data.* value can be made empty when editing a user.
- Read Permission: users.read.data (all)
- Write Permission: users.write.data (defined, self)
- See Custom Data
Reading Data
See XML Data
XML
Sample XML output
/xml/users.xml
<?xml version = "1.0" encoding="UTF-8" standalone="yes"?>
<users>
<user id="99">
<userid>99</userid>
<datetime_insert>2006-10-10 07:55:29</datetime_insert>
<datetime_update>2007-02-19 19:02:14</datetime_update>
<datetime_expire>2008-08-05 12:00:00</datetime_expire>
<username>Player</username>
<useralias>player</useralias>
<password>68eacb97d86f0c4621fa2b0e17cabd8c</password>
<email>user@domain.com</email>
<ftpchroot>/home/player/</ftpchroot>
<httproot>/home/player/html</httproot>
<forum_userid>7</forum_userid>
<userpermissions>
<csv><![CDATA[ ftp.read.user,ftp.write.user ]]></csv>
<ftp.read.user>1</ftp.read.user>
<ftp.write.user>1</ftp.write.user>
</userpermissions>
<groups>
<group id="1">
<groupname>TWL</groupname>
</group>
<group id="2">
<groupname>BFCL</groupname>
</group>
<group id="3">
<groupname>OGL</groupname>
</group>
</groups>
<data>
<key>value</key>
<...>...</...>
</data>
</user>
<user id="...">
...
</user>
</users>
The Request
The following url keys can be used in the HTTP GET request to filter and/or sort the XML.
- userid (default all) - Filter by a single userid or CSV of multiple userid's.
/xml/users.xml?userid=1,2,3
- groupids (default all) - Filter by a single groupid or CSV of multiple groupid's.
/xml/users.xml?groupids=1,2,3
- expired (default 0) - Filter by 0 for non-expired, 1 for expired.
/xml/users.xml?expired=1
- username (default all) - Filter by a single username.
/xml/recruits.xml?username=recruit
Writing Data
HTTP POST
See HTTP POST Data
Adding a user (_user_add)
- Permissions required: users.write.username (defined), users.write.password (defined)
A simple example of adding a new user.
<form action="/xml/httppost.xml" method="post"> <input type="hidden" name="_action" value="_user_add"> username: <input type="text" name="username"> password: <input type="password" name="password"> <input type="submit" value="add"> </form>
Editing a user (_user_edit)
- Permissions required: users.write.username (defined), users.write.password (defined)
A simple example of adding a user.
<form action="/xml/httppost.xml" method="post"> <input type="hidden" name="_action" value="_user_edit"> <input type="hidden" name="userid" value="99"> username: <input type="text" name="username" value="Player"> password: <input type="password" name="password" value=""> <input type="submit" value="edit"> </form>
Deleting a user (_user_delete)
- Permissions required: users.delete (defined)
A simple example of deleting a user.
<form action="/xml/httppost.xml" method="post"> <input type="hidden" name="_action" value="_user_delete"> <input type="hidden" name="userid" value="99"> <input type="submit" value="delete"> </form>
Editing a user's groups (_user_edit_groups)
- Permissions required: users.write.groups (defined)
A simple example of editing a user's groups using CSV (comma separated values) of groupid's.
<form action="/xml/httppost.xml" method="post"> <input type="hidden" name="_action" value="_user_edit_groups"> <input type="hidden" name="userid" value="99"> <input type="text" name="groups" value="1,2,3"> <input type="submit" value="edit user groups"> </form>
A simple example of editing a user's groups using a select array of groupid's.
<form action="/xml/httppost.xml" method="post">
<input type="hidden" name="_action" value="_user_edit_groups">
<input type="hidden" name="userid" value="99">
<select name="groups[]" multiple>
<option value="1" selected>TWL</option>
<option value="2" selected>BFCL</option>
<option value="3" selected>OGL</option>
</select>
<input type="submit" value="edit user groups">
</form>
Adding a user with groups (_user_add, _user_edit_groups)
- Permissions required: users.write.* (defined)
A more complex example of adding a new user and simultaneously assigning the user to an array of groups using multiple actions. The user submitting the form will need write permissions for each field or the relative value will be ignored.
<form action="/xml/httppost.xml" method="post">
<input type="hidden" name="_action[]" value="_user_add">
<input type="hidden" name="_action[]" value="_user_edit_groups">
username: <input type="text" name="username">
password: <input type="password" name="password">
<select name="groups[]" multiple>
<option value="1" selected>TWL</option>
<option value="2">BFCL</option>
<option value="3">OGL</option>
</select>
datetime_expire: <input type="text" name="datetime_expire">
useralias: <input type="text" name="useralias">
email: <input type="text" name="email">
ftpchroot: <input type="text" name="ftpchroot">
httproot: <input type="text" name="httproot">
forum_userid: <input type="text" name="forum_userid">
userpermissions: <textarea name="userpermissions"></textarea>
<input type="submit" value="add user">
</form>
