SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | /* | |
| 3 | Plugin Name: Signup Password | |
| 4 | Plugin URI: | |
| 5 | Description: | |
| 6 | Author: Andrew Billits | |
| 7 | Version: 1.0.5 | |
| 8 | Author URI: | |
| 9 | */ | |
| 10 | ||
| 11 | /* | |
| 12 | Copyright 2007-2009 Incsub (http://incsub.com) | |
| 13 | ||
| 14 | This program is free software; you can redistribute it and/or modify | |
| 15 | it under the terms of the GNU General Public License (Version 2 - GPLv2) as published by | |
| 16 | the Free Software Foundation. | |
| 17 | ||
| 18 | This program is distributed in the hope that it will be useful, | |
| 19 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 21 | GNU General Public License for more details. | |
| 22 | ||
| 23 | You should have received a copy of the GNU General Public License | |
| 24 | along with this program; if not, write to the Free Software | |
| 25 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 26 | */ | |
| 27 | ||
| 28 | //------------------------------------------------------------------------// | |
| 29 | //---Config---------------------------------------------------------------// | |
| 30 | //------------------------------------------------------------------------// | |
| 31 | $signup_password_use_encryption = 'no'; //Either 'yes' OR 'no' | |
| 32 | //------------------------------------------------------------------------// | |
| 33 | //---Hook-----------------------------------------------------------------// | |
| 34 | //------------------------------------------------------------------------// | |
| 35 | add_action('wp_head', 'signup_password_stylesheet');
| |
| 36 | add_action('signup_extra_fields', 'signup_password_fields');
| |
| 37 | add_filter('wpmu_validate_user_signup', 'signup_password_filter');
| |
| 38 | add_filter('signup_blogform', 'signup_password_fields_pass_through');
| |
| 39 | add_filter('add_signup_meta', 'signup_password_meta_filter',99);
| |
| 40 | add_filter('random_password', 'signup_password_random_password_filter');
| |
| 41 | //------------------------------------------------------------------------// | |
| 42 | //---Functions------------------------------------------------------------// | |
| 43 | //------------------------------------------------------------------------// | |
| 44 | ||
| 45 | function signup_password_encrypt($data) {
| |
| 46 | if(!isset($chars)) | |
| 47 | {
| |
| 48 | // 3 different symbols (or combinations) for obfuscation | |
| 49 | // these should not appear within the original text | |
| 50 | $sym = array('¶', '¥xQ', '|');
| |
| 51 | ||
| 52 | foreach(range('a','z') as $key=>$val)
| |
| 53 | $chars[$val] = str_repeat($sym[0],($key + 1)).$sym[1]; | |
| 54 | $chars[' '] = $sym[2]; | |
| 55 | ||
| 56 | unset($sym); | |
| 57 | } | |
| 58 | ||
| 59 | // encrypt | |
| 60 | $data = strtr(strtolower($data), $chars); | |
| 61 | return $data; | |
| 62 | ||
| 63 | } | |
| 64 | ||
| 65 | function signup_password_decrypt($data) {
| |
| 66 | if(!isset($chars)) | |
| 67 | {
| |
| 68 | // 3 different symbols (or combinations) for obfuscation | |
| 69 | // these should not appear within the original text | |
| 70 | $sym = array('¶', '¥xQ', '|');
| |
| 71 | ||
| 72 | foreach(range('a','z') as $key=>$val)
| |
| 73 | $chars[$val] = str_repeat($sym[0],($key + 1)).$sym[1]; | |
| 74 | $chars[' '] = $sym[2]; | |
| 75 | ||
| 76 | unset($sym); | |
| 77 | } | |
| 78 | ||
| 79 | // decrypt | |
| 80 | $charset = array_flip($chars); | |
| 81 | $charset = array_reverse($charset, true); | |
| 82 | ||
| 83 | $data = strtr($data, $charset); | |
| 84 | unset($charset); | |
| 85 | return $data; | |
| 86 | } | |
| 87 | ||
| 88 | function signup_password_filter($content) {
| |
| 89 | $password_1 = $_POST['password_1']; | |
| 90 | $password_2 = $_POST['password_2']; | |
| 91 | if ( !empty( $password_1 ) && $_POST['stage'] == 'validate-user-signup' ) {
| |
| 92 | if ( $password_1 != $password_2 ) {
| |
| 93 | $content['errors']->add('password', __('Passwords do not match.'));
| |
| 94 | } | |
| 95 | } | |
| 96 | return $content; | |
| 97 | } | |
| 98 | ||
| 99 | function signup_password_meta_filter($meta) {
| |
| 100 | global $signup_password_use_encryption; | |
| 101 | $password_1 = $_POST['password_1']; | |
| 102 | if ( !empty( $password_1 ) ) {
| |
| 103 | if ( $signup_password_use_encryption == 'yes' ) {
| |
| 104 | $password_1 = signup_password_encrypt($password_1); | |
| 105 | } | |
| 106 | $add_meta = array('password' => $password_1);
| |
| 107 | $meta = array_merge($add_meta, $meta); | |
| 108 | } | |
| 109 | return $meta; | |
| 110 | } | |
| 111 | ||
| 112 | function signup_password_random_password_filter($password) {
| |
| 113 | global $wpdb, $signup_password_use_encryption; | |
| 114 | ||
| 115 | if ( ! empty($_GET['key']) ) {
| |
| 116 | $key = $_GET['key']; | |
| 117 | } else {
| |
| 118 | $key = $_POST['key']; | |
| 119 | } | |
| 120 | if ( !empty($_POST['password_1']) ) {
| |
| 121 | $password = $_POST['password_1']; | |
| 122 | } else if ( !empty( $key ) ) {
| |
| 123 | $signup = $wpdb->get_row("SELECT * FROM " . $wpdb->signups . " WHERE activation_key = '" . $key . "'");
| |
| 124 | if ( empty($signup) || $signup->active ) {
| |
| 125 | //bad key or already active | |
| 126 | } else {
| |
| 127 | //check for password in signup meta | |
| 128 | $meta = unserialize($signup->meta); | |
| 129 | if ( !empty( $meta['password'] ) ) {
| |
| 130 | if ( $signup_password_use_encryption == 'yes' ) {
| |
| 131 | $password = signup_password_decrypt($meta['password']); | |
| 132 | } else {
| |
| 133 | $password = $meta['password']; | |
| 134 | } | |
| 135 | } | |
| 136 | } | |
| 137 | } | |
| 138 | return $password; | |
| 139 | } | |
| 140 | ||
| 141 | //------------------------------------------------------------------------// | |
| 142 | //---Output Functions-----------------------------------------------------// | |
| 143 | //------------------------------------------------------------------------// | |
| 144 | ||
| 145 | function signup_password_stylesheet() {
| |
| 146 | ?> | |
| 147 | <style type="text/css"> | |
| 148 | .mu_register #password_1, | |
| 149 | .mu_register #password_2 { width:100%; font-size: 24px; margin:5px 0; }
| |
| 150 | </style> | |
| 151 | <?php | |
| 152 | } | |
| 153 | ||
| 154 | function signup_password_fields_pass_through() {
| |
| 155 | if ( !empty( $_POST['password_1'] ) && !empty( $_POST['password_2'] ) ) {
| |
| 156 | ?> | |
| 157 | <input type="hidden" name="password_1" value="<?php echo $_POST['password_1']; ?>" /> | |
| 158 | <?php | |
| 159 | } | |
| 160 | } | |
| 161 | ||
| 162 | function signup_password_fields($errors) {
| |
| 163 | $error = $errors->get_error_message('password');
| |
| 164 | ?> | |
| 165 | <label for="password"><?php _e('Password'); ?>:</label>
| |
| 166 | <?php | |
| 167 | if($error) {
| |
| 168 | echo '<p class="error">' . $error . '</p>'; | |
| 169 | } | |
| 170 | ?> | |
| 171 | <input name="password_1" type="password" id="password_1" value="" autocomplete="off" maxlength="20" /><br /> | |
| 172 | (<?php _e('Leave fields blank for a random password to be generated.') ?>)
| |
| 173 | <label for="password"><?php _e('Confirm Password'); ?>:</label>
| |
| 174 | <input name="password_2" type="password" id="password_2" value="" autocomplete="off" maxlength="20" /><br /> | |
| 175 | (<?php _e('Type your new password again.') ?>)
| |
| 176 | <?php | |
| 177 | } | |
| 178 | ||
| 179 | ?> |