Subversion Repositories portal2

Rev

Rev 697 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*  emg - Energy Monitoring & Graphing
*  Copyright (C) 2006-2012 Romain Lievin
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation,
*  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

?>

<?php

$form_token = md5(uniqid('auth', true));
$_SESSION['form_token'] = $form_token;

$error = new Error();

if(isset($_POST['form_change_submit']))
{
        if(!isset( $_POST['phpro_oldpwd'], $_POST['phpro_newpwd'], $_POST['phpro_newpwd2'],
                        $_POST['form_token']))
        {
                $error->push(_('Old and/or new password(s) is/are invalid.'));
        }
        elseif(strlen( $_POST['phpro_oldpwd']) > 20 || strlen($_POST['phpro_oldpwd']) < 4)
        {
                $error->push(_('Password must have [4-20] characters.'));
        }
        elseif(strlen( $_POST['phpro_newpwd']) > 20 || strlen($_POST['phpro_newpwd']) < 4)
        {
                $error->push(_('Password must have [4-20] characters.'));
        }
        elseif(strlen( $_POST['phpro_newpwd2']) > 20 || strlen($_POST['phpro_newpwd2']) < 4)
        {
                $error->push(_('Password must have [4-20] characters.'));
        }
        elseif(ctype_alnum($_POST['phpro_oldpwd']) != true)
        {
                $error->push(_('Password must be alpha numeric.'));
        }
        elseif(ctype_alnum($_POST['phpro_newpwd']) != true)
        {
                $error->push(_('Password must be alpha numeric.'));
        }
        elseif(ctype_alnum($_POST['phpro_newpwd2']) != true)
        {
                $error->push(_('Password must be alpha numeric.'));
        }
        else
        {
                /*** if we are here the data is valid and we can insert it into database ***/
                $phpro_oldpwd = filter_var($_POST['phpro_oldpwd'], FILTER_SANITIZE_STRING);
                $phpro_newpwd = filter_var($_POST['phpro_newpwd'], FILTER_SANITIZE_STRING);
                $phpro_newpwd2= filter_var($_POST['phpro_newpwd2'], FILTER_SANITIZE_STRING);

                /*** now we can encrypt the password ***/
                $phpro_oldpwd = sha1($phpro_oldpwd);
                $phpro_newpwd = sha1($phpro_newpwd);
                $phpro_newpwd2= sha1($phpro_newpwd2);

                /*** connect to database file***/
                if(!file_exists('auth/login.txt'))
                {
                        $error->push(_('There is no password stored. Please create an account before.'));
                }
                else
                {
                        $handle = fopen('auth/login.txt', 'rt');
                        if($handle === false)
                        {
                                $error->push(_('Unable to open password database.'));
                        }
                        else                   
                        {
                                fscanf($handle, "%s", $user_id);
                                fscanf($handle, "%s", $file_username);
                                fscanf($handle, "%s", $file_password);
                                fscanf($handle, "%s", $file_email);
                                fclose($handle);

                                if($file_password != $phpro_oldpwd)
                                {
                                        $error->push(_('Old password does not match. Authentication failed.'));
                                }
                                else
                                if($phpro_newpwd != $phpro_newpwd2)
                                {
                                        $error->push(_('Both new passwords do not match.'));
                                }
                                else
                                {
                                        $file_password = $phpro_newpwd;

                                        $handle = fopen('auth/login.txt', 'wt');
                                        if($handle === false)
                                        {
                                                $error->push(_('Unable to open password database.'));
                                        }
                                        else
                                        {
                                                fprintf($handle, "%s\n", 1);
                                                fprintf($handle, "%s\n", $file_username);
                                                fprintf($handle, "%s\n", $file_password);
                                                fprintf($handle, "%s\n", $file_email);
                                                fclose($handle);


                                                $error->push(_('Password changed successfully.'));
                                        }
                                }
                        }
                }
        }
}
?>

<div id="page_auth_changepwd">
        <h1>
                <?php echo _('Change password'); ?>
        </h1>

        <?php
        $id = link_get_id_from_filename("auth_changepwd.php");
        echo "<form action=\"index.php?id_page=$id\" method=\"post\" id=\"passwordForm\" >";
        ?>
        <fieldset>
                <legend>
                        <?php echo _('Information'); ?>
                </legend>

                <label for="phpro_oldpwd">
                        <?php echo _('Old password'); ?>:
                </label>
                <input type="password" id="phpro_oldpwd" name="phpro_oldpwd" value="" maxlength="20" />
                <br/>

                <label for="phpro_newpwd">
                        <?php echo _('New password'); ?>:
                </label>
                <input type="password" id="phpro_newpwd" name="phpro_newpwd" value="" maxlength="20" />
                <br/>

                <label for="phpro_newpwd2">
                        <?php echo _('New password'); ?>:
                </label>
                <input type="password" id="phpro_newpwd2" name="phpro_newpwd2" value="" maxlength="30" />
                <br/>

                <hr/>
                <div class="buttons">
                        <input type="hidden" name="form_token" value="<?php echo $form_token; ?>" />
                        <input type="submit" name="form_change_submit" value=<?php echo _('Update'); ?> alt="change" id="form_change_submit" />
                </div>

        </fieldset>
        </form>

        <?php echo $error->display(); ?>

</div>

<script type="text/javascript" src="auth_changepwd.js">
</script>