Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Wklejka 7kzrxzauh8 dodana przez Gość, 05.02.2016 15:48
Typ:



dupka
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
<?php
 
/**
 * Password Plugin for Roundcube
 *
 * @version @package_version@
 * @author Aleksander Machniak <[email protected]>
 *
 * Copyright (C) 2005-2013, The Roundcube Dev Team
 *
 * 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, see http://www.gnu.org/licenses/.
 */
 
define('PASSWORD_CRYPT_ERROR', 1);
define('PASSWORD_ERROR', 2);
define('PASSWORD_CONNECT_ERROR', 3);
define('PASSWORD_SUCCESS', 0);
 
/**
 * Change password plugin
 *
 * Plugin that adds functionality to change a users password.
 * It provides common functionality and user interface and supports
 * several backends to finally update the password.
 *
 * For installation and configuration instructions please read the README file.
 *
 * @author Aleksander Machniak
 */
class password extends rcube_plugin
{
    public $task    = 'settings|login';
    public $noframe = true;
    public $noajax  = true;
 
    private $newuser = false;
 
    function init()
    {
        $rcmail = rcmail::get_instance();
 
        $this->load_config();
 
        if ($rcmail->task == 'settings') {
            if (!$this->check_host_login_exceptions()) {
                return;
            }
 
            $this->add_texts('localization/');
 
            $this->add_hook('settings_actions', array($this, 'settings_actions'));
 
            $this->register_action('plugin.password', array($this, 'password_init'));
            $this->register_action('plugin.password-save', array($this, 'password_save'));
 
            if (strpos($rcmail->action, 'plugin.password') === 0) {
                $this->include_script('password.js');
            }
        }
        else if ($rcmail->config->get('password_force_new_user')) {
            $this->add_hook('user_create', array($this, 'user_create'));
            $this->add_hook('login_after', array($this, 'login_after'));
        }
    }
 
    function settings_actions($args)
    {
        // register as settings action
        $args['actions'][] = array(
            'action' => 'plugin.password',
            'class'  => 'password',
            'label'  => 'password',
            'title'  => 'changepasswd',
            'domain' => 'password',
        );
 
        return $args;
    }
 
    function password_init()
    {
        $this->register_handler('plugin.body', array($this, 'password_form'));
 
        $rcmail = rcmail::get_instance();
        $rcmail->output->set_pagetitle($this->gettext('changepasswd'));
 
        if (rcube_utils::get_input_value('_first', rcube_utils::INPUT_GET)) {
            $rcmail->output->command('display_message', $this->gettext('firstloginchange'), 'notice');
        }
 
        $rcmail->output->send('plugin');
    }
 
