Skip to content

Commit e2c9213

Browse files
committed
Fix HTTP error status for session endpoints
1 parent 49a568e commit e2c9213

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/controllers/user/session.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
use crate::controllers::prelude::*;
1+
use crate::controllers::frontend_prelude::*;
22

33
use crate::github;
44
use conduit_cookie::RequestSession;
5+
use failure::Fail;
56
use oauth2::{prelude::*, AuthorizationCode, TokenResponse};
67

78
use crate::models::{NewUser, User};
89
use crate::schema::users;
9-
use crate::util::errors::{AppError, ReadOnlyMode};
10+
use crate::util::errors::{AppError, ChainError, ReadOnlyMode};
1011

1112
/// Handles the `GET /api/private/session/begin` route.
1213
///
@@ -83,7 +84,7 @@ pub fn authorize(req: &mut dyn Request) -> AppResult<Response> {
8384
let session_state = req.session().remove(&"github_oauth_state".to_string());
8485
let session_state = session_state.as_ref().map(|a| &a[..]);
8586
if Some(&state[..]) != session_state {
86-
return Err(cargo_err("invalid state parameter"));
87+
return Err(bad_request("invalid state parameter"));
8788
}
8889
}
8990

@@ -94,7 +95,8 @@ pub fn authorize(req: &mut dyn Request) -> AppResult<Response> {
9495
.app()
9596
.github
9697
.exchange_code(code)
97-
.map_err(|s| cargo_err(&s))?;
98+
.map_err(|e| e.compat())
99+
.chain_error(|| server_error("Error obtaining token"))?;
98100
let token = token.access_token();
99101
let ghuser = github::github_api::<GithubUser>(req.app(), "/user", token)?;
100102
let user = ghuser.save_to_database(&token.secret(), &*req.db_conn()?)?;

src/tests/user.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ fn access_token_needs_data() {
115115
let (_, anon) = TestApp::init().empty();
116116
let json = anon
117117
.get::<()>("/api/private/session/authorize")
118-
.bad_with_status(200); // Change endpoint to 400?
118+
.bad_with_status(400);
119119
assert!(json.errors[0].detail.contains("invalid state"));
120120
}
121121

0 commit comments

Comments
 (0)