Changeset 484


Ignore:
Timestamp:
Feb 10, 2013, 11:31:12 AM (12 years ago)
Author:
chronos
Message:
  • Přidáno: Formulářový typ RandomHash pro zajištění funkčnosti generování vlastnosti Salt pro generování hesel.
  • Opraveno: Změna hesla uživatele nyní funguje správně i přes obecnou Správu dat.
Location:
trunk
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/.htaccess

    r470 r484  
    1111RewriteCond  %{REQUEST_FILENAME}  !-f
    1212RewriteCond  %{REQUEST_FILENAME}  !-d
    13 #RewriteRule   ^(.*)$ centrala_modular/index.php?$1
    14 RewriteRule   ^(.*)$ dev/centrala/trunk/index.php?$1
     13RewriteRule   ^(.*)$ centrala/index.php?$1
    1514
    1615# Pretty urls
  • trunk/Common/Forms.php

    r465 r484  
    4040        } else $UseType = $Item['Type'];           
    4141      $Edit = $System->Type->ExecuteTypeEvent($UseType, 'OnView',
    42         array('Value' => $this->Values[$Index], 'Name' => $Index, 'Type' => $Item['Type']));
     42        array('Value' => $this->Values[$Index], 'Name' => $Index,
     43        'Type' => $Item['Type'], 'Values' => $this->Values));
    4344      if(array_key_exists('Suffix', $Item)) $Edit .= ' '.$Item['Suffix'];
    44       array_push($Table['Rows'], array($Item['Caption'].':', $Edit));
     45      if(!$System->Type->IsHidden($UseType))
     46        array_push($Table['Rows'], array($Item['Caption'].':', $Edit));
    4547    }
    4648    $Output = '<fieldset><legend>'.$this->Definition['Title'].'</legend>'.Table($Table).
     
    6264    global $Database, $FormTypes, $System;
    6365
     66    $Hidden = '';
     67    $IsHidden = false;
    6468    $Table = array(
    6569      //'Header' => array('Položka', 'Hodnota'),
     
    7680      if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    7781        $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
    78             'Type' => $Item['Type']);
     82            'Type' => $Item['Type'], 'Values' => $this->Values);
    7983        if(array_key_exists('Null', $Item)) $Parameters['Null'] = $Item['Null'];
    8084          else unset($Parameters['Null']);
     
    9498        if(array_key_exists('Suffix', $Item)) $Edit .= $Item['Suffix'];
    9599
    96       array_push($Table['Rows'], array($Item['Caption'].':', $Edit));
     100      if(!$System->Type->IsHidden($UseType))
     101          array_push($Table['Rows'], array($Item['Caption'].':', $Edit));
     102      else $Hidden .= $Edit;
    97103    }
    98104    }
    99105    $Output = '<fieldset><legend>'.$this->Definition['Title'].'</legend>'.Table($Table).
    100     '</fieldset>';
     106    $Hidden.'</fieldset>';
    101107    return($Output);
    102108  }
     
    125131        $this->Values[$Index] = $System->Type->ExecuteTypeEvent($UseType, 'OnLoadDb',
    126132            array('Value' => $DbRow[$Index], 'Name' => $Index,
    127             'Type' => $Item['Type']));
     133            'Type' => $Item['Type'], 'Values' => $this->Values));
    128134       
    129135        //echo($DbRow[$Index].'='.$this->Values[$Index].'<br/>');
     
    142148      if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    143149      $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
    144           'Type' => $Item['Type']);
     150          'Type' => $Item['Type'], 'Values' => $this->Values);
    145151     
    146152        if(array_key_exists($Item['Type'], $FormTypes))
     
    157163        } else $UseType = $Item['Type'];
    158164        $Values[$Index] = $System->Type->ExecuteTypeEvent($UseType, 'OnSaveDb', $Parameters);
     165        if(($Item['Type'] == 'Password') and ($Values[$Index] == '')) unset($Values[$Index]);
    159166       
    160167        //echo($DbRow[$Index].'='.$this->Values[$Index].'<br/>');
     
    181188    $Values = array();
    182189    foreach($this->Definition['Items'] as $Index => $Item)
    183     if(!array_key_exists($Item['Type'], $FormTypes) or
    184     (array_key_exists($Item['Type'], $FormTypes) and ($FormTypes[$Item['Type']]['Type'] != 'ManyToOne')))
     190    if((!array_key_exists($Item['Type'], $FormTypes) or
     191    (array_key_exists($Item['Type'], $FormTypes) and
     192    ($FormTypes[$Item['Type']]['Type'] != 'ManyToOne'))) and
     193    (!array_key_exists('ReadOnly', $Item) or
     194    (array_key_exists('ReadOnly', $Item) and
     195    ($Item['ReadOnly'] != true))))
    185196    {
    186197      //if(array_key_exists($Context.$Index, $_POST))
     
    196207        } else $UseType = $Item['Type'];
    197208        $Values[$Index] = $System->Type->ExecuteTypeEvent($UseType, 'OnLoad',
    198           array('Name' => $Index, 'Type' => $Item['Type']));
     209          array('Name' => $Index, 'Type' => $Item['Type'], 'Values' => $this->Values));
    199210    }
    200211    return($Values);
  • trunk/Common/Types/Base.php

    r442 r484  
    55  var $System;
    66  var $DatabaseCompareOperators = array();
     7  var $Hidden;
    78
    89  function __construct($System)
    910  {
    10     $this->System = $System;
     11    $this->System = &$System;
     12    $this->Hidden = false;
    1113  }
    1214
  • trunk/Common/Types/Hidden.php

    r428 r484  
    55class TypeHidden extends TypeBase
    66{
     7  function __construct($System)
     8  {
     9    parent::__construct($System);
     10    $this->Hidden = true;
     11  }
     12 
    713  function OnView($Item)
    814  {
  • trunk/Common/Types/Password.php

    r442 r484  
    4141    return($Result);
    4242  }
     43 
     44  function OnSaveDb($Item)
     45  {
     46    if($Item['Value'] == '') return('');
     47    else {
     48      $PasswordHash = new PasswordHash();
     49      return($PasswordHash->Hash($Item['Value'], $Item['Values']['Salt']));
     50    }
     51  }
    4352   
    4453  function OnLoadDb($Item)
  • trunk/Common/Types/Type.php

    r430 r484  
    2020include(dirname(__FILE__).'/IPv4Address.php');
    2121include(dirname(__FILE__).'/Color.php');
     22include(dirname(__FILE__).'/RandomHash.php');
    2223
    2324class Type
     
    2526  var $System;
    2627  var $TypeDefinitionList;
     28  var $Values;
    2729
    2830  function __construct($System)
     
    4951      'OneToMany' => array('Name' => 'OneToMany', 'Class' => 'OneToMany', 'ParentType' => '', 'Parameters' => array()),
    5052      'Color' => array('Name' => 'Color', 'Class' => 'Color', 'ParentType' => '', 'Parameters' => array()),
     53      'RandomHash' => array('Name' => 'RandomHash', 'Class' => 'RandomHash', 'ParentType' => '', 'Parameters' => array()),
    5154    );
    5255  }
     
    6265        else return($TypeName.'->'.$Event.'('.serialize($Parameters).')');
    6366    } else return($TypeName);
     67  }
     68 
     69  function IsHidden($TypeName)
     70  {
     71    if(array_key_exists($TypeName, $this->TypeDefinitionList))
     72    {
     73      $Type = $this->TypeDefinitionList[$TypeName];
     74      $TypeClass = 'Type'.$Type['Class'];
     75      $TypeObject = new $TypeClass($this->System);
     76      return($TypeObject->Hidden);
     77    } else return(false);
    6478  }
    6579
  • trunk/Modules/IS/IS.php

    r479 r484  
    2727   
    2828    if(array_key_exists('t', $_GET)) $_SESSION['Table'] = $_GET['t'];
    29     if(!array_key_exists('Table', $_SESSION)) $_SESSION['Table'] = '';
    3029    if(array_key_exists('a', $_GET)) $_SESSION['Action'] = $_GET['a'];
    3130    if(array_key_exists('id', $_GET)) $_SESSION['Id'] = $_GET['id'];
    3231       
    3332    if(!array_key_exists('Action', $_SESSION)) $_SESSION['Action'] = 'list';
     33    if(!array_key_exists('Id', $_SESSION) or !array_key_exists('Table', $_SESSION) or
     34    ($_SESSION['Table'] == '')) {
     35      $_SESSION['Id'] = 0;
     36      $_SESSION['Action'] = '';
     37      $_SESSION['Table'] = '';
     38    }
    3439   
    3540    if($_SESSION['Action'] == 'list') $Output .= $this->ShowList($_SESSION['Table']);
  • trunk/Modules/Portal/Portal.php

    r479 r484  
    179179        $UserOptions = new Form('UserOptions', array());
    180180        $UserOptions->LoadValuesFromForm();
    181         if($UserOptions->Values['Password'] == '') unset($UserOptions->Values['Password']);
    182         else {
    183           $PasswordHash = new PasswordHash();
    184           $Salt = $PasswordHash->GetSalt();
    185           $UserOptions->Values['Password'] = $PasswordHash->Hash($UserOptions->Values['Password'], $Salt);
    186           $UserOptions->Values['Salt'] = $Salt;
    187           $this->Database->update('User', 'Id='.$this->System->Modules['User']->User['Id'], array('Salt' => $Salt));
    188         }
    189181        $UserOptions->SaveValuesToDatabase($this->System->Modules['User']->User['Id']);
    190182        $Output .= $this->SystemMessage('Nastavení', 'Nastavení uloženo.');
  • trunk/config.sample.php

    r477 r484  
    77  'Database' => array
    88  (
    9     'Host' => 'centrala',
     9    'Host' => 'localhost',
    1010    'User' => 'root',
    1111    'Password' => '',
     
    1717  (
    1818    'Style' => 'new',
    19     'FormatHTML' => false,
     19    'FormatHTML' => $IsDeveloper,
    2020    'Charset' => 'utf-8',
    2121    'Host' => 'localhost',
     
    2525    'Admin' => 'Admin',
    2626    'AdminEmail' => 'admin@localhost',
    27     'ShowSQLError' => false,
     27    'ShowSQLError' => $IsDeveloper,
    2828    'ShowSQLQuery' => false,
    29     'ShowPHPError' => false,
    30     'ShowRuntimeInfo' => false,
    31     'ErrorLogFile' => '/var/www/html/dev/centrala/www/php_script_error.log',   
     29    'ShowPHPError' => $IsDeveloper,
     30    'ShowRuntimeInfo' => $IsDeveloper,
     31    'ErrorLogFile' => 'php_script_error.log',   
    3232    'WebcamPassword' => '',
    3333    'WebcamRefresh' => 5,
  • trunk/form_classes.php

    r483 r484  
    351351      'Login' => array('Type' => 'String', 'Caption' => 'Přihlašovací jméno', 'Default' => ''),
    352352      'Name' => array('Type' => 'String', 'Caption' => 'Celé jméno', 'Default' => ''),
     353      'Salt' => array('Type' => 'RandomHash', 'Caption' => 'Sůl', 'Default' => ''),
    353354      'Password' => array('Type' => 'Password', 'Caption' => 'Heslo', 'Default' => '', 'Method' => 'DoubleSHA1'),
    354355      'Email' => array('Type' => 'String', 'Caption' => 'E-mail', 'Default' => ''),
     
    563564    'Items' => array(
    564565      'Login' => array('Type' => 'String', 'Caption' => 'Přihlašovací jméno', 'Default' => ''),
     566      'Salt' => array('Type' => 'RandomHash', 'Caption' => 'Sůl', 'Default' => ''),
    565567      'Password' => array('Type' => 'Password', 'Caption' => 'Heslo', 'Default' => ''),
    566568      'Name' => array('Type' => 'String', 'Caption' => 'Zobrazované jméno', 'Default' => ''),
Note: See TracChangeset for help on using the changeset viewer.