src/it/ht/rcs/console/accounting/view/users/ChangePassword.mxml
<?xml version="1.0" encoding="utf-8"?>
<utils:TitleWindowSaveCancel xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:utils="it.ht.rcs.console.utils.*"
creationComplete="init()" save="save()"
title="{R.get('PASSWORD_CHANGE')}">
<fx:Script>
<![CDATA[
import it.ht.rcs.console.accounting.controller.UserManager;
import it.ht.rcs.console.accounting.model.User;
import locale.R;
import mx.managers.PopUpManager;
public var user:User;
public var mode:String;
private function init():void
{
password.setFocus();
}
private function save():void
{
if (password.text.length == 0 && confirm.text.length == 0) {
PopUpManager.removePopUp(this);
return;
}
/* consistency check, don't close the window */
if (password.text.length < 10 || password.text != confirm.text)
return;
/* change the password */
if (password.text.length != 0 && mode == 'edit')
UserManager.instance.changePassword(user, password.text);
else
user.pass = password.text;
PopUpManager.removePopUp(this);
}
private function realtimeCheck():void
{
error.text = '';
if (password.text.length < 10 && password.text.length > 0) {
error.text = R.get('PASSWORD_TOO_SHORT');
return;
}
var pattern:RegExp = new RegExp(/(?=.*[a-z]+)(?=.*[A-Z]+)(?=.*[0-9]+)(?=.{10,})/);
if(!password.text.match(pattern) && password.text.length > 0)
{
error.text = R.get('WEAK_PASSWORD');
return;
}
if (password.text != confirm.text && confirm.text.length>0) {
error.text = R.get('PASSWORD_DOESNT_MATCH');
return;
}
}
]]>
</fx:Script>
<s:Form defaultButton="{saveButton}">
<s:FormItem label="{R.get('NEW_PASSWORD')}">
<s:TextInput id="password" width="150" displayAsPassword="true" keyUp="realtimeCheck()"/>
</s:FormItem>
<s:FormItem label="{R.get('CONFIRM')}">
<s:TextInput id="confirm" width="150" displayAsPassword="true" keyUp="realtimeCheck()"/>
</s:FormItem>
<s:Spacer height="10"/>
<mx:Text id="error" color="#ff0000" width="100%" textAlign="center" />
</s:Form>
</utils:TitleWindowSaveCancel>