Changeset 6759 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-two-factor/providers/class-wporg-two-factor-slack.php
- Timestamp:
- 02/26/2018 07:06:12 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-two-factor/providers/class-wporg-two-factor-slack.php
r6735 r6759 1 1 <?php 2 2 3 require_once TWO_FACTOR_DIR . 'providers/class.two-factor-email.php';3 require_once __DIR__ . '/class-wporg-two-factor-email.php'; 4 4 5 class WPORG_Two_Factor_Slack extends Two_Factor_Email {5 class WPORG_Two_Factor_Slack extends WPORG_Two_Factor_Email { 6 6 7 7 /** … … 11 11 */ 12 12 const TOKEN_META_KEY = '_two_factor_slack_token'; 13 14 /**15 * Name of the input field used for code resend.16 *17 * @var string18 */19 const INPUT_NAME_RESEND_CODE = 'two-factor-slack-code-resend';20 13 21 14 /** … … 34 27 35 28 public function get_label() { 36 return _x( 'Slack', 'Provider Label', 'wporg' );29 return 'Slack'; // Not marked for translation as this shouldn't be called/displayed. 37 30 } 38 31 39 /** 40 * Whether this Two Factor provider is configured and available for the user specified. 41 * 42 * @since 0.1-dev 43 * 44 * @param WP_User $user WP_User object of the logged-in user. 45 * @return boolean 46 */ 32 protected function get_slack_details( $user_id ) { 33 global $wpdb; 34 35 static $cached_details = []; 36 if ( isset( $cached_details[ $user_id ] ) ) { 37 return $cached_details[ $user_id ]; 38 } 39 40 // TODO abstract this? memcache it? 41 $user_details = $wpdb->get_var( $wpdb->prepare( "SELECT profiledata FROM slack_users WHERE user_id = %d LIMIT 1", $user_id ) ); 42 $user_details = $user_details ? json_decode( $user_details ) : false; 43 44 $cached_details[ $user_id ] = $user_details; 45 46 return $user_details; 47 } 48 47 49 public function is_available_for_user( $user ) { 48 // TODO Check if the user has a 2FA slack account. 50 $user_details = $this->get_slack_details( $user->ID ); 51 52 // Require the Slack account to exist, and for the user to have 2FA enabled on Slack. 53 return $user_detauls && empty( $user_details->deleted ) && ! empty( $user_details->has_2fa ); 54 } 55 56 public function generate_and_email_token( $user ) { 57 return $this->generate_and_slack_token( $user ); 58 } 59 60 public function generate_and_slack_token( $user ) { 61 $token = $this->generate_token( $user->ID ); 62 63 $message = "Please enter the following verification code on WordPress.org to complete your login:\n{$token}"; 64 65 $slack_details = $this->get_slack_details( $user->ID ); 66 67 if ( $slack_details->id ) { 68 // TODO: Replace this with a named Slack Bot. 69 return slack_dm( $message, $slack_details->id ); 70 } 71 49 72 return false; 50 73 } 51 74 52 /**53 * Generate and email the user token.54 *55 * @since 0.1-dev56 *57 * @param WP_User $user WP_User object of the logged-in user.58 */59 public function generate_and_email_token( $user ) {60 $token = $this->generate_token( $user->ID );61 62 /* translators: %s: site name */63 $subject = wp_strip_all_tags( sprintf( __( 'Your login confirmation code for %s', 'wporg' ), get_bloginfo( 'name' ) ) );64 /* translators: %s: token */65 $message = wp_strip_all_tags( sprintf( __( 'Enter %s to log in.', 'wporg' ), $token ) );66 67 $who = '@dd32';68 69 return slack_dm( $subject . "\n" . $message, $who );70 }71 72 75 }
Note: See TracChangeset
for help on using the changeset viewer.