PDA

View Full Version : Generate username from email-address


julez
18th August 2006, 18:28
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:


// 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

"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, 20:25
Hi forum,

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


// 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, 15:10
Sounds interesting. :) Please report back if it works reliably.

julez
22nd August 2006, 15: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, 16:10
I've added this request to our bugtracker for now. :)

xgportal
23rd September 2006, 03: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, 20: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, 17: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, 18:52
I used ISPConfig 2.2.9
Thank you for asking

falko
30th December 2006, 22:34
I don't know if it's working in ISPConfig 2.2.9... :(

alex916
9th January 2007, 11:51
I use 2.2.9 and i haven't problem.
Patch works great.

kassie
2nd June 2007, 19:26
Does this work with 2.2.13??