Skip to content

Commit eb27fed

Browse files
committed
expects token from header
1 parent f9a3344 commit eb27fed

3 files changed

Lines changed: 19 additions & 8 deletions

File tree

src/endpoints.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::collections::BTreeMap;
22

3+
use http::HeaderMap;
34
use ::octocrab::models::{teams::RequestedTeam, Author};
45
use anyhow::Context;
56
use axum::{
@@ -193,11 +194,12 @@ pub struct Region {
193194

194195
pub async fn get_region(
195196
session: Session,
197+
headers: HeaderMap,
196198
State(server_state): State<ServerState>,
197199
OriginalUri(original_uri): OriginalUri,
198200
Path(github_login): Path<String>,
199201
) -> Result<Json<Region>, Error> {
200-
let sheets_client = sheets_client(&session, server_state.clone(), original_uri.clone()).await?;
202+
let sheets_client = sheets_client(&session, server_state.clone(), headers, original_uri.clone()).await?;
201203
let trainees = get_trainees(
202204
sheets_client,
203205
&server_state.config.github_email_mapping_sheet_id,
@@ -222,11 +224,12 @@ pub struct AttendanceResponse {
222224

223225
pub async fn fetch_attendance(
224226
session: Session,
227+
headers: HeaderMap,
225228
State(server_state): State<ServerState>,
226229
OriginalUri(original_uri): OriginalUri,
227230
) -> Result<Json<AttendanceResponse>, Error> {
228231
let all_courses = &server_state.config.courses;
229-
let sheets_client = sheets_client(&session, server_state.clone(), original_uri.clone()).await?;
232+
let sheets_client = sheets_client(&session, server_state.clone(), headers, original_uri.clone()).await?;
230233

231234
let mut courses: CourseAttendance = BTreeMap::new();
232235
let mut register_futures = Vec::new();

src/frontend.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use axum::{
77
response::{Html, IntoResponse, Response},
88
};
99
use futures::future::join_all;
10-
use http::{header::CONTENT_TYPE, StatusCode, Uri};
10+
use http::{header::{CONTENT_TYPE}, HeaderMap, StatusCode, Uri};
1111
use serde::Deserialize;
1212
use tower_sessions::Session;
1313

@@ -95,11 +95,12 @@ struct CourseScheduleWithBatchMetadata {
9595

9696
pub async fn get_trainee_batch(
9797
session: Session,
98+
headers: HeaderMap,
9899
State(server_state): State<ServerState>,
99100
OriginalUri(original_uri): OriginalUri,
100101
Path((course, batch_github_slug)): Path<(String, String)>,
101102
) -> Result<Html<String>, Error> {
102-
let sheets_client = sheets_client(&session, server_state.clone(), original_uri.clone()).await?;
103+
let sheets_client = sheets_client(&session, server_state.clone(), headers, original_uri.clone()).await?;
103104
let github_org = &server_state.config.github_org;
104105
let course_schedule = server_state
105106
.config
@@ -182,11 +183,12 @@ impl TraineeBatchTemplate {
182183

183184
pub async fn get_reviewers(
184185
session: Session,
186+
headers: HeaderMap,
185187
State(server_state): State<ServerState>,
186188
OriginalUri(original_uri): OriginalUri,
187189
Path(course): Path<String>,
188190
) -> Result<Html<String>, Error> {
189-
let sheets_client = sheets_client(&session, server_state.clone(), original_uri.clone()).await?;
191+
let sheets_client = sheets_client(&session, server_state.clone(), headers, original_uri.clone()).await?;
190192
let mut is_staff = true;
191193
let mut staff_details = get_reviewer_staff_info(
192194
sheets_client,

src/sheets.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use anyhow::Context;
2-
use http::Uri;
2+
use http::{HeaderMap, Uri};
33
use sheets::{spreadsheets::Spreadsheets, types::CellData};
44
use tower_sessions::Session;
55

@@ -35,12 +35,18 @@ pub(crate) fn cell_date(cell: &CellData) -> Result<chrono::NaiveDate, anyhow::Er
3535
pub(crate) async fn sheets_client(
3636
session: &Session,
3737
server_state: ServerState,
38+
headers: HeaderMap,
3839
original_uri: Uri,
3940
) -> Result<SheetsClient, Error> {
40-
let maybe_token: Option<String> = session
41+
let maybe_token = if let Some(auth_header) = headers.get("x-authorization-google") {
42+
let token = auth_header.to_str().unwrap_or_default().to_string();
43+
Some(token)
44+
} else {
45+
session
4146
.get(GoogleScope::Sheets.token_session_key())
4247
.await
43-
.context("Session load error")?;
48+
.context("Session load error")?
49+
};
4450

4551
let redirect_endpoint = redirect_endpoint(&server_state);
4652

0 commit comments

Comments
 (0)