    function password_save()
    {
        $this->register_handler('plugin.body', array($this, 'password_form'));
 
        $rcmail = rcmail::get_instance();
        $rcmail->output->set_pagetitle($this->gettext('changepasswd'));
 
        $confirm = $rcmail->config->get('password_confirm_current');
        $required_length = intval($rcmail->config->get('password_minimum_length'));
        //$check_strength  = $rcmail->config->get('password_require_nonalpha');
	$required_nologin = $rcmail->config->get("password_require_nologin");
	$check_strength_digit = $rcmail->config->get('password_require_digit');
        $check_strength_alpha = $rcmail->config->get('password_require_alpha');
        $check_strength_lower = $rcmail->config->get('password_require_lower');
        $check_strength_upper = $rcmail->config->get('password_require_upper');
	$check_strength_nonalpha = $rcmail->config->get('password_require_nonalpha');
        $check_strength_norepeat = $rcmail->config->get('password_require_norepeat');
 
	if (($confirm && !isset($_POST['_curpasswd'])) || !isset($_POST['_newpasswd'])) {
            $rcmail->output->command('display_message', $this->gettext('nopassword'), 'error');
        }
        else {
            $charset    = strtoupper($rcmail->config->get('password_charset', 'ISO-8859-1'));
            $rc_charset = strtoupper($rcmail->output->get_charset());
 
            $sespwd = $rcmail->decrypt($_SESSION['password']);
            $curpwd = $confirm ? rcube_utils::get_input_value('_curpasswd', rcube_utils::INPUT_POST, true, $charset) : $sespwd;
            $newpwd = rcube_utils::get_input_value('_newpasswd', rcube_utils::INPUT_POST, true);
            $conpwd = rcube_utils::get_input_value('_confpasswd', rcube_utils::INPUT_POST, true);
 
            // check allowed characters according to the configured 'password_charset' option
            // by converting the password entered by the user to this charset and back to UTF-8
            $orig_pwd = $newpwd;
            $chk_pwd = rcube_charset::convert($orig_pwd, $rc_charset, $charset);
            $chk_pwd = rcube_charset::convert($chk_pwd, $charset, $rc_charset);
 
            // WARNING: Default password_charset is ISO-8859-1, so conversion will
            // change national characters. This may disable possibility of using
            // the same password in other MUA's.
            // We're doing this for consistence with Roundcube core
            $newpwd = rcube_charset::convert($newpwd, $rc_charset, $charset);
            $conpwd = rcube_charset::convert($conpwd, $rc_charset, $charset);
 
		$strength = 0;
	        $error = false;
	        $errormsg = "";
 
	if ($chk_pwd != $orig_pwd) {
            //$rcmail->output->command('display_message', $this->gettext('passwordforbidden'), 'error');
            $error = true;
            $errormsg = $this->gettext('passwordforbidden');
        }
 
        // other passwords validity checks
        else if ($conpwd != $newpwd) {
            //$rcmail->output->command('display_message', $this->gettext('passwordinconsistency'), 'error');
            $errormsg = $this->gettext('passwordinconsistency');
            $error = true;
        }
        else if ($confirm && $sespwd != $curpwd) {
            //$rcmail->output->command('display_message', $this->gettext('passwordincorrect'), 'error');
            $errormsg = $this->gettext('passwordincorrect');
            $error = true;
        }
 
        if ($required_length && strlen($newpwd) < $required_length) {
           /*$rcmail->output->command('display_message', $this->gettext(
               array('name' => 'passwordshort', 'vars' => array('length' => $required_length))), 'error');*/
 
	    $error = true;
	    $errormsg = $this->gettext(
               array('name' => 'passwordshort', 'vars' => array('length' => $required_length)));
        }
 
	if($required_nologin && strpos($newpwd, substr($_SESSION['username'], 0, strpos($_SESSION['username'], "@"))) !== FALSE)
	{
		$error = true;
		$errormsg = $this->gettext("passwordweak_nologin");
	}
 
        if ($check_strength_digit && preg_match("/[0-9]/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_digit'), 'error');
            $strength++;
        }
 
        //if ($check_strength_alpha && preg_match("/[a-zA-Z]/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_alpha'), 'error');
        //    $strength++;
        //}
 
        if ($check_strength_lower && preg_match("/[a-z]/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_lower'), 'error')
            $strength++;
        }
 
        if ($check_strength_upper && preg_match("/[A-Z]/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_upper'), 'error');
            $strength++;
        }
 
        if ($check_strength_nonalpha && preg_match("/[^0-9a-zA-Z]/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_nonalpha'), 'error');
            $strength++;
        }
 
        if ($check_strength_norepeat && !preg_match("/(.)11/", $newpwd)) {
            //$rcmail->output->command('display_message', $this->gettext('passwordweak_norepeat'), 'error');
            $strength++;
        }
 
        // password is the same as the old one, do nothing, return success
        if($error) {
            $rcmail->output->command('display_message', $errormsg, 'error');
        }
        else if($strength < 3) {
            // za slabe haslo
	    $rcmail->output->command('display_message', $this->gettext("passwordtooweak"), 'error');
        }
        else if ($sespwd == $newpwd && !$rcmail->config->get('password_force_save')) {
            $rcmail->output->command('display_message', $this->gettext('successfullysaved'), 'confirmation');
        }
        // try to save the password
        else if (!($res = $this->_save($curpwd, $newpwd))) {
            $rcmail->output->command('display_message', $this->gettext('successfullysaved'), 'confirmation');
 
            // allow additional actions after password change (e.g. reset some backends)
            $plugin = $rcmail->plugins->exec_hook('password_change', array(
               'old_pass' => $curpwd, 'new_pass' => $newpwd));
 
           // Reset session password
           $_SESSION['password'] = $rcmail->encrypt($plugin['new_pass']);
 
           // Log password change
           if ($rcmail->config->get('password_log')) {
               rcube::write_log('password', sprintf('Password changed for user %s (ID: %d) from %s',
                   $rcmail->get_user_name(), $rcmail->user->ID, rcube_utils::remote_ip()));
           }
        }
        else {
           $rcmail->output->command('display_message', $res, 'error');
        }
    }
 
    $rcmail->overwrite_action('plugin.password');
    $rcmail->output->send('plugin');
}
 
    function password_form()
    {	
        $rcmail = rcmail::get_instance();
 
        // add some labels to client
        $rcmail->output->add_label(
            'password.nopassword',
            'password.nocurpassword',
            'password.passwordinconsistency'
        );
 
        $rcmail->output->set_env('product_name', $rcmail->config->get('product_name'));
 
        $table = new html_table(array('cols' => 2));
 
        if ($rcmail->config->get('password_confirm_current')) {
            // show current password selection
            $field_id = 'curpasswd';
            $input_curpasswd = new html_passwordfield(array('name' => '_curpasswd', 'id' => $field_id,
                'size' => 20, 'autocomplete' => 'off'));
 
            $table->add('title', html::label($field_id, rcube::Q($this->gettext('curpasswd'))));
            $table->add(null, $input_curpasswd->show());
        }
 
        // show new password selection
        $field_id = 'newpasswd';
        $input_newpasswd = new html_passwordfield(array('name' => '_newpasswd', 'id' => $field_id,
            'size' => 20, 'autocomplete' => 'off'
			

Dodanych wklejek: 5202
Powered By (Pav32) Pastebin © 2011