aboutsummaryrefslogtreecommitdiff
path: root/planetwars-server/src
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2022-07-24 15:15:09 +0200
committerIlion Beyst <ilion.beyst@gmail.com>2022-07-24 15:15:42 +0200
commit33664eff2c93136658b7f863c95e1bfda91141ee (patch)
treeacda060d878b557e58db042a3bb30ff4212c17b1 /planetwars-server/src
parent4a582e8079178a7ac11f2a492e7988fcdaa210cd (diff)
downloadplanetwars.dev-33664eff2c93136658b7f863c95e1bfda91141ee.tar.xz
planetwars.dev-33664eff2c93136658b7f863c95e1bfda91141ee.zip
basic user profile pages
Diffstat (limited to 'planetwars-server/src')
-rw-r--r--planetwars-server/src/db/users.rs4
-rw-r--r--planetwars-server/src/lib.rs2
-rw-r--r--planetwars-server/src/routes/bots.rs9
-rw-r--r--planetwars-server/src/routes/users.rs2
4 files changed, 10 insertions, 7 deletions
diff --git a/planetwars-server/src/db/users.rs b/planetwars-server/src/db/users.rs
index 3a74c53..1098204 100644
--- a/planetwars-server/src/db/users.rs
+++ b/planetwars-server/src/db/users.rs
@@ -57,14 +57,14 @@ pub fn create_user(credentials: &Credentials, conn: &PgConnection) -> QueryResul
.get_result::<User>(conn)
}
-pub fn find_user(username: &str, db_conn: &PgConnection) -> QueryResult<User> {
+pub fn find_user_by_name(username: &str, db_conn: &PgConnection) -> QueryResult<User> {
users::table
.filter(users::username.eq(username))
.first::<User>(db_conn)
}
pub fn authenticate_user(credentials: &Credentials, db_conn: &PgConnection) -> Option<User> {
- find_user(credentials.username, db_conn)
+ find_user_by_name(credentials.username, db_conn)
.optional()
.unwrap()
.and_then(|user| {
diff --git a/planetwars-server/src/lib.rs b/planetwars-server/src/lib.rs
index 050048c..ccf7cfc 100644
--- a/planetwars-server/src/lib.rs
+++ b/planetwars-server/src/lib.rs
@@ -119,11 +119,11 @@ pub fn api() -> Router {
.route("/register", post(routes::users::register))
.route("/login", post(routes::users::login))
.route("/users/me", get(routes::users::current_user))
+ .route("/users/:user/bots", get(routes::bots::get_user_bots))
.route(
"/bots",
get(routes::bots::list_bots).post(routes::bots::create_bot),
)
- .route("/bots/my_bots", get(routes::bots::get_my_bots))
.route("/bots/:bot_id", get(routes::bots::get_bot))
.route(
"/bots/:bot_id/upload",
diff --git a/planetwars-server/src/routes/bots.rs b/planetwars-server/src/routes/bots.rs
index fc180d8..896359c 100644
--- a/planetwars-server/src/routes/bots.rs
+++ b/planetwars-server/src/routes/bots.rs
@@ -12,6 +12,7 @@ use std::path::PathBuf;
use std::sync::Arc;
use thiserror;
+use crate::db;
use crate::db::bots::{self, BotVersion};
use crate::db::ratings::{self, RankedBot};
use crate::db::users::User;
@@ -158,11 +159,13 @@ pub async fn get_bot(
})))
}
-pub async fn get_my_bots(
+pub async fn get_user_bots(
conn: DatabaseConnection,
- user: User,
+ Path(user_name): Path<String>,
) -> Result<Json<Vec<Bot>>, StatusCode> {
- bots::find_bots_by_owner(user.id, &conn)
+ let user =
+ db::users::find_user_by_name(&user_name, &conn).map_err(|_| StatusCode::NOT_FOUND)?;
+ db::bots::find_bots_by_owner(user.id, &conn)
.map(Json)
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)
}
diff --git a/planetwars-server/src/routes/users.rs b/planetwars-server/src/routes/users.rs
index 1989904..faad1d1 100644
--- a/planetwars-server/src/routes/users.rs
+++ b/planetwars-server/src/routes/users.rs
@@ -89,7 +89,7 @@ impl RegistrationParams {
errors.push("password must be at least 8 characters".to_string());
}
- if users::find_user(&self.username, &conn).is_ok() {
+ if users::find_user_by_name(&self.username, &conn).is_ok() {
errors.push("username is already taken".to_string());
}