A focused Docker Compose management web application.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: proper error when same username

Brooke 71879445 d3088e75

+19 -1
+19 -1
packages/node/src/api/auth.rs
··· 2 2 3 3 use std::fmt::Debug; 4 4 5 - use eyre::{Context, ContextCompat, Result}; 5 + use eyre::{Context, ContextCompat, Result, eyre}; 6 6 use log::error; 7 7 use luminary_macros::wrap_err; 8 8 use password_auth::verify_password; ··· 81 81 #[endpoint] 82 82 async fn create_user(depot: &mut Depot, body: JsonBody<CreateUserRequest>) -> LuminaryResponse<String> { 83 83 let auth = obtain!(depot, LuminaryAuthentication); 84 + 85 + if auth.get_user_by_name(&body.username).await?.is_some() { 86 + return Err(eyre!("A user with that name already exists").into()); 87 + } 84 88 85 89 let reset_token = auth.create_user(&body.username).await?; 86 90 return Ok(reset_token.into()); ··· 222 226 .fetch_optional(&self.pool) 223 227 .await 224 228 .wrap_err("Failed to look up session")?; 229 + 230 + return Ok(user); 231 + } 232 + 233 + #[wrap_err("Failed to get user by name")] 234 + pub async fn get_user_by_name(&self, username: &str) -> Result<Option<LuminaryUser>> { 235 + let user = sqlx::query_as!( 236 + LuminaryUser, 237 + "SELECT * FROM [user] WHERE [username] = ?", 238 + username 239 + ) 240 + .fetch_optional(&self.pool) 241 + .await 242 + .wrap_err("Failed to look up user by name")?; 225 243 226 244 return Ok(user); 227 245 }