Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
timnolte committed Mar 7, 2024
1 parent a110fd4 commit 0872080
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 35 deletions.
16 changes: 12 additions & 4 deletions includes/openid-connect-generic-client-wrapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -542,13 +542,17 @@ public function authentication_request_callback() {
}

// Login the found / created user.
$start_time = microtime( true );
$this->login_user( $user, $token_response, $id_token_claim, $user_claim, $subject_identity );
$end_time = microtime( true );
// Log our success.
$this->logger->log( "Successful login for: {$user->user_login} ({$user->ID})", 'login-success', $end_time - $start_time );

// Allow plugins / themes to take action once a user is logged in.
$start_time = microtime( true );
do_action( 'openid-connect-generic-user-logged-in', $user );

// Log our success.
$this->logger->log( "Successful login for: {$user->user_login} ({$user->ID})", 'login-success' );
$end_time = microtime( true );
$this->logger->log( 'openid-connect-generic-user-logged-in', 'do_action', $end_time - $start_time );

// Default redirect to the homepage.
$redirect_url = home_url();
Expand Down Expand Up @@ -957,6 +961,7 @@ private function get_email_from_claim( $user_claim, $error_on_missing_key = fals
* @return \WP_Error | \WP_User
*/
public function create_new_user( $subject_identity, $user_claim ) {
$start_time = microtime( true );
$user_claim = apply_filters( 'openid-connect-generic-alter-user-claim', $user_claim );

// Default username & email to the subject identity.
Expand Down Expand Up @@ -1054,6 +1059,8 @@ public function create_new_user( $subject_identity, $user_claim ) {
if ( ! empty( $uid ) ) {
$user = $this->update_existing_user( $uid, $subject_identity );
do_action( 'openid-connect-generic-update-user-using-current-claim', $user, $user_claim );
$end_time = microtime( true );
$this->logger->log( "Existing user updated: {$user->user_login} ($uid)", __METHOD__, $end_time - $start_time );
return $user;
}
}
Expand Down Expand Up @@ -1104,7 +1111,8 @@ public function create_new_user( $subject_identity, $user_claim ) {
add_user_meta( $user->ID, 'openid-connect-generic-subject-identity', (string) $subject_identity, true );

// Log the results.
$this->logger->log( "New user created: {$user->user_login} ($uid)", 'success' );
$end_time = microtime( true );
$this->logger->log( "New user created: {$user->user_login} ($uid)", __METHOD__, $end_time - $start_time );

// Allow plugins / themes to take action on new user creation.
do_action( 'openid-connect-generic-user-create', $user, $user_claim );
Expand Down
18 changes: 12 additions & 6 deletions includes/openid-connect-generic-client.php
Original file line number Diff line number Diff line change
Expand Up @@ -231,8 +231,10 @@ public function request_authentication_token( $code ) {
$request = apply_filters( 'openid-connect-generic-alter-request', $request, 'get-authentication-token' );

// Call the server and ask for a token.
$this->logger->log( $this->endpoint_token, 'request_authentication_token' );
$response = wp_remote_post( $this->endpoint_token, $request );
$start_time = microtime( true );
$response = wp_remote_post( $this->endpoint_token, $request );
$end_time = microtime( true );
$this->logger->log( $this->endpoint_token, 'request_authentication_token', $end_time - $start_time );

if ( is_wp_error( $response ) ) {
$response->add( 'request_authentication_token', __( 'Request for authentication token failed.', 'daggerhart-openid-connect-generic' ) );
Expand Down Expand Up @@ -262,8 +264,10 @@ public function request_new_tokens( $refresh_token ) {
$request = apply_filters( 'openid-connect-generic-alter-request', $request, 'refresh-token' );

// Call the server and ask for new tokens.
$this->logger->log( $this->endpoint_token, 'request_new_tokens' );
$response = wp_remote_post( $this->endpoint_token, $request );
$start_time = microtime( true );
$response = wp_remote_post( $this->endpoint_token, $request );
$end_time = microtime( true );
$this->logger->log( $this->endpoint_token, 'request_new_tokens', $end_time - $start_time );

if ( is_wp_error( $response ) ) {
$response->add( 'refresh_token', __( 'Refresh token failed.', 'daggerhart-openid-connect-generic' ) );
Expand Down Expand Up @@ -336,8 +340,10 @@ public function request_userinfo( $access_token ) {
$request['headers']['Host'] = $host;

// Attempt the request including the access token in the query string for backwards compatibility.
$this->logger->log( $this->endpoint_userinfo, 'request_userinfo' );
$response = wp_remote_post( $this->endpoint_userinfo, $request );
$start_time = microtime( true );
$response = wp_remote_post( $this->endpoint_userinfo, $request );
$end_time = microtime( true );
$this->logger->log( $this->endpoint_userinfo, 'request_userinfo', $end_time - $start_time );

if ( is_wp_error( $response ) ) {
$response->add( 'request_userinfo', __( 'Request for userinfo failed.', 'daggerhart-openid-connect-generic' ) );
Expand Down
50 changes: 25 additions & 25 deletions includes/openid-connect-generic-option-logger.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,16 @@ public function log_hook( $arg1 = null ) {
/**
* Save an array of data to the logs.
*
* @param mixed $data The data to be logged.
* @param mixed $type The type of log message.
* @param mixed $data The log message data.
* @param mixed $type The log message type.
* @param float|null $processing_time Optional event processing time.
*
* @return bool
*/
public function log( $data, $type = null ) {
public function log( $data, $type = null, $processing_time = null ) {
if ( boolval( $this->logging_enabled ) ) {
$logs = $this->get_logs();
$logs[] = $this->make_message( $data, $type );
$logs[] = $this->make_message( $data, $type, $processing_time );
$logs = $this->upkeep_logs( $logs );
return $this->save_logs( $logs );
}
Expand Down Expand Up @@ -161,12 +162,13 @@ public function get_option_name() {
/**
* Create a message array containing the data and other information.
*
* @param mixed $data The log message data.
* @param mixed $type The log message type.
* @param mixed $data The log message data.
* @param mixed $type The log message type.
* @param float|null $processing_time The event processing time.
*
* @return array
*/
private function make_message( $data, $type ) {
private function make_message( $data, $type, $processing_time ) {
// Determine the type of message.
if ( empty( $type ) ) {
$type = $this->default_message_type;
Expand All @@ -182,11 +184,12 @@ private function make_message( $data, $type ) {

// Construct the message.
$message = array(
'type' => $type,
'time' => time(),
'user_ID' => get_current_user_id(),
'uri' => preg_replace( '/code=([^&]+)/i', 'code=', $request_uri ),
'data' => $data,
'type' => $type,
'time' => time(),
'user_ID' => get_current_user_id(),
'uri' => preg_replace( '/code=([^&]+)/i', 'code=', $request_uri ),
'data' => $data,
'processing_time' => $processing_time,
);

return $message;
Expand Down Expand Up @@ -251,32 +254,29 @@ public function get_logs_table( $logs = array() ) {
?>
<table id="logger-table" class="wp-list-table widefat fixed striped posts">
<thead>
<th class="col-details">Details</th>
<th class="col-data">Data</th>
<th class="col-date"><?php esc_html_e( 'Date', 'daggerhart-openid-connect-generic' ); ?></th>
<th class="col-type"><?php esc_html_e( 'Type', 'daggerhart-openid-connect-generic' ); ?></th>
<th class="col-details"><?php esc_html_e( 'Details', 'daggerhart-openid-connect-generic' ); ?></th>
<th class="col-data"><?php esc_html_e( 'Data', 'daggerhart-openid-connect-generic' ); ?></th>
<th class="col-response-time"><?php esc_html_e( 'Response&nbsp;Time&nbsp;(sec)', 'daggerhart-openid-connect-generic' ); ?></th>
</thead>
<tbody>
<?php foreach ( $logs as $log ) { ?>
<tr>
<td class="col-date"><?php print esc_html( ! empty( $log['time'] ) ? gmdate( 'Y-m-d H:i:s', $log['time'] ) : '' ); ?></td>
<td class="col-type"><?php print esc_html( ! empty( $log['type'] ) ? $log['type'] : '' ); ?></td>
<td class="col-details">
<div>
<label><?php esc_html_e( 'Type', 'daggerhart-openid-connect-generic' ); ?>: </label>
<?php print esc_html( $log['type'] ); ?>
</div>
<div>
<label><?php esc_html_e( 'Date', 'daggerhart-openid-connect-generic' ); ?>: </label>
<?php print esc_html( gmdate( 'Y-m-d H:i:s', $log['time'] ) ); ?>
</div>
<div>
<label><?php esc_html_e( 'User', 'daggerhart-openid-connect-generic' ); ?>: </label>
<?php print esc_html( ( get_userdata( $log['user_ID'] ) ) ? get_userdata( $log['user_ID'] )->user_login : '0' ); ?>
</div>
<div>
<label><?php esc_html_e( 'URI ', 'daggerhart-openid-connect-generic' ); ?>: </label>
<?php print esc_url( $log['uri'] ); ?>
<?php print esc_url( ! empty( $log['uri'] ) ? $log['uri'] : '' ); ?>
</div>
</td>

<td class="col-data"><pre><?php var_dump( $log['data'] ); ?></pre></td>
<td class="col-data"><pre><?php var_dump( ! empty( $log['data'] ) ? $log['data'] : '' ); ?></pre></td>
<td class="col-response-time"><?php print esc_html( ! empty( $log['response_time'] ) ? $log['response_time'] : '' ); ?></td>
</tr>
<?php } ?>
</tbody>
Expand Down

0 comments on commit 0872080

Please sign in to comment.