diff -r ddfd7fe0990c applications/welcome/models/db.py
--- a/applications/welcome/models/db.py	Mon Aug 08 19:22:35 2011 -0500
+++ b/applications/welcome/models/db.py	Tue Aug 09 09:56:28 2011 +0300
@@ -42,6 +42,7 @@
 mail.settings.login = 'username:password'      # your credentials or None
 
 auth.settings.hmac_key = '<your secret key>'   # before define_tables()
+auth.settings.is_active_writable = False       # Set to true, if you want auth.signature to be writeable. You can override it by writing db.table_name.is_active.writable = True
 auth.define_tables()                           # creates all needed tables
 auth.settings.mailer = mail                    # for user email verification
 auth.settings.registration_requires_verification = False
diff -r ddfd7fe0990c gluon/tools.py
--- a/gluon/tools.py	Mon Aug 08 19:22:35 2011 -0500
+++ b/gluon/tools.py	Tue Aug 09 09:56:28 2011 +0300
@@ -855,6 +855,7 @@
         settings.allow_basic_login_only = False
         settings.on_failed_authorization = \
             self.url('user',args='not_authorized')
+        settings.is_active_writable = True
 
         settings.on_failed_authentication = lambda x: redirect(x)
 
@@ -1024,30 +1025,6 @@
 
         def lazy_user (auth = self): return auth.user_id
         reference_user = 'reference %s' % settings.table_user_name
-        def represent(id,record=None,s=settings):
-            try:
-                user = s.table_user(id)
-                return '%(first_name)s %(last_name)s' % user
-            except: return id
-        self.signature = db.Table(self.db,'auth_signature',
-                                  Field('is_active','boolean',default=True),
-                                  Field('created_on','datetime',
-                                        default=request.now,
-                                        writable=False,readable=False),
-                                  Field('created_by',
-                                        reference_user,
-                                        default=lazy_user,represent=represent,
-                                        writable=False,readable=False,
-                                        ),
-                                  Field('modified_on','datetime',
-                                        update=request.now,default=request.now,
-                                        writable=False,readable=False),
-                                  Field('modified_by',
-                                        reference_user,represent=represent,
-                                        default=lazy_user,update=lazy_user,
-                                        writable=False,readable=False))
-
-
 
     def _get_user_id(self):
        "accessor for auth.user_id"
@@ -1154,6 +1131,15 @@
 
         db = self.db
         settings = self.settings
+        request = current.request
+        
+        def represent(id,record=None,s=settings):
+            try:
+                user = s.table_user(id)
+                return '%(first_name)s %(last_name)s' % user
+            except: return id
+
+        
         if not settings.table_user_name in db.tables:
             passfield = settings.password_field
             if username or settings.cas_provider:
@@ -1337,6 +1323,26 @@
                 actions=['login','validate','logout'],
                 maps=maps)
 
+# Defining signature
+        reference_user = 'reference %s' % settings.table_user_name
+        self.signature = db.Table(self.db,'auth_signature',
+                                  Field('is_active','boolean',default=True,writable=self.settings.is_active_writable,readable=self.settings.is_active_writable),
+                                  Field('created_on','datetime',
+                                        default=request.now,
+                                        writable=False,readable=False),
+                                  Field('created_by',
+                                        reference_user,
+                                        default=self.user_id,represent=represent,
+                                        writable=False,readable=False,
+                                        ),
+                                  Field('modified_on','datetime',
+                                        update=request.now,default=request.now,
+                                        writable=False,readable=False),
+                                  Field('modified_by',
+                                        reference_user,represent=represent,
+                                        default=self.user_id,update=self.user_id,
+                                        writable=False,readable=False))
+
 
     def log_event(self, description, origin='auth'):
         """
