Merge branch 'main' into gotrue-admin-creation-2
This commit is contained in:
commit
04d1ffdf00
|
|
@ -195,7 +195,9 @@ services:
|
||||||
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
|
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
|
||||||
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
|
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
|
||||||
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
||||||
|
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
||||||
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
||||||
|
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
||||||
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,7 @@ services:
|
||||||
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
||||||
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
||||||
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
||||||
|
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
||||||
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
||||||
- APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL}
|
- APPFLOWY_ACCESS_CONTROL=${APPFLOWY_ACCESS_CONTROL}
|
||||||
- APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS}
|
- APPFLOWY_DATABASE_MAX_CONNECTIONS=${APPFLOWY_DATABASE_MAX_CONNECTIONS}
|
||||||
|
|
@ -180,8 +181,10 @@ services:
|
||||||
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
- APPFLOWY_S3_SECRET_KEY=${APPFLOWY_S3_SECRET_KEY}
|
||||||
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
|
- APPFLOWY_S3_BUCKET=${APPFLOWY_S3_BUCKET}
|
||||||
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
|
- APPFLOWY_S3_REGION=${APPFLOWY_S3_REGION}
|
||||||
|
- APPFLOWY_MAILER_SMTP_HOST=${APPFLOWY_MAILER_SMTP_HOST}
|
||||||
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
- APPFLOWY_MAILER_SMTP_PORT=${APPFLOWY_MAILER_SMTP_PORT}
|
||||||
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
- APPFLOWY_MAILER_SMTP_USERNAME=${APPFLOWY_MAILER_SMTP_USERNAME}
|
||||||
|
- APPFLOWY_MAILER_SMTP_EMAIL=${APPFLOWY_MAILER_SMTP_EMAIL}
|
||||||
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
- APPFLOWY_MAILER_SMTP_PASSWORD=${APPFLOWY_MAILER_SMTP_PASSWORD}
|
||||||
volumes:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
|
|
|
||||||
|
|
@ -431,13 +431,8 @@ async fn handle_message(
|
||||||
// send one ack back to the client.
|
// send one ack back to the client.
|
||||||
if ack_response.is_none() {
|
if ack_response.is_none() {
|
||||||
ack_response = Some(
|
ack_response = Some(
|
||||||
CollabAck::new(
|
CollabAck::new(CollabOrigin::Server, object_id.to_string(), msg_id, seq_num)
|
||||||
message_origin.clone(),
|
.with_payload(payload.unwrap_or_default()),
|
||||||
object_id.to_string(),
|
|
||||||
msg_id,
|
|
||||||
seq_num,
|
|
||||||
)
|
|
||||||
.with_payload(payload.unwrap_or_default()),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -453,14 +448,9 @@ async fn handle_message(
|
||||||
};
|
};
|
||||||
|
|
||||||
ack_response = Some(
|
ack_response = Some(
|
||||||
CollabAck::new(
|
CollabAck::new(CollabOrigin::Server, object_id.to_string(), msg_id, seq_num)
|
||||||
message_origin.clone(),
|
.with_code(code)
|
||||||
object_id.to_string(),
|
.with_payload(payload),
|
||||||
msg_id,
|
|
||||||
seq_num,
|
|
||||||
)
|
|
||||||
.with_code(code)
|
|
||||||
.with_payload(payload),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ use redis::{AsyncCommands, RedisResult, Value};
|
||||||
use database::pg_row::AFImportTask;
|
use database::pg_row::AFImportTask;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::from_str;
|
use serde_json::from_str;
|
||||||
use sqlx::types::chrono;
|
|
||||||
use sqlx::types::chrono::{DateTime, TimeZone, Utc};
|
use sqlx::types::chrono::{DateTime, TimeZone, Utc};
|
||||||
use sqlx::PgPool;
|
use sqlx::PgPool;
|
||||||
use std::collections::{HashMap, HashSet};
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|
@ -912,7 +911,6 @@ async fn process_unzip_file(
|
||||||
let mut collab_params_list = vec![];
|
let mut collab_params_list = vec![];
|
||||||
let mut database_view_ids_by_database_id: HashMap<String, Vec<String>> = HashMap::new();
|
let mut database_view_ids_by_database_id: HashMap<String, Vec<String>> = HashMap::new();
|
||||||
let mut orphan_view_ids = HashSet::new();
|
let mut orphan_view_ids = HashSet::new();
|
||||||
let timestamp = chrono::Utc::now().timestamp();
|
|
||||||
|
|
||||||
// 3. Collect all collabs and resources
|
// 3. Collect all collabs and resources
|
||||||
let mut stream = imported.into_collab_stream().await;
|
let mut stream = imported.into_collab_stream().await;
|
||||||
|
|
|
||||||
|
|
@ -1985,6 +1985,21 @@ async fn list_database_row_details_handler(
|
||||||
let list_db_row_query = param.into_inner();
|
let list_db_row_query = param.into_inner();
|
||||||
let row_ids = list_db_row_query.into_ids();
|
let row_ids = list_db_row_query.into_ids();
|
||||||
|
|
||||||
|
if let Err(e) = Uuid::parse_str(&workspace_id) {
|
||||||
|
return Err(
|
||||||
|
AppError::InvalidRequest(format!("invalid workspace id `{}`: {}", db_id, e)).into(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if let Err(e) = Uuid::parse_str(&db_id) {
|
||||||
|
return Err(AppError::InvalidRequest(format!("invalid database id `{}`: {}", db_id, e)).into());
|
||||||
|
}
|
||||||
|
|
||||||
|
for id in row_ids.iter() {
|
||||||
|
if let Err(e) = Uuid::parse_str(id) {
|
||||||
|
return Err(AppError::InvalidRequest(format!("invalid row id `{}`: {}", id, e)).into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
state
|
state
|
||||||
.workspace_access_control
|
.workspace_access_control
|
||||||
.enforce_action(&uid, &workspace_id, Action::Read)
|
.enforce_action(&uid, &workspace_id, Action::Read)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue