post('/callback/microsoft/token', function () { // Require the user to be logged in global $response; self::requirePermission('callback_microsoft_token'); $user = (new authentication())->get_user(); // Check if the request was successful if (!$user) { // Log the incident (new logs_o())->add('user_callback', 'global', 0, 0, 'USER_CALLBACK_MICROSOFT_TOKEN', 'User not logged in'); $response->error('Invalid session', 400); } // Require the parameters: // client_info // code // session_state // state self::requireParameters(['client_info', 'code', 'session_state', 'state']); // Check if the parameters are valid self::requireType((string)self::getParameter('client_info'), self::type_string()); self::requireType((string)self::getParameter('code'), self::type_string()); self::requireType((string)self::getParameter('session_state'), self::type_string()); self::requireType((string)self::getParameter('state'), self::type_string()); // Check if the parameters are valid $client_info = (string)self::getParameter('client_info'); $code = (string)self::getParameter('code'); $session_state = (string)self::getParameter('session_state'); $state = (string)self::getParameter('state'); // Check if the parameters are valid if (empty($client_info) || empty($code) || empty($session_state) || empty($state)) { (new logs_o())->add('user_callback', 'global', 0, $user->id, 'USER_CALLBACK_MICROSOFT_TOKEN', 'Invalid parameters'); $response->error('Invalid parameters', 400); } // Log the incident (new logs_o())->add('user_callback', 'global', 1, $user->id, 'USER_CALLBACK_MICROSOFT_TOKEN', 'Successfully received callback from Microsoft'); // Save the parameters to the database $user->keys->setValue('microsoft_client_info', $client_info); $user->keys->setValue('microsoft_code', $code); $user->keys->setValue('microsoft_session_state', $session_state); $user->keys->setValue('microsoft_state', $state); // Return a success message $response->success(['message' => 'Successfully received callback from Microsoft', 'client_info' => $client_info, 'code' => $code, 'session_state' => $session_state, 'state' => $state]); }, [ 'callback_microsoft_token' => 'Callback Microsoft token (Set the token)', ] ); } }