Show auth success

This commit is contained in:
Andras Schmelczer 2024-12-12 21:32:41 +00:00
parent 1403961a09
commit 7a8cca8fe7
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
4 changed files with 34 additions and 7 deletions

View file

@ -56,6 +56,7 @@ impl From<StoredDocumentVersion> for DocumentVersionWithoutContent {
#[serde(rename_all = "camelCase")]
pub struct PingResponse {
pub server_version: String,
pub is_authenticated: bool,
}
#[derive(Debug, Clone, Serialize, JsonSchema)]

View file

@ -1,10 +1,23 @@
use axum::Json;
use axum::{extract::State, Json};
use axum_extra::{
headers::{authorization::Bearer, Authorization},
TypedHeader,
};
use crate::{database::models::PingResponse, errors::SyncServerError};
use super::auth::{self, auth};
use crate::{app_state::AppState, database::models::PingResponse, errors::SyncServerError};
#[axum::debug_handler]
pub async fn ping() -> Result<Json<PingResponse>, SyncServerError> {
pub async fn ping(
maybe_auth_header: Option<TypedHeader<Authorization<Bearer>>>,
State(state): State<AppState>,
) -> Result<Json<PingResponse>, SyncServerError> {
let is_authenticated = maybe_auth_header
.map(|auth_header| auth(&state, auth_header.token()).is_ok())
.unwrap_or(false);
Ok(Json(PingResponse {
server_version: env!("CARGO_PKG_VERSION").to_string(),
is_authenticated,
}))
}

View file

@ -26,7 +26,14 @@ export class SyncServer {
}
public async ping(): Promise<components["schemas"]["PingResponse"]> {
const response = await this.client.GET("/ping");
const response = await this.client.GET("/ping", {
params: {
header: {
authorization:
"Bearer " + this.database.getSettings().token,
},
},
});
Logger.getInstance().info(
"Ping response: " + JSON.stringify(response.data)

View file

@ -46,9 +46,15 @@ export class SyncSettingsTab extends PluginSettingTab {
button.setButtonText("Test Connection").onClick(async () => {
try {
const result = await this.syncServer.ping();
new Notice(
`Successfully connected to server! (server version: ${result.serverVersion})`
);
if (result.isAuthenticated) {
new Notice(
`Successfully authenticated with the server (version: ${result.serverVersion})!`
);
} else {
new Notice(
`Successfully connected to server (version: ${result.serverVersion}) but failed to authenticate.`
);
}
} catch (e) {
new Notice("Failed to connect to server: " + e);
}