This commit is contained in:
Nikita Kalyanov
2023-11-16 18:52:55 +01:00
parent c83722f348
commit c61fca9a5f
2 changed files with 13 additions and 3 deletions

View File

@@ -1041,7 +1041,10 @@ LIMIT 100",
}
pub async fn ensure_row_level_sec(&self, params: RowLevelParams) -> Result<bool> {
let conn_str = self.connstr.as_str().replace("/postgres", &format!("/{}", params.database_name));
let conn_str = self
.connstr
.as_str()
.replace("/postgres", &format!("/{}", params.database_name));
let connect_result = tokio_postgres::connect(&conn_str, NoTls).await;
let (client, connection) = connect_result.unwrap();
tokio::spawn(async move {
@@ -1057,7 +1060,13 @@ CREATE USER $2 WITH PASSWORD $3 IN GROUP $4;
CREATE POLICY neon_row_level ON $1 TO $4
USING ($5 = current_user);
COMMIT;",
&[&params.table_name, &params.user_name, &params.password,&params.role, &params.column_name],
&[
&params.table_name,
&params.user_name,
&params.password,
&params.role,
&params.column_name,
],
)
.await;
Ok(result.is_ok())

View File

@@ -210,7 +210,8 @@ async fn routes(req: Request<Body>, compute: &Arc<ComputeNode>) -> Response<Body
return err_resp;
}
let body_bytes: Vec<u8> = hyper::body::to_bytes(req.into_body()).await.unwrap().into();
let params: RowLevelParams = serde_json::from_str(&String::from_utf8(body_bytes).unwrap()).unwrap();
let params: RowLevelParams =
serde_json::from_str(&String::from_utf8(body_bytes).unwrap()).unwrap();
let res = compute.ensure_row_level_sec(params).await;
if !res.is_ok() {