commit bcee4ba69af2ac114ddc7eef18645c50ef851c94
parent 3b2369962568cf2f87806fbc37390bc360874427
Author: Jan Dankert <devnull@localhost>
Date: Sat, 20 Oct 2012 14:18:31 +0200
Überarbeitung der Kennwortänderung.
Diffstat:
6 files changed, 117 insertions(+), 36 deletions(-)
diff --git a/action/UserAction.class.php b/action/UserAction.class.php
@@ -144,44 +144,54 @@ class UserAction extends Action
/**
* Aendern des Kennwortes
*/
- function pwPost()
+ public function pwPost()
{
global $conf;
$pw1 = $this->getRequestVar('password1');
$pw2 = $this->getRequestVar('password2');
- // Zufaelliges Kennwort erzeugen
- if ( $this->hasRequestVar('random') && $this->hasRequestVar('email') )
+ $type = $this->getRequestVar('type');
+
+ switch( $type )
{
- $pw1 = $this->user->createPassword();
- $pw2 = $pw1;
+ case 'input':
+ if ( strlen($pw1)<intval($conf['security']['password']['min_length']) )
+ {
+ $this->addValidationError('password1');
+ return;
+ }
+ elseif ( $pw1 != $pw2 )
+ {
+ $this->addValidationError('password2');
+ return;
+ }
+ else
+ {
+ $newPassword = $pw1;
+ }
+ break;
+ case 'proposal';
+ $newPassword = $this->getRequestVar('password_proposal');
+ break;
+ case 'random';
+ $newPassword = $this->user->createPassword();
+ break;
+ default:
+ Http::serverError('Type unknown: '.$type);
}
- if ( strlen($pw1)<intval($conf['security']['password']['min_length']) )
+ // Kennwoerter identisch und lang genug
+ $this->user->setPassword($pw1,!$this->hasRequestVar('timeout') ); // Kennwort setzen
+
+ // E-Mail mit dem neuen Kennwort an Benutzer senden
+ if ( $this->hasRequestVar('email') && !empty($this->user->mail) && $conf['mail']['enabled'] )
{
- $this->addValidationError('password1');
- return;
- }
- elseif ( $pw1 != $pw2 )
- {
- $this->addValidationError('password2');
- return;
- }
- else
- {
- // Kennwoerter identisch und lang genug
- $this->user->setPassword($pw1,!$this->hasRequestVar('timeout') ); // Kennwort setzen
-
- // E-Mail mit dem neuen Kennwort an Benutzer senden
- if ( $this->hasRequestVar('email') && !empty($this->user->mail) && $conf['mail']['enabled'] )
- {
- $this->mailPw( $pw1 );
- $this->addNotice('user',$this->user->name,'MAIL_SENT','ok');
- }
-
- $this->addNotice('user',$this->user->name,'SAVED','ok');
+ $this->mailPw( $pw1 );
+ $this->addNotice('user',$this->user->name,'MAIL_SENT','ok');
}
+
+ $this->addNotice('user',$this->user->name,'SAVED','ok');
}
@@ -305,6 +315,8 @@ class UserAction extends Action
function pwView()
{
$this->setTemplateVars( $this->user->getProperties() );
+
+ $this->setTemplateVar('password_proposal', $this->user->createPassword() );
}
diff --git a/language/de.ini.php b/language/de.ini.php
@@ -1098,6 +1098,7 @@ USER_MAIL_NEW_PASSWORD = "E-Mail mit dem neuen Kennwort an Benutzer senden"
USER_MEMBERSHIPS = "Mitgliedschaften"
USER_NEW_MAIL = "Neue E-Mail-Adresse"
USER_NEW_PASSWORD = "Neues Kennwort"
+USER_NEW_PASSWORD_INPUT = "Neues Kennwort eingeben"
USER_NEW_PASSWORD_REPEAT = "Neues Kennwort Wiederholung"
USER_PASSWORD = Kennwort
USER_PASSWORD_TIMEOUT =Kennwort läuft ab
diff --git a/themes/default/include/elements.ini.php b/themes/default/include/elements.ini.php
@@ -25,7 +25,7 @@ image = config,file,url,icon,align:left,type,elementtype,fileext,tree,notice,
input = class:text,default:,type:text,index,name:*,prefix,value,size:,maxlength:256,onchange:,readonly:false,hint:,icon:
inputarea= name,rows:10,cols:40,value,index,onchange,prefix,class:inputarea,default:
insert = file,script,inline:false,url,name,function
-label = for,value,key
+label = for,value,key,text
link = title:,config,type:,target,var,url,class:,action,subaction,id,var1,value1,var2,value2,var3,value3,var4,value4,var5,value5,accesskey,name,anchor,frame:_self,modal:false
list = list:*,extract:false,key:list_key,value:list_value
logo = name:*
@@ -33,7 +33,7 @@ newline =
page = class:main,title,menu
part = id,class
password = name:*,default:,class:,size:40,maxlength:256
-radio = readonly:false,name:*,value,default:false,prefix:,suffix:,class:,onchange:,children
+radio = readonly:false,name:*,value,default:false,prefix:,suffix:,class:,onchange:,children,checked
raw =
row = class,classes,id
selectbox= list:*,name:*,default,onchange:,title:,class:,addempty:false,multiple:false,size:1,lang:false
diff --git a/themes/default/include/html/label.inc.php b/themes/default/include/html/label.inc.php
@@ -1,2 +1,2 @@
<label<?php if (isset($attr_for)) { ?> for="id_<?php echo $attr_for ?><?php if (!empty($attr_value)) echo '_'.$attr_value ?>" class="label"<?php } ?>>
-<?php if (isset($attr_key)) { echo lang($attr_key); if(hasLang($attr_key.'_desc')) { ?><div class="description"><?php echo lang($attr_key.'_desc')?></div> <?php } } ?>
-\ No newline at end of file
+<?php if (isset($attr_key)) { echo lang($attr_key); if(hasLang($attr_key.'_desc')) { ?><div class="description"><?php echo lang($attr_key.'_desc')?></div> <?php } ?><?php if (isset($attr_text)) { echo $attr_text; } ?><?php } ?>
+\ No newline at end of file
diff --git a/themes/default/include/html/radio.inc.php b/themes/default/include/html/radio.inc.php
@@ -8,7 +8,7 @@
else
$attr_tmp_default = '';
- ?><input onclick="" class="radio" type="radio" id="id_<?php echo $attr_name.'_'.$attr_value ?>" name="<?php echo $attr_prefix.$attr_name ?>"<?php if ( $attr_readonly ) echo ' disabled="disabled"' ?> value="<?php echo $attr_value ?>"<?php if($attr_value==$attr_tmp_default||@$attr_checked) echo ' checked="checked"' ?><?php if (in_array($attr_name,$errors)) echo ' style="borderx:2px dashed red; background-color:red;"' ?> />
+ ?><input onclick="" class="radio" type="radio" id="id_<?php echo $attr_name.'_'.$attr_value ?>" name="<?php echo $attr_prefix.$attr_name ?>"<?php if ( $attr_readonly ) echo ' disabled="disabled"' ?> value="<?php echo $attr_value ?>"<?php if($attr_value==$attr_tmp_default||@$attr_checked) echo ' checked="checked"' ?> />
<?php /* #IF-ATTR deactivated-children# */ ?>
<script name="Javascript" type="text/javascript">
diff --git a/themes/default/templates/user/pw.tpl.src.xml b/themes/default/templates/user/pw.tpl.src.xml
@@ -1,3 +1,71 @@
-<output xmlns="http://www.openrat.de/template"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"><form><part class="line"><part class="label"><label for="name" key="user_username"></label></part><part class="input"><text var="name" class="name"></text></part></part><group title="message:USER_new_password"></group><part class="line"><part class="label"><label for="password1" key="USER_new_password"></label></part><part class="input"><password name="password1"></password></part></part><part class="line"><part class="label"><label for="password2" key="USER_new_password_repeat"></label></part><part class="input"><password name="password2"></password></part></part><group title="message:options"></group><if present="mail"><part class="line"><part class="label"></part><part class="input"><checkbox name="email"></checkbox><label for="email" key="user_mail_new_password"></label></part></part><part class="line"><part class="label"></part><part class="input"><checkbox name="random"></checkbox><label for="random" key="user_random_password"></label></part></part><part class="line"><part class="label"></part><part class="input"><checkbox name="timeout"></checkbox><label for="timeout" key="user_password_timeout"></label></part></part></if><focus field="password1"></focus></form></output>
-\ No newline at end of file
+<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.openrat.de/template ../template.xsd">
+ <form>
+ <part class="line">
+ <part class="label"></part>
+ <part class="input">
+ <radio name="type" value="proposal"></radio>
+ <label for="type" value="proposal" text="var:password_proposal">
+ <text key="USER_new_password" />
+ <text raw="text:: " />
+ <text var="password_proposal" />
+ </label>
+ <input type="hidden" name="password_proposal" />
+ </part>
+ </part>
+
+ <if true="config:mail/enabled">
+ <part class="line">
+ <part class="label"></part>
+ <part class="input">
+ <radio name="type" value="random"></radio>
+ <label for="type" value="random" key="user_random_password"></label>
+ </part>
+ </part>
+ </if>
+ <part class="line">
+ <part class="label"></part>
+ <part class="input">
+ <radio name="type" value="input" checked="true"></radio>
+ <label for="type" value="input" key="USER_NEW_PASSWORD_INPUT">
+ </label>
+ </part>
+ </part>
+ <part class="line">
+ <part class="label">
+ <label for="password1" key="USER_new_password"></label>
+ </part>
+ <part class="input">
+ <password name="password1"></password>
+ </part>
+ </part>
+ <part class="line">
+ <part class="label">
+ <label for="password2" key="USER_new_password_repeat"></label>
+ </part>
+ <part class="input">
+ <password name="password2"></password>
+ </part>
+ </part>
+ <group title="message:options"></group>
+ <if true="config:mail/enabled">
+ <if present="mail">
+ <part class="line">
+ <part class="label"></part>
+ <part class="input">
+ <checkbox name="email"></checkbox>
+ <label for="email" key="user_mail_new_password"></label>
+ </part>
+ </part>
+ <part class="line">
+ <part class="label"></part>
+ <part class="input">
+ <checkbox name="timeout"></checkbox>
+ <label for="timeout" key="user_password_timeout"></label>
+ </part>
+ </part>
+ </if>
+ </if>
+ <focus field="password1"></focus>
+ </form>
+</output>
+\ No newline at end of file