Index: /branches/release-41/lib/MT/App/Comments.pm
===================================================================
--- /branches/release-41/lib/MT/App/Comments.pm (revision 2749)
+++ /branches/release-41/lib/MT/App/Comments.pm (revision 2821)
@@ -29,5 +29,5 @@
         signup           => \&signup,
         do_signup        => \&do_signup,
-        register         => \&register,
+        # register         => \&register,
         do_register      => \&do_register,
         preview          => \&preview,
@@ -294,5 +294,5 @@
     my $param = {};
     $param->{$_} = $app->param($_) foreach qw(blog_id entry_id static username return_url );
-    my $blog = $app->model('blog')->load( $param->{blog_id} )
+    my $blog = $app->model('blog')->load( $param->{blog_id} || 0 )
         or return $app->error($app->translate('Can\'t load blog #[_1].', $param->{blog_id}));
     my $cfg  = $app->config;
@@ -315,4 +315,7 @@
     my $q   = $app->param;
 
+    return $app->error( $app->translate("Invalid request") )
+      if $app->request_method() ne 'POST';
+
     my $param = {};
     $param->{$_} = $q->param($_)
@@ -320,5 +323,8 @@
       qw(blog_id entry_id static email url username nickname email hint return_url );
 
-    my $user = $app->create_user_pending($param);
+    my $filter_result = $app->run_callbacks( 'api_save_filter.author', $app );
+
+    my $user;
+    $user = $app->create_user_pending($param) if $filter_result;
     unless ($user) {
         my $blog = $app->model('blog')->load( $param->{blog_id} )
@@ -328,6 +334,13 @@
         }
         $param->{error} = $app->errstr;
+        $param->{ 'auth_mode_' . $app->config->AuthenticationModule } = 1;
         return $app->build_page( 'signup.tmpl', $param );
     }
+
+    ## Assign default role
+    $user->add_default_roles;
+
+    my $original = $user->clone();
+    $app->run_callbacks( 'api_post_save.author', $app, $user, $original );
 
     ## Send confirmation email in the background.
@@ -1668,4 +1681,7 @@
     my $q   = $app->param;
 
+    return $app->error( $app->translate("Invalid request") )
+      if $app->request_method() ne 'POST';
+
     my ( $sess_obj, $cmntr ) = $app->get_commenter_session();
     return $app->handle_error( $app->translate('Invalid login') )
@@ -1680,4 +1696,5 @@
     $app->user($cmntr);
     $app->{session} = $sess_obj;
+    my $original = $cmntr->clone();
 
     $app->validate_magic
@@ -1713,4 +1730,6 @@
       if $param{password} && !$param{external_auth};
     if ( $cmntr->save ) {
+        $app->run_callbacks( 'api_post_save.author', $app, $cmntr, $original );
+
         $param{saved} =
           $app->translate('Commenter profile has successfully been updated.');
Index: /branches/release-41/tmpl/comment/register.tmpl
===================================================================
--- /branches/release-41/tmpl/comment/register.tmpl (revision 2088)
+++ /branches/release-41/tmpl/comment/register.tmpl (revision 2821)
@@ -87,4 +87,24 @@
     </mtapp:setting>
 
+    <mt:Loop name="field_loop">
+        <mt:If name="__first__">
+        <input type="hidden" name="_type" value="author" id="obj_type" />
+        <input type="hidden" name="customfield_beacon" value="1" id="customfield_beacon" />
+        </mt:If>
+        <!-- start-customfield_<$mt:Var name="basename"$> -->
+        <mtapp:setting
+            id="$field_id"
+            label="$name"
+            hint="$description"
+            shown="$show_field"
+            show_hint="$show_hint"
+            required="$required">
+
+        <$mt:Var name="field_html"$>
+
+        </mtapp:setting>
+        <!-- end-customfield_<$mt:Var name="basename"$> -->
+    </mt:Loop>
+
     <div class="actions-bar">
         <div class="actions-bar-inner pkg actions">
Index: /branches/release-41/tmpl/comment/signup.tmpl
===================================================================
--- /branches/release-41/tmpl/comment/signup.tmpl (revision 2146)
+++ /branches/release-41/tmpl/comment/signup.tmpl (revision 2821)
@@ -103,4 +103,24 @@
 </mt:if>
 
+<mt:Loop name="field_loop">
+    <mt:If name="__first__">
+    <input type="hidden" name="_type" value="author" id="obj_type" />
+    <input type="hidden" name="customfield_beacon" value="1" id="customfield_beacon" />
+    </mt:If>
+    <!-- start-customfield_<$mt:Var name="basename"$> -->
+    <mtapp:setting
+    id="$field_id"
+    label="$name"
+    hint="$description"
+    shown="$show_field"
+    show_hint="$show_hint"
+    required="$required">
+
+    <$mt:Var name="field_html"$>
+
+    </mtapp:setting>
+    <!-- end-customfield_<$mt:Var name="basename"$> -->
+</mt:Loop>
+
     <div class="actions-bar">
         <div class="actions-bar-inner pkg actions">
Index: /branches/release-41/tmpl/comment/profile.tmpl
===================================================================
--- /branches/release-41/tmpl/comment/profile.tmpl (revision 2784)
+++ /branches/release-41/tmpl/comment/profile.tmpl (revision 2821)
@@ -89,4 +89,24 @@
     </mtapp:setting>
 
+    <mt:Loop name="field_loop">
+        <mt:If name="__first__">
+        <input type="hidden" name="_type" value="author" id="obj_type" />
+        <input type="hidden" name="customfield_beacon" value="1" id="customfield_beacon" />
+        </mt:If>
+        <!-- start-customfield_<$mt:Var name="basename"$> -->
+        <mtapp:setting
+        id="$field_id"
+        label="$name"
+        hint="$description"
+        shown="$show_field"
+        show_hint="$show_hint"
+        required="$required">
+
+        <$mt:Var name="field_html"$>
+
+        </mtapp:setting>
+        <!-- end-customfield_<$mt:Var name="basename"$> -->
+    </mt:Loop>
+
 <p><input type="submit" name="submit" id="save-button" class="ti" accesskey="s" value="<__trans phrase="Save">" /></p>
 
