aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm/src/web/login.rs
blob: decc97219fab3e1f183d520bf24d1dcfbfe9be43 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use gotham::state::FromState as _;

#[derive(
    serde::Deserialize,
    gotham_derive::StateData,
    gotham_derive::StaticResponseExtender,
)]
pub struct QueryParams {
    username: Option<String>,
}

#[derive(serde::Serialize)]
struct Response {
    username: Option<String>,
}

pub fn run(
    mut state: gotham::state::State,
) -> (gotham::state::State, hyper::Response<hyper::Body>) {
    let username = {
        let query_params = QueryParams::borrow_from(&state);
        query_params.username.clone()
    };
    let session = gotham::middleware::session::SessionData::<
        crate::web::SessionData,
    >::borrow_mut_from(&mut state);

    session.username = username.clone();

    (
        state,
        hyper::Response::new(hyper::Body::from(
            serde_json::to_string(&Response { username }).unwrap(),
        )),
    )
}