rustauth-core 0.2.0

Core types and primitives for RustAuth.
Documentation
use http::{Method, StatusCode};

use super::shared::{json_response, request_cookie_header, sign_out_openapi_response};
use crate::api::{create_auth_endpoint, AsyncAuthEndpoint, AuthEndpointOptions, OpenApiOperation};
use crate::auth::session::SessionAuth;

pub(super) fn sign_out_endpoint() -> AsyncAuthEndpoint {
    create_auth_endpoint(
        "/sign-out",
        Method::POST,
        AuthEndpointOptions::new().operation_id("signOut").openapi(
            OpenApiOperation::new("signOut")
                .description("Sign out the current user")
                .response("200", sign_out_openapi_response()),
        ),
        move |context, request| async move {
            let cookie_header = request_cookie_header(&request).unwrap_or_default();
            let result = SessionAuth::new(&context)?.sign_out(cookie_header).await?;
            json_response(StatusCode::OK, &result, result.cookies.clone())
        },
    )
}