HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials

HowtoForge Forums | HowtoForge - Linux Howtos and Tutorials (http://www.howtoforge.com/forums/index.php)
-   Tips/Tricks/Mods (http://www.howtoforge.com/forums/forumdisplay.php?f=19)
-   -   Generate username from email-address (http://www.howtoforge.com/forums/showthread.php?t=6293)

julez 18th August 2006 17:28

Generate username from email-address
 
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" onBlur="this.form.plugin[user].value = this.form.plugin[email].value" >';
                } 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"].'" onBlur="this.form.plugin[user].value = this.form.plugin[email].value" >@'.$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[email]" will break ISPConfig. Leaving them like they are breaks the hack.

Any hints on another solution are highly appreciated.

jz

julez 18th August 2006 19:25

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" readonly="readonly" >';
                } 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"].'" onKeyUp="document.forms[0].elements[2].value = document.forms[0].elements[1].value" >@'.$web["web_domain"];

Just check the code parts marked in red and you'll see.

jz

falko 19th August 2006 14:10

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

julez 22nd August 2006 14:05

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

falko 23rd August 2006 15:10

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

xgportal 23rd September 2006 02:35

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.

ciprianz 28th December 2006 19:19

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?

falko 29th December 2006 16:54

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.

ciprianz 29th December 2006 17:52

I used ISPConfig 2.2.9
Thank you for asking

falko 30th December 2006 21:34

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


All times are GMT +2. The time now is 01:35.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.