Skip to content

Commit bb072c2

Browse files
committed
Fix HTTP error status for session endpoints
1 parent 397312f commit bb072c2

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,14 +1,15 @@
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::user;
89
use crate::models::user::UserNoEmailType;
910
use crate::models::{NewUser, User};
1011
use crate::schema::users;
11-
use crate::util::errors::{AppError, ReadOnlyMode};
12+
use crate::util::errors::{AppError, ChainError, ReadOnlyMode};
1213

1314
/// Handles the `GET /authorize_url` route.
1415
///
@@ -85,7 +86,7 @@ pub fn github_access_token(req: &mut dyn Request) -> AppResult<Response> {
8586
let session_state = req.session().remove(&"github_oauth_state".to_string());
8687
let session_state = session_state.as_ref().map(|a| &a[..]);
8788
if Some(&state[..]) != session_state {
88-
return Err(cargo_err("invalid state parameter"));
89+
return Err(bad_request("invalid state parameter"));
8990
}
9091
}
9192

@@ -96,7 +97,8 @@ pub fn github_access_token(req: &mut dyn Request) -> AppResult<Response> {
9697
.app()
9798
.github
9899
.exchange_code(code)
99-
.map_err(|s| cargo_err(&s))?;
100+
.map_err(|e| e.compat())
101+
.chain_error(|| server_error("Error obtaining token"))?;
100102
let token = token.access_token();
101103
let ghuser = github::github_api::<GithubUser>(req.app(), "/user", token)?;
102104
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
@@ -113,7 +113,7 @@ fn auth_gives_a_token() {
113113
#[test]
114114
fn access_token_needs_data() {
115115
let (_, anon) = TestApp::init().empty();
116-
let json = anon.get::<()>("/authorize").bad_with_status(200); // Change endpoint to 400?
116+
let json = anon.get::<()>("/authorize").bad_with_status(400);
117117
assert!(json.errors[0].detail.contains("invalid state"));
118118
}
119119

0 commit comments

Comments
 (0)