feat: Enhance user permissions and update event handling with improved response structures
This commit is contained in:
@@ -368,6 +368,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "4/0-ARAA6EeEKN8rlQ_Dh5XAAA_dCpKFwKa3-Jl9cO7I".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -379,6 +380,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "authorization/code/with/slashes".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -390,6 +392,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "authorization+code+with+plus".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -401,6 +404,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "authorization=code=with=equals=".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -412,6 +416,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "authorization@code#with$invalid%chars".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -423,6 +428,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "".to_string(),
|
||||
state: "valid_state".to_string(),
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
let result = auth_request.validate();
|
||||
@@ -441,6 +447,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "test_code".to_string(),
|
||||
state: token,
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
// Validate and extract PKCE verifier
|
||||
@@ -459,6 +466,7 @@ mod tests {
|
||||
let auth_request = AuthRequest {
|
||||
code: "test_code".to_string(),
|
||||
state: token,
|
||||
redirect_uri: None,
|
||||
};
|
||||
|
||||
// Legacy validation should still work
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use super::{
|
||||
UsersActiveInactiveRequestDto, UsersCreateRequestDto,
|
||||
UsersSetNewPasswordRequestDto, UsersUpdateRequestDto,
|
||||
users_dto::UsersDetailQueryDto, // Add this line
|
||||
};
|
||||
use crate::{
|
||||
AppState, MetaRequestDto, ResponseListSuccessDto, UsersRepository, UsersSchema,
|
||||
@@ -31,22 +32,27 @@ pub trait UsersServiceTrait: Send + Sync + 'static {
|
||||
async fn update_user_password(state: &AppState, email: String, payload: UsersSetNewPasswordRequestDto) -> Response;
|
||||
async fn get_user_by_mentor_id(state: &AppState, mentor_id: String) -> Response;
|
||||
async fn delete_user(state: &AppState, id: String) -> Response;
|
||||
|
||||
async fn get_user_by_email(&self, email: &str, state: &AppState) -> Result<Option<UserDto>>;
|
||||
async fn create_user_by_dto(&self, new_user: CreateUserDto, state: &AppState) -> Result<UserDto>;
|
||||
async fn update_user_avatar(&self, email: &str, avatar_url: Option<String>, state: &AppState) -> Result<()>;
|
||||
async fn upload_file(state: &AppState, user_id: String, multipart: Multipart) -> Response;
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct UsersService;
|
||||
|
||||
impl UsersService {
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl UsersServiceTrait for UsersService {
|
||||
async fn get_user_list(state: &AppState, meta: MetaRequestDto) -> Response {
|
||||
async fn get_user_by_id_internal(&self, id: &surrealdb::sql::Thing, state: &AppState) -> Result<UsersDetailQueryDto>;
|
||||
|
||||
async fn get_user_by_email(&self, email: &str, state: &AppState) -> Result<Option<UserDto>>;
|
||||
async fn create_user_by_dto(&self, new_user: CreateUserDto, state: &AppState) -> Result<UserDto>;
|
||||
async fn update_user_avatar(&self, email: &str, avatar_url: Option<String>, state: &AppState) -> Result<()>;
|
||||
async fn upload_file(state: &AppState, user_id: String, multipart: Multipart) -> Response;
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct UsersService;
|
||||
|
||||
impl UsersService {
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl UsersServiceTrait for UsersService {
|
||||
async fn get_user_by_id_internal(&self, id: &surrealdb::sql::Thing, state: &AppState) -> Result<UsersDetailQueryDto> {
|
||||
let repo = crate::UsersRepository::new(state);
|
||||
repo.query_user_by_id(id).await
|
||||
}
|
||||
async fn get_user_list(state: &AppState, meta: MetaRequestDto) -> Response {
|
||||
let repo = UsersRepository::new(state);
|
||||
match repo.query_user_list(meta).await {
|
||||
Ok(data) => {
|
||||
|
||||
Reference in New Issue
Block a user