aknath

Plugin: Signup password

Nov 24th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. ?>
Add Comment
Please, Sign In to add comment