leaderboard work
This commit is contained in:
parent
334ef065af
commit
db6a5414d9
@ -148,6 +148,7 @@ jobs:
|
||||
|
||||
- name: build
|
||||
plan:
|
||||
- get: docker-image
|
||||
- get: repo
|
||||
trigger: true
|
||||
passed: [test]
|
||||
@ -190,6 +191,7 @@ jobs:
|
||||
repository: concourse/oci-build-task
|
||||
|
||||
inputs:
|
||||
- name: docker-image
|
||||
- name: repo
|
||||
path: .
|
||||
|
||||
|
||||
@ -51,8 +51,9 @@ pub async fn list_points(
|
||||
AuthBearer(token): AuthBearer,
|
||||
State(app_state): State<AppState>,
|
||||
) -> impl IntoResponse {
|
||||
if let Err(err) = handle_token(token, &app_state, Role::Student) {
|
||||
return err;
|
||||
let token_data = match handle_token(token, &app_state, Role::Student) {
|
||||
Err(err) => return err,
|
||||
Ok(token_data) => token_data,
|
||||
};
|
||||
|
||||
let result = query_as!(
|
||||
@ -67,10 +68,13 @@ pub async fn list_points(
|
||||
ON u.id = ea.user_id AND ea.confirmed = true
|
||||
LEFT JOIN events e
|
||||
ON ea.event_id = e.id
|
||||
WHERE
|
||||
u.grade = $1
|
||||
GROUP BY u.id
|
||||
ORDER BY points DESC
|
||||
;
|
||||
"#,
|
||||
token_data.grade,
|
||||
)
|
||||
.fetch_all(&app_state.db_pool)
|
||||
.await;
|
||||
|
||||
@ -154,6 +154,7 @@ pub struct Claims {
|
||||
pub exp: OffsetDateTime,
|
||||
pub id: i32,
|
||||
pub username: String,
|
||||
pub grade: i32,
|
||||
pub role: Role,
|
||||
}
|
||||
|
||||
|
||||
16
src/user.rs
16
src/user.rs
@ -67,7 +67,8 @@ pub async fn signin(
|
||||
SELECT
|
||||
id,
|
||||
username,
|
||||
role AS "role!: Role"
|
||||
role AS "role!: Role",
|
||||
grade
|
||||
FROM users
|
||||
WHERE username = $1 AND password = $2
|
||||
"#,
|
||||
@ -82,6 +83,7 @@ pub async fn signin(
|
||||
let claims = Claims {
|
||||
exp: OffsetDateTime::now_utc() + JWT_LIFETIME,
|
||||
id: user.id,
|
||||
grade: user.grade,
|
||||
username: user.username,
|
||||
role: user.role,
|
||||
};
|
||||
@ -101,21 +103,17 @@ pub async fn signin(
|
||||
|
||||
(StatusCode::OK, Json(json!({ "data": token })))
|
||||
}
|
||||
Ok(None) => {
|
||||
(
|
||||
Ok(None) => (
|
||||
StatusCode::UNAUTHORIZED,
|
||||
Json(json!({
|
||||
"error": format!("Incorrect username or password")
|
||||
})),
|
||||
)
|
||||
}
|
||||
Err(err) => {
|
||||
(
|
||||
),
|
||||
Err(err) => (
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
Json(json!({
|
||||
"error": format!("Unknown error signing in: {:?}", err)
|
||||
})),
|
||||
)
|
||||
}
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user