diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..74ce2fe --- /dev/null +++ b/notes.md @@ -0,0 +1,73 @@ +# Wordpress auth + +Add the following code to `wp-content/themes/bravada/functions.php`: + +``` +function rot_auth( $user, $username, $password ){ + // Make sure a username and password are present for us to work with + if($username == '' || $password == '') return; + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, 'https://app.rudernlinz.at/wikiauth'); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, "name=$username&password=$password"); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + // Execute the cURL session and get the response + $response = curl_exec($ch); + + // Check for cURL errors + if(curl_errno($ch)){ + $user = new WP_Error( 'denied', __('Curl error: ' . curl_error($ch)) ); + } + + // Close the cURL session + curl_close($ch); + + + if (strpos($response, 'SUCC') !== false) { + $user = get_user_by('login', $username); + + if (!$user) { + // User does not exist, create a new one + $userdata = array( + 'user_email' => $username, + 'user_login' => $username, + 'first_name' => $username, + 'last_name' => '' + ); + $new_user_id = wp_insert_user($userdata); + + if (!is_wp_error($new_user_id)) { + // Load the new user info + $user = new WP_User($new_user_id); + + // Set role based on username + if ($username == 'Philipp Hofer' || $username == 'Marie Birner') { + $user->set_role('administrator'); + } else { + $user->set_role('editor'); + } + } else { + // Handle error in user creation + return $new_user_id; + } + } else { + } + + } else { + $user = new WP_Error( 'denied', __("Falscher Benutzername/Passwort. Verwendest du deine Accountdaten vom Ruderassistenten?") ); + } + + + + return $user; +} + +// Comment this line if you wish to fall back on WordPress authentication +// Useful for times when the external service is offline +remove_action('authenticate', 'wp_authenticate_username_password', 20); + +add_filter( 'authenticate', 'rot_auth', 10, 3 ); +```