peer-group-grading/crates/backend/src/controller/user.rs
Mika Bomm 304763fbf8
Some checks failed
ci/woodpecker/push/check_fmt Pipeline failed
feat: add validation for username and password length in user creation
2025-04-03 14:20:06 +02:00

53 lines
1.1 KiB
Rust

use crate::{Database, entity, error::ApiError};
use actix_web::{Responder, delete, get, post, put, web};
use serde::Deserialize;
use validator::Validate;
pub fn setup(cfg: &mut actix_web::web::ServiceConfig) {
cfg.service(get_users)
.service(get_user)
.service(create_user)
.service(delete_user);
}
#[derive(Deserialize, Validate)]
struct CreateUser {
#[validate(length(min = 4))]
username: String,
name: String,
#[validate(length(min = 8))]
password: String,
}
#[get("")]
async fn get_users() -> impl Responder {
""
}
#[get("/{id}")]
async fn get_user() -> impl Responder {
""
}
#[post("")]
async fn create_user(
db: web::Data<Database>,
user: web::Json<CreateUser>,
) -> Result<web::Json<entity::user::Model>, ApiError> {
let user = user.into_inner();
let result = db
.create_user(user.name, user.username, user.password)
.await?;
Ok(web::Json(result))
}
#[put("")]
async fn update_user() -> impl Responder {
""
}
#[delete("/{id}")]
async fn delete_user() -> impl Responder {
""
}