Generate username from email-address

Discussion in 'Tips/Tricks/Mods' started by julez, Aug 18, 2006.

  1. julez

    julez New Member

    Hi forum,

    System installed is:
    - SuSE 10.1
    - ISPConfig 2.2.6 stable

    We set up our system with prefix [DOMAIN]_ so that every user gets a system username like "domain.tld_user".

    Now to keep the system clean we'd like generate all usernames from their given email-addresses. "user1@domain.tld" would automatically get "domain.tld_user1" as his system username.

    An _almost_ smooth way to reach that would be editing /home/admispconfig/ispconfig/lib/plugins/isp_username.plugin.php line 80+ this way:

    Code:
                    // neuer Username
                    if($user_prefix != '') {
                            // Mit User-Prefix
                            $len_textbox = ((30 - strlen($user_prefix)) < 10)? 10: 29 - strlen($user_prefix);
                            // PRE-MOD $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="'.$len_textbox.'" maxlength="'.(32 - strlen($user_prefix)).'" class="text" >';
                            $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="'.$len_textbox.'" maxlength="'.(32 - strlen($user_prefix)).'" class="text" [COLOR="Red"]onBlur="this.form.plugin[user].value = this.form.plugin[email].value"[/COLOR] >';
                    } else {
                            //Ohne User-Prefix
                            $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="30" maxlength="32" class="text">';
                    }
            $go_api->renderer->element_jscript_nummer++;
            }
    
            /****************************************************
            * Emailadresse vorbereiten
            *****************************************************/
    
            //if($go_api->db->queryOneRecord("SELECT * FROM isp_isp_domain, isp_dep, isp_nodes WHERE isp_isp_domain.doc_id = isp_dep.child_doc_id AND isp_isp_domain.doctype_id = isp_dep.child_doctype_id AND isp_dep.parent_doctype_id = ".$web['doctype_id']." AND isp_dep.p
              //PRE-MOD $out_email = '<input type="text" name="plugin[email]" size="10" maxlength="32" class="text" value="'.$user["user_email"].'">@'.$web["web_domain"];
              $out_email = '<input type="text" name="plugin[email]" size="10" maxlength="32" class="text" value="'.$user["user_email"].'" [COLOR="Red"]onBlur="this.form.plugin[user].value = this.form.plugin[email].value" [/COLOR]>@'.$web["web_domain"];              }
    
    Leaving the field "email" would fill the next field "username" automatically an keep the value even if changed manually.

    Unfortunately Javascript can't deal with the brackets [] in
    Code:
    "this.form.plugin[user].value = this.form.plugin[email].value".
    
    I tested it with renamed input name="pluginemail" and input name="pluginuser" and it worked like a charm.

    Renaming the input name="plugin" will break ISPConfig. Leaving them like they are breaks the hack.

    Any hints on another solution are highly appreciated.

    jz
     
  2. julez

    julez New Member

    FIXED: Generate username from email-address

    Hi forum,

    i found a quick'n'dirty solution on my own to make it work:

    Code:
                    // neuer Username
                    if($user_prefix != '') {
                            // Mit User-Prefix
                            $len_textbox = ((30 - strlen($user_prefix)) < 10)? 10: 29 - strlen($user_prefix);
                            // PRE-MOD $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="'.$len_textbox.'" maxlength="'.(32 - strlen($user_prefix)).'" class="text" >';
                            $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="'.$len_textbox.'" maxlength="'.(32 - strlen($user_prefix)).'" class="text" [COLOR="Red"]readonly="readonly"[/COLOR] >';
                    } else {
                            //Ohne User-Prefix
                            $out_user = $user_prefix.'<input type="text" name="plugin[user]" size="30" maxlength="32" class="text">';
                    }
            $go_api->renderer->element_jscript_nummer++;
            }
    
            /****************************************************
            * Emailadresse vorbereiten
            *****************************************************/
    
            //if($go_api->db->queryOneRecord("SELECT * FROM isp_isp_domain, isp_dep, isp_nodes WHERE isp_isp_domain.doc_id = isp_dep.child_doc_id AND isp_isp_domain.doctype_id = isp_dep.child_doctype_id AND isp_dep.parent_doctype_id = ".$web['doctype_id']." AND isp_dep.p
              //PRE-MOD $out_email = '<input type="text" name="plugin[email]" size="10" maxlength="32" class="text" value="'.$user["user_email"].'">@'.$web["web_domain"];
              $out_email = '<input type="text" name="plugin[email]" size="10" maxlength="32" class="text" value="'.$user["user_email"].'" [COLOR="Red"]onKeyUp="document.forms[0].elements[2].value = document.forms[0].elements[1].value"[/COLOR] >@'.$web["web_domain"];
    
    Just check the code parts marked in red and you'll see.

    jz
     
    Last edited: Aug 18, 2006
  3. falko

    falko Super Moderator ISPConfig Developer

    Sounds interesting. :) Please report back if it works reliably.
     
  4. julez

    julez New Member

    Hi Falko,

    patch is running stable for us.

    Maybe it can be added to next release with an additional switch like "Generate Usernames from eMail-Address" when user-prefix ist set to [WEB] oder [DOMAIN] in ISPConfig system settings.

    Regards,

    jz
     
  5. falko

    falko Super Moderator ISPConfig Developer

    I've added this request to our bugtracker for now. :)
     
  6. xgportal

    xgportal New Member

    I tried that patch, but i removed the readonly, since if i don't ispconfig tells me the username must be 4 or more chars. and i left my [DOMAIN]_ setting too.
     
  7. ciprianz

    ciprianz New Member

    I don't why but it is not working for me
    I modified in Management and set user prefix to [Domain]
    I also modified the code from isp_username.plugin.php

    But it doesn't modify anything in database
    all it does it generates the user name.
    any ideea?
     
  8. falko

    falko Super Moderator ISPConfig Developer

    Which ISPConfig version do you use?
    The patch was made for ISPConfig 2.2.6, I don't know if it works in newer versions.
     
  9. ciprianz

    ciprianz New Member

    I used ISPConfig 2.2.9
    Thank you for asking
     
  10. falko

    falko Super Moderator ISPConfig Developer

    I don't know if it's working in ISPConfig 2.2.9... :(
     
  11. alex916

    alex916 New Member

    I use 2.2.9 and i haven't problem.
    Patch works great.
     
  12. kassie

    kassie New Member

    Does this work with 2.2.13??
     

Share This Page