Skip to content

Commit

Permalink
Passing the auth_ctx
Browse files Browse the repository at this point in the history
  • Loading branch information
mamcx committed Oct 17, 2024
1 parent 8348b4b commit ab45658
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 18 deletions.
1 change: 0 additions & 1 deletion crates/bindings-macro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ use proc_macro::TokenStream as StdTokenStream;
use proc_macro2::{Span, TokenStream};
use quote::{format_ident, quote, quote_spanned, ToTokens};
use std::borrow::Cow;
use std::collections::HashMap;
use std::hash::{DefaultHasher, Hash, Hasher};
use std::time::Duration;
use syn::ext::IdentExt;
Expand Down
10 changes: 6 additions & 4 deletions crates/core/src/db/update.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ use crate::execution_context::ExecutionContext;
use crate::sql::parser::RowLevelExpr;
use spacetimedb_data_structures::map::HashMap;
use spacetimedb_lib::db::auth::StTableType;
use spacetimedb_lib::db::raw_def::v9::RawRowLevelSecurityDefV9;
use spacetimedb_lib::identity::AuthCtx;
use spacetimedb_lib::AlgebraicValue;
use spacetimedb_primitives::ColSet;
use spacetimedb_schema::auto_migrate::{AutoMigratePlan, ManualMigratePlan, MigratePlan};
use spacetimedb_schema::def::{ModuleDefLookup, TableDef};
use spacetimedb_schema::def::TableDef;
use spacetimedb_schema::schema::{IndexSchema, Schema, SequenceSchema, TableSchema};
use std::sync::Arc;

