DB Authentication Plugin

Description

A plugin to replace the default Trac auth plugin. It allows for users/groups to be stored in a database (SQLite, PostgreSQL, MySQL), true login/logout, can serve multiple projects, and maintains cookies so you can keep the login for longer than just one session.

Bugs/Feature Requests

Existing bugs and feature requests for DbAuthPlugin are here.

If you have any issues, create a new ticket.

Download

Download the zipped source for Trac 0.9 or 0.10.

Source

You can check out DbAuthPlugin from here using Subversion, or browse the source with Trac.

Usage / Install

These usage/install notes are for the version that works with Trac 0.10. If you are still working with DbAuthPlugin for Trac 0.9, see this version of the wiki page.

  • In the install/ directory, you will find SQLite and MySQL scripts to create the three tables needed. You will then have to populate those tables with insert statements. The envname fields in each of the tables is the name of your Trac environment. Note the 'all' envname will allow the user to be in all environments, but have only one row in the table (multiple projects).
    sqlite> insert into trac_permissions values ('all', 'brad', 'admins');
    sqlite> insert into trac_users values ('all','brad','brad','brad@dsource.org');
    
  • Example of loading table:
    sqlite3 /path/to/project/db/trac.db < create-tables-sqlite-3.0.sql
    
  • If you add users/groups to the table(s), you'll need to give them permissions in trac-admin or webadmin plugin.
    % trac-admin /path/to/env permission add admins TRAC_ADMIN
    
  • If you would like to restrict_owner on tickets to only be the users in your tables, you need to make use of the userdir.py file. You will need to see Ticket 2456 at p.e.c, and patch Trac accordingly. This wasn't heavily tested with the 0.10 version in [838].
  • Make these changes in the global trac.ini file, or your environment's trac.ini file. The global one may make more sense, because this plugin is used across environments:
    [components]
    trac.web.auth.* = disabled
    #trac.userdir.* = enabled  # only if you want to use this
    #webadmin.* = enabled
    dbauth.* = enabled
    
    [dbauth]
    #database = sqlite:/home/brad/dev/python/trac-dbauth/0.10/install/dbauth.db
    database = mysql://brad:brad@localhost/dbauth
    envroot = /var/trac/
    
    users_table = trac_users
    users_envname_field = envname
    users_username_field = username
    users_password_field = password
    users_email_field = email
    
    perms_table = trac_permissions
    perms_envname_field = envname
    perms_username_field = username
    perms_groupname_field = groupname
    
    cookies_table = trac_cookies
    cookies_envname_field = envname
    cookies_cookie_field = cookie
    cookies_username_field = username
    cookies_ipnr_field = ipnr
    cookies_unixtime_field = unixtime
    
  • As of [838], a CentralDatabaseManager now supports all database backends that Trac works with. SQLite, MySQL, Postgresql

Example

http://trac-hacks.org/attachment/wiki/DbAuthPlugin/dbauth1.png?format=raw

Recent Changes

[1729] by wkornew on 12/22/06 22:55:49

DbAuthPlugin:

Fixed typo. Changed SQL style to match Trac. Removed "Cancel" buttons from interface.

[1491] by wkornew on 11/08/06 04:57:27

DbAuthPlugin:

Workaround for a misdetected email update. We tried to insert a new email value into the session although it already existed. Now, we just delete the email attribute before inserting a new one.

[1489] by wkornew on 11/08/06 00:11:26

DbAuthPlugin:

* fixed use of wrong DB (in case you're using different DBs for Trac and DBAuth)

Author/Contributors

Author: brad
Contributors: Karol Krizka, borrowed heavily from Jonas's original work

Attachments