hackedteam/rcs-console

View on GitHub
src/it/ht/rcs/console/accounting/view/users/ChangePassword.mxml

Summary

Maintainability
Test Coverage
<?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>