Expand All @@ -26,6 +26,7 @@ use std::sync::Arc;
pub fn update_database(
stdb: &RelationalDB,
tx: &mut MutTxId,
auth_ctx: AuthCtx,
plan: MigratePlan,
system_logger: &SystemLogger,
) -> anyhow::Result<()> {
Expand All @@ -46,7 +47,7 @@ pub fn update_database(

match plan {
MigratePlan::Manual(plan) => manual_migrate_database(stdb, tx, plan, system_logger, existing_tables),
MigratePlan::Auto(plan) => auto_migrate_database(stdb, tx, plan, system_logger, existing_tables),
MigratePlan::Auto(plan) => auto_migrate_database(stdb, tx, auth_ctx, plan, system_logger, existing_tables),
}
}

Expand All @@ -65,6 +66,7 @@ fn manual_migrate_database(
fn auto_migrate_database(
stdb: &RelationalDB,
tx: &mut MutTxId,
auth_ctx: AuthCtx,
plan: AutoMigratePlan,
system_logger: &SystemLogger,
existing_tables: Vec<Arc<TableSchema>>,
Expand Down Expand Up @@ -228,7 +230,7 @@ fn auto_migrate_database(
system_logger.info(&format!("Adding row-level security `{sql_rls}`"));
log::info!("Adding row-level security `{sql_rls}`");
let rls = plan.new.lookup_expect(sql_rls);
let rls = RowLevelExpr::build_row_level_expr(stdb, tx, rls)?;
let rls = RowLevelExpr::build_row_level_expr(stdb, tx, &auth_ctx, rls)?;

stdb.create_row_level_security(tx, rls.def)?;
}
Expand Down
12 changes: 7 additions & 5 deletions crates/core/src/host/wasm_common/module_host_actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ use spacetimedb_schema::schema::{Schema, TableSchema};
use std::sync::Arc;
use std::time::Duration;

use spacetimedb_lib::buffer::DecodeError;
use spacetimedb_lib::{bsatn, Address, RawModuleDef};

use super::instrumentation::CallTimes;
use crate::database_logger::SystemLogger;
use crate::db::datastore::locking_tx_datastore::MutTxId;
Expand All @@ -33,6 +30,9 @@ use crate::subscription::module_subscription_actor::WriteConflict;
use crate::util::const_unwrap;
use crate::util::prometheus_handle::HistogramExt;
use crate::worker_metrics::WORKER_METRICS;
use spacetimedb_lib::buffer::DecodeError;
use spacetimedb_lib::identity::AuthCtx;
use spacetimedb_lib::{bsatn, Address, RawModuleDef};

use super::*;

Expand Down Expand Up @@ -264,6 +264,7 @@ impl<T: WasmInstance> ModuleInstance for WasmModuleInstance<T> {
let timestamp = Timestamp::now();
let stdb = &*self.replica_context().relational_db;
let ctx = ExecutionContext::internal(stdb.address());
let auth_ctx = AuthCtx::for_current(self.replica_context().database.owner_identity);
let tx = stdb.begin_mut_tx(IsolationLevel::Serializable);
let (tx, ()) = stdb
.with_auto_rollback(&ctx, tx, |tx| {
Expand All @@ -282,7 +283,7 @@ impl<T: WasmInstance> ModuleInstance for WasmModuleInstance<T> {
self.system_logger()
.info(&format!("Creating row level security `{}`", rls.sql));

let rls = RowLevelExpr::build_row_level_expr(stdb, tx, rls)
let rls = RowLevelExpr::build_row_level_expr(stdb, tx, &auth_ctx, rls)
.with_context(|| format!("failed to create row-level security: `{}`", rls.sql))?;
let table_id = rls.def.table_id;
let sql = rls.def.sql.clone();
Expand Down Expand Up @@ -349,7 +350,8 @@ impl<T: WasmInstance> ModuleInstance for WasmModuleInstance<T> {
let (mut tx, _) = stdb.with_auto_rollback(&ctx, tx, |tx| stdb.update_program(tx, HostType::Wasm, program))?;
self.system_logger().info(&format!("Updated program to {program_hash}"));

let res = crate::db::update::update_database(stdb, &mut tx, plan, self.system_logger());
let auth_ctx = AuthCtx::for_current(self.replica_context().database.owner_identity);
let res = crate::db::update::update_database(stdb, &mut tx, auth_ctx, plan, self.system_logger());

match res {
Err(e) => {
Expand Down
7 changes: 2 additions & 5 deletions crates/core/src/sql/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,11 @@ impl RowLevelExpr {
pub fn build_row_level_expr(
stdb: &RelationalDB,
tx: &mut MutTxId,
auth_ctx: &AuthCtx,
rls: &RawRowLevelSecurityDefV9,
) -> Result<Self, TypingError> {
let mut ctx = TyCtx::default();
let sql = parse_and_type_sub(
&mut ctx,
&rls.sql,
&SchemaViewer::new(stdb, tx, &AuthCtx::for_testing()),
)?;
let sql = parse_and_type_sub(&mut ctx, &rls.sql, &SchemaViewer::new(stdb, tx, auth_ctx))?;

Ok(Self {
def: RowLevelSecuritySchema {
Expand Down
2 changes: 1 addition & 1 deletion crates/expr/src/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,5 +168,5 @@ pub enum TypingError {
#[error(transparent)]
DuplicateName(#[from] DuplicateName),
#[error(transparent)]
NoTableId(#[from] NoTableId),
FilterReturnType(#[from] FilterReturnType),
}
4 changes: 2 additions & 2 deletions crates/expr/src/expr.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::sync::Arc;

use crate::errors::{NoTableId, TypingError};
use crate::errors::{FilterReturnType, TypingError};
use crate::static_assert_size;
use spacetimedb_lib::AlgebraicValue;
use spacetimedb_primitives::TableId;
Expand Down Expand Up @@ -59,7 +59,7 @@ impl RelExpr {
pub fn table_id(&self, ctx: &mut TyCtx) -> Result<TableId, TypingError> {
match &*self.ty(ctx)? {
Type::Var(id, _) => Ok(*id),
_ => Err(NoTableId.into()),
_ => Err(FilterReturnType.into()),
}
}
}
Expand Down

0 comments on commit ab45658

Please sign in to comment.