From f6c74463ff54ff2a307f5eb71740e6b1576286bd Mon Sep 17 00:00:00 2001
From: Cornelius Riemenschneider <c.r1@gmx.de>
Date: Fri, 3 Apr 2009 21:35:09 +0200
Subject: [PATCH] implement a username-check for the backend

---
 modules/versioncontrol/versioncontrol.pages.inc |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/modules/versioncontrol/versioncontrol.pages.inc b/modules/versioncontrol/versioncontrol.pages.inc
index 7363fe4..feefb95 100644
--- a/modules/versioncontrol/versioncontrol.pages.inc
+++ b/modules/versioncontrol/versioncontrol.pages.inc
@@ -424,6 +424,7 @@ function versioncontrol_account_edit_form(&$form_state, $uid, $repository, $vcs_
   if ($create_account || $admin_access) {
     if ($create_account) {
       // Have a nice default value for the new VCS username.
+      //TODO: replace with API call to backend
       $vcs_username = strtr(drupal_strtolower($user->name),
         array(' ' => '', '@' => '', '.' => '', '-' => '', '_' => '', '.' => '')
       );
@@ -497,8 +498,15 @@ function versioncontrol_account_edit_form_validate($form, &$form_state) {
     );
   }
   else {
-    // Check for unallowed characters. (Only alphanumeric ones are allowed.)
-    if (ereg("[^[:alnum:]]", $username)) {
+    // Check for unallowed characters, doen by the backend, but with a fallback for alphanum-only
+    if(versioncontrol_backend_implements($vcs_name, 'is_valid_username')) {
+      if(!_versioncontrol_call_backend($vcs_name, 'is_valid_username', $repository, $username)) {
+        form_set_error('account_name',
+          t('The specified @vcs username is invalid.', array('@vcs' => $vcs_name))
+        );
+      }
+    }
+    else if (ereg("[^[:alnum:]]", $username)) {
       form_set_error('account_name',
         t('The specified @vcs username is invalid.', array('@vcs' => $vcs_name))
       );
-- 
1.6.0.5

